{"version":3,"file":"static/js/main.76b69c2b.js","mappings":";qHA4Ce,SAASA,EAAIC,EAAMC,GAEhC,IADAC,EAAAA,EAAAA,GAAa,EAAGC,YACXF,GAAkC,YAAtBG,EAAAA,EAAAA,GAAQH,GAAwB,OAAO,IAAII,KAAKC,KACjE,IAAIC,EAAQN,EAASM,OAAQC,EAAAA,EAAAA,GAAUP,EAASM,OAAS,EACrDE,EAASR,EAASQ,QAASD,EAAAA,EAAAA,GAAUP,EAASQ,QAAU,EACxDC,EAAQT,EAASS,OAAQF,EAAAA,EAAAA,GAAUP,EAASS,OAAS,EACrDC,EAAOV,EAASU,MAAOH,EAAAA,EAAAA,GAAUP,EAASU,MAAQ,EAClDC,EAAQX,EAASW,OAAQJ,EAAAA,EAAAA,GAAUP,EAASW,OAAS,EACrDC,EAAUZ,EAASY,SAAUL,EAAAA,EAAAA,GAAUP,EAASY,SAAW,EAC3DC,EAAUb,EAASa,SAAUN,EAAAA,EAAAA,GAAUP,EAASa,SAAW,EAG3DC,ECnCS,SAAmBC,EAAWC,IAC3Cf,EAAAA,EAAAA,GAAa,EAAGC,WAChB,IAAIe,GAASV,EAAAA,EAAAA,GAAUS,GACvB,OAAOE,EAAAA,EAAAA,GAAUH,GAAYE,EAC/B,CD+B0BE,CAAUpB,EAAMS,EAAiB,GAARF,GAG7Cc,GAAkBC,EAAAA,EAAAA,GAAQP,EAAmBJ,EAAe,EAARD,GAKpDa,EAAyB,KADVT,EAAyB,IADzBD,EAAkB,GAARD,IAI7B,OADgB,IAAIP,KAAKgB,EAAgBG,UAAYD,EAEvD,CEjEO,MAAME,EAAQ,CACnB,+BACA,4BACA,2BACA,2BACA,6BACA,iCACA,+BACA,0BACA,4BACA,+BACA,6BACA,0BACA,4BACA,2BACA,uBACA,4BACA,oBACA,yBACA,0BACA,sBACA,wBACA,+BACA,kCACA,2BACA,8BACA,4BACA,oBACA,mBACA,0BACA,yBACA,sBACA,oBACA,sBACA,+BACA,iCACA,4BACA,yBACA,qBACA,4BACA,qBCxCWC,EAAc,CACzB,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,iBCxCWC,EAAU,EACrB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GCxCWC,EAAO,CAClB,uDACA,uCACA,sBACA,iCACA,+BACA,iDACA,8BACA,8BACA,kBACA,cACA,iBACA,iBACA,cACA,oBACA,oBACA,sBACA,oBACA,sBACA,uBACA,oBACA,cACA,cACA,kBACA,iBACA,cACA,kBACA,uBACA,aACA,aACA,iBACA,kBACA,sBACA,cACA,SACA,sBACA,iBACA,kBACA,iBACA,cACA,uBCxCWC,EAAU,CACrB,qBACA,+BACA,sBACA,6BACA,aACA,mBACA,mCACA,eACA,6BACA,mBACA,iCACA,iBACA,0BACA,iBACA,4BACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,oBACA,oBACA,eACA,mBACA,aACA,0BACA,cACA,0BACA,8BACA,6BACA,iBACA,WACA,yBACA,mBACA,iBACA,kBACA,0BACA,kBACA,oBCxCWC,EAAc,CACzB,qDACA,sDACA,2DACA,sDACA,mDACA,8DACA,4DACA,6DACA,qDACA,2DACA,oDACA,mDACA,uDACA,kDACA,4DACA,wDACA,uDACA,oDACA,oDACA,oDACA,oDACA,uDACA,kDACA,sDACA,mDACA,sDACA,wDACA,oDACA,0DACA,qDACA,mDACA,wDACA,mDACA,sDACA,2DACA,sDACA,wDACA,uDACA,qDACA,+CAGWC,EAAU,CACrB,qBACA,sBACA,gBACA,gCACA,UACA,UACA,eACA,UACA,QACA,OACA,UACA,QACA,WACA,0BACA,UACA,QACA,SACA,WACA,QACA,mCACA,YACA,WACA,UACA,SACA,SACA,WACA,UACA,yBACA,UACA,QACA,kBACA,2BACA,YACA,SACA,SACA,cACA,SACA,SACA,QACA,WCnFWC,EAAW,CACtB,oCACA,oBACA,wBACA,iCACA,wBACA,0BACA,uCACA,yCACA,YACA,gBACA,eACA,iBACA,iBACA,eACA,gBACA,iBACA,kBACA,eACA,cACA,cACA,eACA,iBACA,qBACA,gBACA,cACA,gBACA,cACA,kBACA,oBACA,gBACA,iBACA,cACA,cACA,eACA,iBACA,kBACA,cACA,YACA,oBACA,kBAGWC,EAAY,CACvB,SACA,QACA,OACA,UACA,OACA,QACA,OACA,QACA,OACA,YACA,WACA,WACA,MACA,SACA,QACA,QACA,WACA,QACA,QACA,QACA,OACA,OACA,MACA,UACA,QACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,YACA,SACA,UACA,SACA,UACA,QACA,YAGWC,EAAW,CACtB,UACA,UACA,OACA,OACA,WACA,YACA,SACA,SACA,QACA,QACA,OACA,WACA,UACA,UACA,QACA,QACA,UACA,SACA,SACA,UACA,YACA,YACA,cACA,WACA,OACA,SACA,SACA,UACA,SACA,SACA,QACA,cACA,YACA,WACA,SACA,UACA,QACA,UACA,YACA,0BC9HK,MAAMC,EAAQ,CACnB,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACzF,MAAO,MAAO,MAAO,KAAM,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MACxF,KAAM,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,MAAO,KAAM,OAG7DC,EAAS,CACpB,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAC5F,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,KAG/DC,EAAM,CACjB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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GAC7B0L,QAAS,iDAGqB,IAAInJ,MAAM,KAAKV,KAAI,CAACW,EAAGxC,KAAK,IACvDmO,EAAKnO,GACRkL,QAASA,EAAQ,UACjBM,SAAU1J,EAAAA,EAAMf,MAAMO,OAAOtB,GAC7B0L,QAAS,iDClGG,CACZ,kBACA,mBACA,iBACA,gBACA,aACA,cACA,aACA,oBAGI9B,EAAW,CACf,WACA,UACA,UACA,YACA,MACA,MACA,UACA,eA8BWyE,EAAe,IAAI9L,MAAM,IAAIV,KAAI,CAACW,EAAGxC,KAAK,CACrDD,GAAI+B,EAAAA,EAAM/B,GAAGC,GACbK,MAAOqN,EAAM1N,GACbO,YAAa,8EACboC,SAAUiH,EAAS5J,GACnBwL,SAAU,sCAAsCxL,EAAQ,QACxD0L,QAAS,mDACT3H,UAAWjC,EAAAA,EAAM7B,KAAKD,GACtBsO,QAAS,uBACTpD,QApCc,mgCAqCdqD,YACE,yHACFC,QACE,yHACFC,YAAa,CACX,2CACA,2CACA,2CACA,2CACA,2CACA,2CACA,2CACA,gLCzEG,MAAMpO,EAAQ,CACnB,mDACA,6DACA,uDACA,sDACA,yEACA,mDACA,iDACA,sDACA,4DACA,4CACA,mEACA,8CACA,oDACA,yEACA,gCACA,oDACA,kDACA,yDACA,yDACA,iCACA,0BACA,0CACA,yBACA,qCACA,qBACA,mDACA,8BACA,4BACA,yBACA,uDACA,iCACA,6BACA,qBACA,6DACA,iCACA,0CACA,6BACA,iCACA,2BACA,wCAGWC,EAAW,CACtB,qDACA,uCACA,0DACA,oCACA,yCACA,sCACA,uEACA,kDACA,iEACA,gCACA,sEACA,8FACA,iFACA,wFACA,+BACA,qCACA,sEACA,0CACA,gCACA,sDACA,cACA,sBACA,8DACA,mEACA,8DACA,8DACA,2BACA,yCACA,sEACA,uDACA,oCACA,gEACA,gEACA,mEACA,8CACA,0CACA,+CACA,iCACA,8CACA,kDAGWC,EAAc,CACzB,6NACA,8PACA,0NACA,qSACA,yIACA,8KACA,6HACA,mFACA,iLACA,oNACA,uLACA,uQACA,yKACA,8HACA,8IACA,uKACA,yOACA,sHACA,6OACA,8NACA,2HACA,oGACA,sPACA,8NACA,8LACA,uTACA,yPACA,0KACA,8HACA,2HACA,4OACA,mPACA,4KACA,2LACA,mLACA,uRACA,kKACA,kLACA,2JACA,2QAOW4K,EAAgB,ggDAyBhBtK,EAAa,CACxB,SACA,UACA,WACA,SACA,SACA,SACA,YACA,UACA,QACA,UACA,cACA,SAKWH,EAAW,CACtB,wBACA,oBACA,eACA,cACA,qBACA,oBACA,yBACA,6BACA,iCACA,sBACA,gCACA,yBACA,8BACA,mCACA,2BACA,mCAKWC,EAAgB,CAC3B,SACA,YACA,aACA,aACA,cACA,cACA,kBACA,kBACA,oBACA,oBACA,qBACA,0BACA,4BACA,+BACA,sCACA,yCAKWC,EAAW,CACtB,6BACA,6CACA,6CACA,uBACA,wBACA,sDACA,0DACA,+CACA,gCACA,mCACA,+BACA,yBACA,qBACA,0DACA,6BACA,8DAKWH,EAAc,CACzB,4BACA,+BACA,iCACA,+DACA,qCACA,+DACA,4DACA,kEACA,0DACA,0DACA,+DACA,0CACA,sDACA,qDACA,+DACA,gEAKWD,EAAY,CACvB,mDACA,6DACA,uDACA,sDACA,yEACA,mDACA,iDACA,sDACA,4DACA,4CACA,mEACA,8CACA,oDACA,yEACA,gCACA,oDACA,kDACA,yDACA,yDACA,iCACA,0BACA,0CACA,yBACA,qCACA,qBACA,mDACA,8BACA,4BACA,yBACA,uDACA,iCACA,6BACA,qBACA,6DACA,iCACA,0CACA,6BACA,iCACA,2BACA,sECvSK,SAASyB,EAAkByM,EAAKC,GACrC,OAAOC,KAAKC,MAAMD,KAAKE,UAAYH,EAAMD,EAAM,IAAMA,CACvD,CAEO,SAAS9L,EAAcmM,GAC5B,OAAOA,EAAMH,KAAKC,MAAMD,KAAKE,SAAWC,EAAMC,QAChD,2ICNA,SAASC,IACP,MAEMC,GAFQC,EAAAA,EAAAA,KAEaC,QAAQC,QAAQC,KAE3C,OACEC,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAC,SAAA,EACEC,EAAAA,EAAAA,KAAA,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C,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,OAAE,IAAIC,OAAE,IAAIC,OAAE,IAAIC,OAAE,IAAIC,OAAE,IAAIC,OAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,KAAKC,SAAE,KAAKC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,KAAKC,SAAE,KAAKC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,KAAKC,SAAE,KAAKC,SAAE,IAAIC,SAAE,IAAIC,OAAE,KAAKC,OAAE,KAAKC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,SAAE,IAAIC,UAAG,IAAIC,UAAG,IAAIC,SAAE,SAAIC,SAAE,SAAIC,SAAE,SAAIC,SAAE,SAAIC,UAAG,IAAIC,UAAG,IAAIC,UAAG,IAAIC,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SAAUznG,GAEf,OADa+S,OAAO00F,KAAKo9V,cAAc7kc,GACzBmG,KAChB,EAEFkqJ,SAAU,KAGZ+O,EAAQsjR,UAAY8hB,EACpBplS,EAAQmlS,UAAYA,EACpBnlS,EAAQz8I,QAAUiib,CAEX,WAES5nM,EAAQ59F,GAExB49F,EAAO59F,QAAU,4LAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,6LAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,6LAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,6LAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,86EAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,oTAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,+QAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,oUAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,kPAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,iVAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,gVAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,mOAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,iOAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,wWAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,2YAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,w3CAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,8jBAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,8nBAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,8LAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,wOAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,uQAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,6PAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU,6ZAEV,WAES49F,EAAQ59F,GAExB49F,EAAO59F,QAAU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AK0lY,aAGX,aCWAnwO,EAAO59F,QAjFP,SAAmB33D,GACjB,MAAMllE,EAAQklE,EAAKllE,MAEbi3c,EAAa,CACjB,MACA,OACA,OACA,MACA,SACA,UACA,UACA,QACA,SAEF,MAAO,CACLz5e,KAAM,oBACN0oD,SAAU,CAER,CACE3oC,UAAW,SACXk0C,MAAO,mDACP04a,UAAW,GAGb,CACE5sd,UAAW,SACXk0C,MAAO,UACP04a,UAAW,GAGb,CACE5sd,UAAW,SACXk0C,MAAOzxB,EAAM1C,OAAO,IAAK0C,EAAMspc,UAAU2N,IACzCvlb,IAAK,IACLsvB,SAAUi2Z,EACV5M,QAAS,KACTF,UAAW,EACXjkb,SAAU,CACR,CACEuL,MAAO,kBACP04a,UAAW,KAKjB,CACE5sd,UAAW,SAIXk0C,MAAO,oBACP44a,QAAS,KACTF,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL24a,QAAS,KACTF,UAAW,GAGb,CACE5sd,UAAW,SACXk0C,MAAO,sBACPC,IAAK,IACL24a,QAAS,KACTF,UAAW,GAGb,CACE5sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACL24a,QAAS,KACTF,UAAW,IAInB,aC+DA1vO,EAAO59F,QAhJP,SAAsB33D,GACpB,MAAMllE,EAAQklE,EAAKllE,MACb6pc,EAAW,2BACXqN,EAAcl3c,EAAM1C,OACxBusc,EACA7pc,EAAM1C,OAAO,OAAQusc,EAAU,OAI3BsN,EAAoB,CACxB55d,UAAW,WACXk0C,MAAO,SACPC,IAAKm4a,EACLM,UAAW,IA8Db,MAAO,CACL3se,KAAM,eACNs/B,QAAS,CAAE,MACXkkD,SAAU,CACRksZ,QA/Da,CACf,KACA,QACA,OACA,QACA,QACA,QACA,WACA,UACA,SACA,KACA,UACA,OACA,OACA,UACA,QACA,UACA,MACA,WACA,MACA,KACA,aACA,SACA,KACA,UACA,aACA,YACA,WACA,KACA,YACA,SACA,MACA,WACA,UACA,UACA,YACA,SACA,SACA,MACA,SACA,QACA,SACA,OACA,QACA,MACA,SACA,MACA,MACA,OACA,QACA,QAcEjxL,QAZa,CACf,OACA,QACA,OACA,cAUA/1P,SAAU,CACRg/C,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAK2lY,cACL,CACElvc,MAAO,CACL,YACA,MACAu7c,GAEF35d,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CACEoe,MAAO,CACL,2CACA,MACAkuc,GAEFtsd,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CACEA,UAAW,OACXyud,cAAe,iBACft6a,IAAK,IACLsvB,SAAU,CAAEksZ,QAAS,mBAEvB,CACElB,cAAe,WACft6a,IAAK,OACL08a,YAAY,EACZ/D,QAAS,KACTnkb,SAAU,CACRg/C,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEztd,UAAW,mBAC3C,CACEA,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACLxL,SAAU,CACRg/C,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAKulY,oBACLvlY,EAAKwlY,qBACLyM,IAGJ,CAAE1lb,MAAOzxB,EAAM1C,OAAO,OAhII,qCAmI9B4nE,EAAKgmY,cAEPb,QAAS,IAEb,aCkHA5vO,EAAO59F,QApPP,SAAa33D,GAKX,MAAMkyY,EAAa,cACbC,EAAc,YAAcD,EAO5BrN,EAAY,QAFOqN,sBAAqFC,EAAc,MAE9E,KANnBD,EAAa,OAASA,EAAtBA,MAAgDC,EAAc,MAMhB,IAGnEC,EAAW,4BAGXC,EAAY,gBAGZZ,EAAWzxY,EAAKr0C,QAAQ,KAAM,KAK9B2mb,EAAY,CAIhB/lb,MAAO,YACPC,IAAK,sBAGL24a,QAASkN,EACTrxb,SAAU,CACR,CAGE8lb,cAAe,0BACfS,YAAY,GAEd,CAEElvd,UAAW,UACXyud,cAAe,wEAEjB,CACEzud,UAAW,OACXk0C,MAAO6lb,EACP7K,YAAY,EACZtC,UAAW,KA+EjB,MAAO,CACL3se,KAAM,MACNixe,kBAAkB,EAClBztZ,SAAU,CACRksZ,QA9Ea,CACf,QACA,OACA,MACA,SACA,MACA,QACA,MACA,UACA,WACA,MACA,SACA,QACA,SACA,SACA,YACA,KACA,WACA,UACA,OACA,KACA,OACA,MACA,SACA,UACA,MACA,MACA,MACA,eACA,QACA,WACA,aACA,KACA,SACA,UACA,UACA,OACA,QACA,OACA,SACA,YACA,OACA,UACA,OACA,KACA,YACA,OACA,OACA,KACA,YACA,WACA,YACA,KACA,QACA,MACA,UACA,QACA,QACA,UACA,SACA,OACA,QACA,OACA,MACA,QACA,SACA,UACA,OACA,KACA,MACA,UACA,OAQEjxL,QAAS,CACP,OACA,UAGJ/1P,SAAU,CACRywb,EAEA,CACEp5d,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,KACP04a,UAAW,KAKjB,CAEE5sd,UAAW,SACXk0C,MAAO,OAET,CAEEl0C,UAAW,SACXk0C,MAAOs4a,EACPI,UAAW,GAEb,CAEE5sd,UAAW,SACXk0C,MAAO,IAAM6lb,GAEf,CAEE/5d,UAAW,QACXk0C,MAAO,8DACPC,IAAK,SACLsvB,SAAU,eACVupZ,cAAc,EACd6D,YAAY,EACZ/D,QAASkN,GAEX,CAGE9lb,MAAO,yDACPC,IAAK,sCACLsvB,SAAU,uDAGVktZ,aAAa,EACbhob,SACQ,CACEywb,EACA,CAEEp5d,UAAW,QACXk0C,MAAO,4CACPC,IAAK,eACL64a,cAAc,EACd6D,YAAY,EACZ/D,QAASkN,GAIXC,EACA,CAEEj6d,UAAW,OACXk0C,MAAO,gBACPC,IAAK,aACLsvB,SAAU,SACVupZ,cAAc,EACd6D,YAAY,EAEZ3B,YAAY,EACZpC,QAASkN,KAKvB,CAGEh6d,UAAW,OACXk0C,MAAO,oBACPC,IAAK,OACLsvB,SAAU,OACVupZ,cAAc,EACdF,QAASkN,GAIXC,GASN,aCrFA/8O,EAAO59F,QAzKP,SAAqB33D,GACnB,MAAMuyY,EAAkB,CACtBl6d,UAAW,WACXk0C,MAAO,2HAGHimb,EAAmB,CACvBn6d,UAAW,SACXk0C,MAAO,kBAGHkmb,EAAc,CAClBp6d,UAAW,UACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRuxb,EACAC,IAwDJ,OApDAD,EAAgBvxb,SAAW,CAAEyxb,GAC7BD,EAAiBxxb,SAAW,CAAEyxb,GAmDvB,CACLn6e,KAAM,cACNs/B,QAAS,CAAE,OAEXkkD,SArDe,CACf,MACA,OACA,QACA,WACA,QACA,OACA,SACA,KACA,OACA,OACA,SACA,YACA,KACA,OACA,KACA,MACA,MACA,MACA,QACA,KACA,WACA,MACA,WACA,QACA,UACA,SACA,QACA,YACA,QACA,SACA,WACA,WACA,OACA,UACA,UACA,OACA,QACA,SACA,OACA,YACA,aACA,MACA,QACA,YACA,WACA,YAUAqpZ,QAAS,uDAETnkb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CAAEg/C,EAAKglY,kBACjBC,UAAW,GAIb,CACE5sd,UAAW,SACXk0C,MAAO,MACPC,IAAK,OAGP,CACEn0C,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CAAEg/C,EAAKglY,kBACjBC,UAAW,GAGbjlY,EAAKulY,oBACLvlY,EAAKwlY,qBAEL,CACEntd,UAAW,SACXk0C,MAAO,WACPC,IAAK,OAGP,CACEs6a,cAAe,sBACft6a,IAAK,KACL24a,QAAS,UACTnkb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,mBAKb,CACEu6a,cAAe,QACft6a,IAAK,KACL24a,QAAS,UACTnkb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,gBACPvL,SAAU,CACR,CACEuL,MAAO,WACPvL,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,uBASrBgmb,EACAC,EAEA,CACEn6d,UAAW,UACXk0C,MAAO,wBAGT,CACEl0C,UAAW,SACX4sd,UAAW,EACX14a,MAAO,uFAIf,aCvEAgpM,EAAO59F,QA7FP,SAAgB33D,GACd,MAQM0yY,EAAa,CACjBr6d,UAAW,SACXk0C,MAAO,iDAMT,MAAO,CACLj0D,KAAM,gBACNs/B,QAAS,CAAE,cACX2xc,kBAAkB,EAClBvob,SAAU,CACRg/C,EAAKylY,kBACL,CACEptd,UAAW,UACXk0C,MAAO,OACPC,IAAK,IACLxL,SAAU,CACR0xb,EAfY,CAClBr6d,UAAW,SACXk0C,MAAO,YAiBDyzC,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAEH,UAAW,MAGtD,CACE5sd,UAAW,YACXk0C,MAAO,MACP04a,UAAW,EAGXnpZ,SAAU,CAAEnhF,EAAG,CACb,QACA,OACA,QACA,SACA,cACA,gBACA,cACA,eACA,aACA,gBACA,aACA,UACA,SACA,SACA,aACA,eAEF0se,OAAQ,CACN76a,IAAK,IACLy4a,UAAW,EACXnpZ,SAAU,CAAEi7N,QAAS,yBACrB/1P,SAAU,CACR,CACE3O,MAAO,cACP5b,MAAO,QAET,CACEpe,UAAW,OACXk0C,MAAO,OACPC,IAAK,OAEP,CACEn0C,UAAW,WACXk0C,MAAO,UACPC,IAAK,KACLxL,SAAU,CACR,OA7EK,CACjB3oC,UAAW,SACXk0C,MAAO,aA+ECmmb,EA7EK,CACbr6d,UAAW,SACXk0C,MAAO,SA6ECyzC,EAAKolY,sBAKbD,QAAS,KAEb,YC8CA5vO,EAAO59F,QA3IP,SAAqB33D,GACnB,MAAMllE,EAAQklE,EAAKllE,MACb63c,EAAS3yY,EAAK6/C,QAClB7/C,EAAKolY,kBAAmB,CAAED,QAAS,OAC/ByN,EAAS,CACbv6d,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACLxL,SAAU,CACR,OACAg/C,EAAK2lY,cACLgN,IAGEE,EAAiB7yY,EAAKr0C,QAAQ,KAAM,KASpC8lb,EAAW,CACfoB,EATqB7yY,EAAKr0C,QAC1B,OACA,OACA,CAAE3K,SAAU,CACV,OACA6xb,KAMF7yY,EAAKylY,mBA6CP,MAAO,CACLnte,KAAM,cACNs/B,QAAS,CAAE,aACXkkD,SAAU,CACRksZ,QACE,0iBAUFjxL,QACE,mEACF26L,SACE,wUAQJ1wb,SAAU,CACR2xb,EACA3yY,EAAK2lY,cACL,CACEttd,UAAW,WACXk0C,MAAOzxB,EAAM1C,OACX,KACA0C,EAAMspc,OAzDZ,iBACA,gBACA,WACA,sBACA,eACA,UACA,0BACA,gBACA,eACA,kBACA,sBACA,gBACA,aACA,mBACA,cACA,cACA,0BACA,uBACA,2BACA,mBACA,oFACA,0BAqCM,OAGJ,CACE/rd,UAAW,WACXk0C,MAAO,gBAET,CACEl0C,UAAW,UACXk0C,MACE,gEAEJ,CACEl0C,UAAW,UACXk0C,MAAOzxB,EAAM1C,OACX,KACA0C,EAAMspc,OA3FZ,aACA,aACA,aACA,SACA,eACA,kEACA,kCACA,8BACA,eACA,uBACA,oBACA,oBACA,qBACA,eA+EM,OAGJ,CACE0C,cAAe,KACf3B,QAAS,WACTnkb,SAAU,CACRg/C,EAAK+lY,sBACL6M,OAGDnB,GAELtM,QAAS,kBAEb,aCyRA5vO,EAAO59F,QAnaP,SAAgB33D,GACd,MACM2kY,EAAW,yBACXmO,EAAW,CACf9K,QAAS,CACP,QACA,OACA,QACA,WACA,WACA,KACA,OACA,SACA,MACA,WACA,KACA,SACA,KACA,MACA,KACA,SACA,SACA,MACA,MACA,OACA,SAEFjxL,QAAS,CACP,YACA,cACA,eACA,WACA,MACA,UACA,KACA,cACA,MACA,iBACA,QACA,OACA,OACA,aAEF26L,SAAU,CACR,MACA,OACA,MACA,QACA,MACA,OACA,eACA,QACA,OACA,OACA,QACA,cACA,UACA,OACA,UACA,UACA,SACA,iBACA,OACA,WACA,iBACA,OACA,cACA,UACA,YACA,WACA,mBACA,aACA,MACA,QACA,UACA,MACA,SACA,UACA,WACA,WACA,MACA,SACA,eACA,UACA,kBACA,aACA,aACA,WACA,WACA,mBACA,uBACA,WACA,SACA,aACA,aACA,qBACA,SACA,QACA,MACA,UACA,SACA,UACA,kBACA,aACA,0BACA,iBACA,mBACA,yBACA,gCACA,+BACA,SACA,sBACA,OACA,UACA,QACA,eACA,gBACA,WACA,QACA,aACA,aACA,WACA,iBACA,gBACA,oBACA,UACA,UACA,OACA,SACA,WACA,OACA,OACA,MACA,WACA,UACA,aACA,UACA,WACA,UACA,SACA,eACA,aACA,UACA,QACA,qBACA,WACA,6BACA,SACA,SACA,WACA,iBACA,MACA,QACA,MACA,MACA,OACA,sBACA,MACA,cACA,MACA,SACA,QACA,wBACA,aACA,oBACA,gBACA,oBACA,OACA,MACA,SACA,SACA,UACA,WACA,QACA,oBACA,UACA,WACA,MACA,SACA,MACA,SACA,OACA,aACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,kBACA,SACA,QACA,SACA,SACA,cACA,WACA,MACA,QACA,OACA,SACA,QACA,OACA,sBACA,kBACA,QACA,cACA,cACA,WACA,MACA,sBACA,MACA,OACA,OACA,WACA,iBACA,YACA,aACA,cACA,QACA,UACA,QACA,QACA,QACA,UACA,sBACA,0BACA,2BACA,uBACA,oBACA,mBACA,kBACA,sBACA,gBACA,mBACA,sBACA,aACA,eACA,mBACA,iBACA,cACA,OACA,SACA,QACA,QACA,YACA,WACA,OACA,UACA,SACA,SACA,WAsCEqB,EAAS,CACb16d,UAAW,SACXk0C,MAAO,MAlSKyzC,EAAKllE,MAkSIspc,OApCrB,qBACA,WACA,SACA,YACA,YACA,cACA,UACA,aACA,cACA,eACA,wBACA,QACA,OACA,QACA,iBACA,MACA,UACA,UACA,kBACA,SACA,YACA,WACA,kBACA,gBACA,cACA,SACA,kBACA,gBACA,cACA,YACA,QACA,YACA,SAMI4O,EAAS,CACb36d,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,mBACT,CAAEA,MAAO,oBACT,CAAEA,MAAOyzC,EAAK8kY,cAEhBG,UAAW,GAEPgO,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,SACPC,IAAK,MACLsvB,SAAUg3Z,EACV9xb,SAAU,IAENkyb,EAAkB,CACtB76d,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACLiO,IAGJA,EAAMjyb,SAAW,CACfg/C,EAAKklY,iBACLllY,EAAKolY,kBACL8N,EACAF,EACAhzY,EAAK6lY,aAEP,MAAMsN,EAAkBF,EAAMjyb,SAAS5oB,OAAO,CAC5C4nE,EAAKwlY,qBACLxlY,EAAKulY,sBAGP,MAAO,CACLjte,KAAM,gBACNixe,kBAAkB,EAClBztZ,SAAUg3Z,EACV9xb,SAAU,CACRg/C,EAAKklY,iBACLllY,EAAKolY,kBACL8N,EACAlzY,EAAKulY,oBACLvlY,EAAKwlY,qBACLuN,EACAC,EACA,CACEzmb,MAAO,UACP04a,UAAW,EACXjkb,SAAU,CACR,CACEuL,MAAOo4a,EAAW,QAClBqE,aAAa,EACb/D,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAOo4a,EACPM,UAAW,OAMrB,CACE14a,MAAO,IAAMyzC,EAAKwmY,eAAiB,uBACnC1qZ,SAAU,SACV96B,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAK6lY,YACL,CACExtd,UAAW,WACXk0C,MAAO,cAAgBo4a,EAAW,UAClCqE,aAAa,EACbx8a,IAAK,SACLxL,SAAU,CACR,CACE3oC,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAOo4a,GACT,CAAEp4a,MAAO,WACT,CACEA,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZptZ,SAAUg3Z,EACV9xb,SAAUmyb,QAOtBlO,UAAW,GAEb,CACE6B,cAAe,WACft6a,IAAK,KACL08a,YAAY,EACZlob,SAAU,CACRg/C,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAC5Bztd,UAAW,iBACXk0C,MAAOo4a,IAET,CACEtsd,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZlob,SAAUmyb,IAGdhO,QAAS,QAEX,CAAE54a,MAAO,WAEX44a,QAAS,SAEb,aCskBA5vO,EAAO59F,QAzYP,SAAiB33D,GACf,MAAMozY,EAAa,CACjB11e,KAAM,CACJ,UACA,OACA,OACA,UAEFg0e,SAAU,CACR,qBACA,kBACA,iBACA,iBACA,iBACA,gBACA,eACA,eACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MAEF2B,OAAQ,CACN,QACA,OACA,gCACA,wBACA,wBACA,uBACA,uBACA,sBACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEFt8L,QAAS,CACP,kBACA,iBACA,iBACA,iBACA,gBACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,WACA,WACA,UACA,SACA,QACA,OACA,QAIEu8L,EA/8BR,SAAmBtzY,GACjB,MAAMllE,EAAQklE,EAAKllE,MAIbyqc,EAAsBvlY,EAAKr0C,QAAQ,KAAM,IAAK,CAAE3K,SAAU,CAAE,CAAEuL,MAAO,WACrEgnb,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,cACrBF,EAAmB,IACnBz4c,EAAMojc,SAASsV,GACf,gBAAkB14c,EAAMojc,SAJC,YAK3B,IAEIwV,EAAsB,CAC1Br7d,UAAW,OACXk0C,MAAO,sBAMHglb,EAAU,CACdl5d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,cACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,sEACPC,IAAK,IACL24a,QAAS,KAEXnlY,EAAKkmY,kBAAkB,CACrB35a,MAAO,mCACPC,IAAK,0BAKL8kb,EAAU,CACdj5d,UAAW,SACXrE,SAAU,CAER,CAAEu4C,MACA,gVAoBF,CAAEA,MACA,gKAgBJ04a,UAAW,GAGP0O,EAAe,CACnBt7d,UAAW,OACXk0C,MAAO,eACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QACR,0FAEJhnb,SAAU,CACR,CACEuL,MAAO,OACP04a,UAAW,GAEbjlY,EAAK6/C,QAAQ0xV,EAAS,CAAEl5d,UAAW,WACnC,CACEA,UAAW,SACXk0C,MAAO,SAETg5a,EACAvlY,EAAKwlY,uBAIHM,EAAa,CACjBztd,UAAW,QACXk0C,MAAOzxB,EAAMojc,SAASsV,GAAgBxzY,EAAK2kY,SAC3CM,UAAW,GAGP2O,EAAiB94c,EAAMojc,SAASsV,GAAgBxzY,EAAK2kY,SAAW,UA+RhEkP,EAAe,CACnBn2e,KAlMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAmLAsqe,QA9RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAwMAjxL,QAde,CACf,OACA,QACA,UACA,UACA,QAUA26L,SANe,CAAE,WAOjBoC,YAnLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,WACA,WACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxB17d,UAAW,oBACX4sd,UAAW,EACXnpZ,SAAU,CAERk4Z,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAznb,MAAOzxB,EAAM1C,OACX,KACA,eACA,SACA,UACA,aACA,YACA4nE,EAAK2kY,SACL7pc,EAAMopc,UAAU,sBAGd+P,EAAsB,CAC1BF,EACAJ,EACAD,EACAnO,EACAvlY,EAAKwlY,qBACL8L,EACAC,GAGI2C,EAAqB,CAIzBlge,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,KACPC,IAAK,MAEP,CACEs6a,cAAe,wBACft6a,IAAK,MAGTsvB,SAAU+3Z,EACV7yb,SAAUizb,EAAoB77c,OAAO,CACnC,CACEm0B,MAAO,KACPC,IAAK,KACLsvB,SAAU+3Z,EACV7yb,SAAUizb,EAAoB77c,OAAO,CAAE,SACvC6sc,UAAW,KAGfA,UAAW,GAGPkP,EAAuB,CAC3B97d,UAAW,WACXk0C,MAAO,IAAMknb,EAAmB,eAAiBG,EACjD5K,aAAa,EACbx8a,IAAK,QACL08a,YAAY,EACZptZ,SAAU+3Z,EACV1O,QAAS,iBACTnkb,SAAU,CACR,CACEuL,MAAOgnb,EACPz3Z,SAAU+3Z,EACV5O,UAAW,GAEb,CACE14a,MAAOqnb,EACP5K,aAAa,EACbhob,SAAU,CAA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ACL64a,cAAc,EACd6D,YAAY,EACZjE,UAAW,IAGfA,UAAW,KAInB,aC5BA1vO,EAAO59F,QA5NP,SAAiB33D,GACf,MAAMllE,EAAQklE,EAAKllE,MACbg4c,EAAW,CACf,QACA,eACA,MACA,WACA,QACA,UACA,OACA,UACA,SACA,OACA,KACA,QACA,MACA,OACA,QACA,OACA,QACA,WACA,UACA,YACA,SACA,SACA,QACA,SACA,OACA,OACA,OACA,UACA,aACA,QACA,YACA,MACA,QACA,aACA,OACA,QACA,WACA,OACA,SACA,QACA,UACA,UACA,SACA,SACA,MACA,OACA,SACA,WACA,SACA,aACA,WACA,kBACA,UACA,aACA,QACA,iBACA,oBACA,uBACA,aACA,SACA,SACA,YACA,oBACA,UACA,gBACA,0BACA,mCACA,UACA,UACA,UACA,QACA,OACA,aACA,sBAEI0B,EAAY,CAChB,MACA,MACA,OACA,QAGF,MAAO,CACLl8e,KAAM,UACNwjF,SAAUg3Z,EACV3N,QAAS,QACTnkb,SAAU,CACRg/C,EAAKr0C,QACH,SACA,OACA,CACEs5a,UAAW,EACXjkb,SAAU,CACR,CAEEuL,MAAO,OACP04a,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,iBAKfyzC,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,kBACL,CACE/sd,UAAW,QACXyud,cAAe,SACft6a,IAAK,QACL08a,YAAY,EACZ/D,QAAS,YACTnkb,SAAU,CACR,CAAE8lb,cAAe,yFACjB9mY,EAAK+lY,sBACL,CACEx5a,MAAO,WACPC,IAAK,OACLsvB,SAAUg3Z,EAAS16c,OAAOo8c,GAC1BtL,YAAY,KAIlB,CACE7wd,UAAW,QACXyud,cAAe,kBACft6a,IAAK,QACL08a,YAAY,EACZjE,UAAW,EACXnpZ,SAAU,kBACVqpZ,QAAS,WACTnkb,SAAU,CACR,CAAE8lb,cAAe,sBACjB9mY,EAAK+lY,wBAGT,CAEEe,cAAe,kDACft6a,IAAK,MACL08a,YAAY,EACZ/D,QAAS,UACTnkb,SAAU,C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,IAAK,KAEP,CACED,MAAO,UACPC,IAAK,KAEPwzC,EAAKklY,iBACLllY,EAAKolY,oBASLplY,EAAK6lY,YACL7lY,EAAKylY,kBACLzlY,EAAK0lY,aAGX,YC0HAnwO,EAAO59F,QAlLP,SAAgB33D,GACd,MAAM2kY,EAAW3kY,EAAK4kY,oBAmIhBkO,EAAW,CACf9K,QAxGsB,CACtB,WACA,KACA,MACA,MACA,QACA,aACA,KACA,QACA,OACA,QACA,gBACA,QACA,SACA,SACA,SACA,QACA,WACA,QACA,eACA,WACA,cACA,OACA,UACA,MACA,KACA,OACA,OACA,eACA,SACA,UACA,QACA,UACA,YACA,YACA,aACA,cACA,eACA,gBACA,QACA,MACA,gBACA,kBACA,oBACA,mBACA,YACA,OACA,eACA,QACA,OACA,KACA,aACA,KACA,QACA,mBACA,YACA,WACA,KACA,OACA,OACA,QACA,QACA,MACA,YACA,MACA,OACA,UACA,YACA,iBACA,QACA,QACA,kBACA,QACA,UACA,YACA,SACA,WACA,iBACA,QACA,SACA,UACA,SACA,SACA,UACA,SACA,MACA,QACA,SACA,OACA,QACA,MACA,WACA,WACA,YACA,YACA,mBACA,QACA,iBACA,OACA,QACA,SAKA0J,SApIwB,CACxB,UACA,UACA,OACA,OACA,YACA,OACA,SACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,MACA,cACA,OAoHA36L,QAjHuB,CACvB,UACA,QACA,OACA,SAgHI49L,EAAmB,CACvB3ge,SAAU,CACR,CAAEyiB,MAAO,CACP,uBACAkuc,EACA,6BACAA,IAEF,CAAEluc,MAAO,CACP,WACAkuc,KAGJtyb,MAAO,CACL,EAAG,cACH,EAAG,yBAELypC,SAAUg3Z,GAGZ,MAAO,CACLx6e,KAAM,MACNs/B,QAAS,CAAE,OACXkkD,SAAUg3Z,EACV9xb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK2lY,cACL,CACEttd,UAAW,OACXk0C,MAAO,IACPC,IAAK,KAEPmob,GAGN,aC+NAp/O,EAAO59F,QA/YP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MACb85c,EAAM,CAAC,EACPC,EAAa,CACjBtob,MAAO,OACPC,IAAK,KACLxL,SAAU,CACR,OACA,CACEuL,MAAO,KACPvL,SAAU,CAAE4zb,MAIlBhyd,OAAO+f,OAAOiyc,EAAK,CACjBv8d,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAOzxB,EAAM1C,OAAO,qBAGpB,wBACFy8c,KAIJ,MAAM5B,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,OACPC,IAAK,KACLxL,SAAU,CAAEg/C,EAAKglY,mBAEbr5a,EAAUq0C,EAAK6/C,QACnB7/C,EAAKr0C,UACL,CACEl1B,MAAO,CACL,SACA,QAEF4b,MAAO,CACL,EAAG,aAIHyic,EAAW,CACfvob,MAAO,iBACP86a,OAAQ,CAAErmb,SAAU,CAClBg/C,EAAKkmY,kBAAkB,CACrB35a,MAAO,QACPC,IAAK,QACLn0C,UAAW,cAIX08d,EAAe,CACnB18d,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACL4P,EACA3B,IAGJA,EAAMjyb,SAAS7rB,KAAK4/c,GACpB,MAWMC,EAAa,CACjBzob,MAAO,UACPC,IAAK,OACLxL,SAAU,CACR,CACEuL,MAAO,gBACPl0C,UAAW,UAEb2nF,EAAK0lY,YACLkP,IAcEK,EAAgBj1Y,EAAKymY,QAAQ,CACjCv8D,OAAQ,IAZa,CACrB,OACA,OACA,MACA,KACA,MACA,MACA,OACA,OACA,QAG2Bv+Z,KAAK,QAChCs5d,UAAW,KAEPiQ,EAAW,CACf78d,UAAW,WACXk0C,MAAO,4BACPy8a,aAAa,EACbhob,SAAU,CAAEg/C,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAO,gBACnD04a,UAAW,GA+Pb,MAAO,CACL3se,KAAM,OACNs/B,QAAS,CACP,KACA,OAEFkkD,SAAU,CACR8uZ,SAAU,wBACV5C,QApQa,CACf,KACA,OACA,OACA,OACA,KACA,OACA,MACA,QACA,QACA,KACA,KACA,OACA,OACA,OACA,SACA,WACA,UAoPEjxL,QAjPa,CACf,OACA,SAgPE26L,SAAU,CAxOZ,QACA,KACA,WACA,OACA,OACA,OACA,SACA,UACA,OACA,MACA,WACA,SACA,QACA,OACA,QACA,OACA,QACA,QAIA,QACA,OACA,UACA,SACA,UACA,UACA,OACA,SACA,OACA,MACA,QACA,SACA,UACA,SACA,OACA,YACA,SACA,OACA,OACA,UACA,SACA,UAkMI,MACA,QA/LJ,WACA,KACA,UACA,MACA,MACA,QACA,QACA,gBACA,WACA,UACA,eACA,YACA,aACA,YACA,WACA,UACA,aACA,OACA,UACA,SACA,SACA,SACA,UACA,KACA,KACA,QACA,YACA,SACA,QACA,UACA,UACA,OACA,OACA,QACA,MACA,SACA,OACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,OACA,UACA,SACA,aACA,SACA,UACA,WACA,QACA,OACA,SACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,aACA,QACA,OACA,cACA,UACA,SACA,OAIA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,MACA,YACA,KACA,KACA,QACA,SACA,QACA,SACA,KACA,WACA,KACA,QACA,QACA,OACA,QACA,WACA,OACA,QACA,SACA,SACA,MACA,QACA,OACA,SACA,MACA,SACA,MACA,OACA,OACA,OACA,SACA,KACA,SACA,KACA,QACA,MACA,KACA,UACA,YACA,YACA,YACA,YACA,OACA,OACA,QACA,MACA,MACA,OACA,KACA,QACA,WACA,OACA,KACA,OACA,WACA,SACA,OACA,UACA,KACA,OACA,MACA,OACA,SAEA,SACA,SACA,KACA,OACA,UACA,OACA,QACA,QACA,UACA,QACA,WACA,SACA,MACA,WACA,SACA,MACA,QACA,OACA,SACA,OACA,MACA,OACA,UAEA,MACA,QACA,SACA,SACA,QACA,MACA,SACA,QAuBA1wb,SAAU,CACRi0b,EACAj1Y,EAAKymY,UACLyO,EACAF,EACArpb,EACAmpb,EA5Pc,CAAEr+c,MAAO,kBA8PvBs+c,EAtUkB,CACpBt+c,MAAO,OAEW,CAClBpe,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEc,CACnB/1B,MAAO,OAiULm+c,GAGN,aC3KAr/O,EAAO59F,QAlOP,SAAe33D,GAqLb,MAAO,CACL1nG,KAAM,QACNixe,kBAAkB,EAClBpE,QAAS,KAETrpZ,SAAU,CACR8uZ,SAAU,4BACV5C,QA3La,CACf,MACA,MACA,MACA,MACA,SACA,OACA,WACA,WACA,OACA,QACA,OACA,QACA,QACA,UACA,OACA,SACA,QACA,QACA,MACA,QACA,MACA,SACA,OACA,MACA,OACA,SACA,MACA,MACA,MACA,OACA,QACA,SACA,SACA,SACA,SACA,QACA,MACA,MACA,SACA,MACA,OACA,OACA,MACA,UACA,WACA,MACA,MACA,QACA,QACA,SACA,MACA,MACA,QACA,MACA,QACA,QACA,MACA,QACA,MACA,MACA,WACA,OACA,OACA,KACA,OACA,SACA,SACA,MACA,QACA,SACA,SACA,QACA,MACA,MACA,QACA,SACA,MACA,KACA,MACA,OACA,OACA,QACA,MACA,MACA,OACA,QACA,OACA,MACA,SACA,MACA,MACA,SACA,QACA,OACA,QACA,OACA,QACA,OACA,OACA,OACA,MACA,OACA,MACA,OACA,QACA,MACA,OACA,KACA,KACA,MACA,OACA,QACA,OACA,SACA,OACA,MACA,QACA,UACA,QACA,OACA,OACA,QACA,OACA,MACA,QACA,SACA,OACA,SACA,MACA,YACA,OACA,MACA,QACA,UACA,UACA,SACA,WACA,SACA,QACA,MACA,OACA,MACA,OACA,SACA,MACA,QACA,MACA,QACA,SACA,MACA,MACA,OACA,QACA,OACA,OACA,UACA,OACA,SACA,MACA,MACA,QACA,QACA,QACA,OACA,KACA,MACA,MACA,SACA,UACA,OACA,OACA,QACA,OACA,QACA,SACA,QACA,QAYAhnb,SAAU,CACR,CAEE3O,MAAO,SACPka,MAAO,IACPC,IAAK,MACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnBhlY,EAAKr0C,QAAQ,MAAO,IAAK,CAAEs5a,UAAW,KACtCjlY,EAAKr0C,QAAQ,IAAM,IAAK,CAAEs5a,UAAW,IACrC,CAEE5sd,UAAW,SACXk0C,MAAO,WACP04a,UAAW,IAEb,CAEE5sd,UAAW,SACXk0C,MAAO,sCACP04a,UAAW,GAEb,CAEE5sd,UAAW,SACXk0C,MAAO,2BAET,CAEEl0C,UAAW,SACXk0C,MAAO,sBAIf,aCnMAgpM,EAAO59F,QA9BP,SAAa33D,GACX,MAAO,CACL1nG,KAAM,wBACN0oD,SAAU,CAER,CACE3oC,UAAW,YACXk0C,MAAO,IACPC,IAAK,KAGP,CACED,MAAO,MACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,IACPC,IAAK,KAGPwzC,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,qBAKf,YCiBA7vO,EAAO59F,QA9CP,SAAmB33D,GACjB,MAAMqxY,EAAU,CACdh5d,UAAW,UACXk0C,MAAO,QACP04a,UAAW,GAEb,MAAO,CACL3se,KAAM,YACNs/B,QAAS,CAAE,MACXopB,SAAU,CACRg/C,EAAKr0C,QACH,wBACA,uBACA,CACE3K,SAAU,CACR,CACEvqB,MAAO,4BACPwuc,UAAW,IAGfkE,WAAW,EACXlE,UAAW,IAGf,CACE5sd,UAAW,QACXk0C,MAAO,WACP04a,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,SACP04a,UAAW,GAEb,CAIE14a,MAAO,cACPvL,SAAU,CAAEqwb,IAEdA,GAGN,YCyRA97O,EAAO59F,QArUP,SAAW33D,GACT,MAAMllE,EAAQklE,EAAKllE,MAIbyqc,EAAsBvlY,EAAKr0C,QAAQ,KAAM,IAAK,CAAE3K,SAAU,CAAE,CAAEuL,MAAO,WACrEgnb,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,IACrBF,EAAmB,IACnBz4c,EAAMojc,SAASsV,GACf,gBAAkB14c,EAAMojc,SAJC,YAK3B,IAGIiX,EAAQ,CACZ98d,UAAW,OACXrE,SAAU,CACR,CAAEu4C,MAAO,sBACT,CAAE91B,MAAO,2BAQP86c,EAAU,CACdl5d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,cACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,sEACPC,IAAK,IACL24a,QAAS,KAEXnlY,EAAKkmY,kBAAkB,CACrB35a,MAAO,mCACPC,IAAK,0BAKL8kb,EAAU,CACdj5d,UAAW,SACXrE,SAAU,CACR,CAAEyiB,MAAO,gBACT,CAAEA,MAAO,mFACT,CAAEA,MAAO,oHACT,CAAEA,MAAO,2DAEXwuc,UAAW,GAGP0O,EAAe,CACnBt7d,UAAW,OACXk0C,MAAO,eACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QACR,2GAEJhnb,SAAU,CACR,CACEuL,MAAO,OACP04a,UAAW,GAEbjlY,EAAK6/C,QAAQ0xV,EAAS,CAAEl5d,UAAW,WACnC,CACEA,UAAW,SACXk0C,MAAO,SAETg5a,EACAvlY,EAAKwlY,uBAIHM,EAAa,CACjBztd,UAAW,QACXk0C,MAAOzxB,EAAMojc,SAASsV,GAAgBxzY,EAAK2kY,SAC3CM,UAAW,GAGP2O,EAAiB94c,EAAMojc,SAASsV,GAAgBxzY,EAAK2kY,SAAW,UAoFhEmO,EAAW,CACf9K,QAnFiB,CACjB,MACA,OACA,QACA,OACA,WACA,UACA,KACA,OACA,OACA,SACA,MACA,UACA,OACA,KACA,SACA,WACA,WACA,SACA,SACA,SACA,gBACA,SACA,SACA,UACA,QACA,WACA,QACA,WACA,WACA,UACA,WACA,YACA,iBACA,gBAEA,UACA,UACA,WACA,gBACA,eAEA,WA0CAtqe,KAvCc,CACd,QACA,SACA,SACA,WACA,MACA,QACA,OACA,OACA,OACA,QACA,UACA,WACA,aACA,aACA,aACA,aACA,cACA,cACA,eACA,WACA,WACA,WACA,YACA,YACA,YACA,aAEA,QACA,SACA,YAEA,UACA,OACA,aAMAq5S,QAAS,kBAET26L,SAAU,ozBAWNuC,EAAsB,CAC1BN,EACAwB,EACA5P,EACAvlY,EAAKwlY,qBACL8L,EACAC,G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,MAAO,CACP,0BACA,MACAupE,EAAK2kY,WAEP,CAAEluc,MAAO,CACP,UACA,QACAupE,EAAK2kY,SACL,WAGJtyb,MAAO,CACL,EAAG,UACH,EAAG,gBAGP,MAAO,CACL/5C,KAAM,mBACNs/B,QAAS,CAAE,SACXkkD,SAAU,CACRksZ,QAlEa,CACf,SACA,OACA,YACA,QACA,QACA,SACA,QACA,QACA,aACA,UACA,KACA,KACA,KACA,KACA,OACA,OACA,SAkDEtqe,KAhDU,CACZ,OACA,OACA,OACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,UACA,UACA,OACA,OACA,aACA,YACA,aACA,QA+BEq5S,QA7Ba,CACf,OACA,UA6BA/1P,SAAU,CACRg/C,EAAKolY,kBACLplY,EAAK0lY,YACL1lY,EAAKylY,kBACL,CACEptd,UAAW,OACXk0C,MAAO,iBACP44a,QAAS,MAEX,CACE9sd,UAAW,SACXk0C,MAAO,UAEToob,GAGN,aC2CAp/O,EAAO59F,QAnIP,SAAgB33D,GAEd,MAAM8yY,EAAW,CACf,WACA,SACA,UACA,SACA,QACA,QACA,YACA,SACA,QACA,QACA,SACA,OACA,WACA,MACA,KACA,UACA,YACA,YACA,KACA,MACA,SACA,QACA,WACA,QACA,SACA,UACA,KACA,OACA,SACA,OACA,MACA,QACA,MACA,QACA,UACA,OACA,MACA,OACA,QACA,QACA,KACA,SACA,YA4BIG,EAAQ,CACZ56d,UAAW,QACXgtd,cAAc,EACd6D,YAAY,EACZ38a,MAAO,KACPC,IAAK,KACLsvB,SAAUg3Z,EACV7N,UAAW,IAEPwQ,EAAc,CAClB,CAEEp9d,UAAW,SACXk0C,MAAO,MACPC,IAAK,MACLy4a,UAAW,IAEb,CAEE5sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEiyb,IAEd,CAEE56d,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEP,CAEEn0C,UAAW,SACXk0C,MAAO,gFACP04a,UAAW,IAKf,OAFAgO,EAAMjyb,SAAWy0b,EAEV,CACLn9e,KAAM,SACNwjF,SAAU,CACR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ACL1nG,KAAM,QACNs/B,QAAS,CAAE,YACX2xc,kBAAkB,EAClBztZ,SAAU,CAAEksZ,QAER,woEAiCJhnb,SAAU,CACR,CACE3oC,UAAW,WACXk0C,MAAO,OACPC,IAAK,MAEPwzC,EAAKr0C,QAAQ,QAAS,MACtBq0C,EAAKylY,kBACLzlY,EAAKolY,kBACLplY,EAAK0lY,aAGX,aC7DA,MAAMoN,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEIsD,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAyFIC,EAAY,GAAGj+c,OAtBI,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAlFY,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGkB,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,aA4PFm9N,EAAO59F,QAlNP,SAAsB33D,GACpB,MAgCMs2Y,EAAa,CACjBtO,QAAS8K,EAAS16c,OAvBI,CACtB,OACA,SACA,QACA,OACA,KACA,OACA,MACA,KACA,KACA,OACA,QAY0C1a,QAHzBqgB,EAPQ,CACzB,MACA,QACA,MACA,WACA,UAGCw4c,IAAQx4c,EAAKv5B,SAAS+xe,KAGvBx/L,QAASq/L,EAASh+c,OA9BI,CACtB,MACA,KACA,KACA,QA2BAs5c,SAAU2E,EAAUj+c,OAnCG,CACvB,MACA,WA4BiB2F,MAOnB,MAAMy4c,EAAc,2BACdvD,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,MACPC,IAAK,KACLsvB,SAAUw6Z,GAENb,EAAc,CAClBz1Y,EAAK4lY,mBACL5lY,EAAK6/C,QAAQ7/C,EAAK2lY,cAAe,CAAE0B,OAAQ,CACzC76a,IAAK,WACLy4a,UAAW,KAEb,CACE5sd,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,MACPC,IAAK,MACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,MACPC,IAAK,MACLxL,SAAU,CACRg/C,EAAKglY,iBACLiO,IAGJ,CACE1mb,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACLiO,MAKR,CACE56d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,MACPC,IAAK,MACLxL,SAAU,CACRiyb,EACAjzY,EAAKylY,oBAGT,CACEl5a,MAAO,sBACP04a,UAAW,GAEb,CAGE14a,MAAO,8CAGb,CAAEA,MAAO,IAAMiqb,GAEf,CACEpJ,YAAa,aACb/H,cAAc,EACd6D,YAAY,EACZl1d,SAAU,CACR,CACEu4C,MAAO,MACPC,IAAK,OAEP,CACED,MAAO,IACPC,IAAK,QAKbymb,EAAMjyb,SAAWy0b,EAEjB,MAAM5ve,EAAQm6F,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAOiqb,IAC/CC,EAAqB,0BACrB7D,EAAS,CACbv6d,UAAW,SACXk0C,MAAO,YACPy8a,aAAa,EAGbhob,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,KACLsvB,SAAUw6Z,EACVt1b,SAAU,CAAE,QAAS5oB,OAAOq9c,MAK5Bd,EAAmB,CACvB3ge,SAAU,CACR,CAAEyiB,MAAO,CACP,WACA+/c,EACA,gBACAA,IAEF,CAAE//c,MAAO,CACP,WACA+/c,KAGJnkc,MAAO,CACL,EAAG,cACH,EAAG,yBAELypC,SAAUw6Z,GAGZ,MAAO,CACLh+e,KAAM,eACNs/B,QAAS,CACP,SACA,OACA,QAEFkkD,SAAUw6Z,EACVnR,QAAS,OACTnkb,SAAU,IACLy0b,EACHz1Y,EAAKr0C,QAAQ,MAAO,OACpBq0C,EAAKylY,kBACL,CACEptd,UAAW,WACXk0C,MAAO,QAAUiqb,EAAc,YAAcC,EAC7Cjqb,IAAK,QACLw8a,aAAa,EACbhob,SAAU,CACRn7C,EACA+se,IAGJ,CAEErmb,MAAO,aACP04a,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,WACXk0C,MAAOkqb,EACPjqb,IAAK,QACLw8a,aAAa,EACbhob,SAAU,CAAE4xb,MAIlB+B,EACA,CACEpob,MAAOiqb,EAAc,IACrBhqb,IAAK,IACLw8a,aAAa,EACbG,WAAW,EACXlE,UAAW,IAInB,YC+EA1vO,EAAO59F,QApbP,SAAa33D,GA8ZX,MAAO,CACL1nG,KAAM,MACNwjF,SAAU,CACRksZ,QAhaa,CACf,MACA,KACA,KACA,QACA,OACA,MACA,SACA,UACA,MACA,MACA,SACA,MACA,KACA,KACA,KACA,MACA,QACA,MACA,OACA,SACA,MACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,MACA,QACA,WACA,MACA,YACA,cACA,QACA,OACA,SACA,YACA,OACA,YACA,YACA,KACA,QACA,QACA,UACA,QACA,WACA,YACA,aACA,cACA,aACA,WACA,UACA,aACA,cACA,WACA,SACA,aACA,eACA,UACA,YACA,eACA,MACA,UACA,UACA,aACA,UACA,eACA,YACA,SACA,OACA,QACA,MACA,WACA,OACA,UACA,cACA,eACA,WACA,SACA,YACA,SACA,UACA,aACA,OACA,QACA,SACA,OACA,WACA,QACA,MACA,OACA,WACA,aACA,gBACA,SACA,OACA,OACA,UACA,QACA,UACA,OACA,OACA,SACA,QACA,aACA,aACA,QACA,WACA,KACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,UACA,SACA,UACA,WACA,YACA,QACA,SACA,YACA,kBACA,WACA,OACA,QACA,MACA,YACA,UACA,OACA,WACA,QACA,SACA,OACA,KACA,OACA,SACA,UACA,cACA,WACA,OACA,WACA,WACA,aACA,cACA,SACA,OACA,WACA,UACA,YACA,aACA,aACA,OACA,QACA,UACA,cACA,UACA,QACA,WACA,UACA,cACA,QACA,cACA,MACA,MACA,OACA,MACA,SACA,YACA,WACA,WACA,SACA,SACA,UACA,WACA,QACA,UACA,UACA,UACA,QACA,OACA,QACA,OACA,SACA,QACA,SACA,SACA,SACA,cACA,aACA,gBACA,gBACA,UACA,WACA,MACA,SACA,OACA,QACA,SACA,OACA,aACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,UACA,OACA,UACA,cACA,OACA,cACA,QACA,YACA,OACA,UACA,YACA,SACA,WACA,YACA,QACA,WACA,QACA,WACA,YACA,UACA,UACA,aACA,QACA,QAqLE0J,SAnLc,CAChB,WACA,SACA,QACA,QACA,QACA,KACA,SACA,aACA,KACA,OACA,cACA,aACA,SACA,SACA,SACA,KACA,OACA,UACA,MACA,MACA,SACA,iBACA,kBACA,QACA,YACA,QACA,UACA,UACA,aACA,YACA,cACA,aACA,gBACA,MACA,aACA,QACA,SACA,YACA,YACA,WACA,cACA,aACA,eACA,SACA,KACA,SACA,SACA,SACA,cACA,QACA,QACA,eACA,YACA,gBACA,QACA,SACA,UACA,aACA,aACA,QACA,OACA,WACA,SACA,WACA,WACA,SACA,eACA,SACA,OACA,QACA,eACA,UACA,SACA,UACA,OACA,QACA,iBACA,oBACA,QACA,aACA,MACA,OACA,UACA,aACA,aACA,eACA,QACA,UACA,WACA,MACA,QACA,KACA,YACA,YACA,cACA,QACA,gBACA,SACA,YACA,YACA,kBACA,UACA,SACA,SACA,OACA,OACA,MACA,MACA,OACA,iBACA,MACA,QACA,QACA,OACA,UACA,OACA,WACA,QACA,QACA,QACA,SACA,MACA,SACA,cACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,gBACA,QACA,OACA,gBACA,SACA,MACA,qBACA,iBACA,iBACA,kBACA,sBACA,SACA,mBACA,QACA,SACA,cACA,QACA,aACA,QACA,aACA,cACA,QACA,QACA,QACA,MACA,OACA,WACA,SACA,QACA,OACA,UACA,MACA,eACA,UACA,MACA,QACA,SACA,QACA,QACA,QACA,aACA,SAQA1wb,SAAU,CACRg/C,EAAKolY,kBACLplY,EAAKr0C,QAAQ,SAAU,UACvBq0C,EAAK2lY,cACL,CACEttd,UAAW,OACXgtd,cAAc,EACd94a,MAAO,UACPC,IAAK,QAEP,CACED,MAAO,UAGf,aC/SAgpM,EAAO59F,QAnIP,SAAa33D,GAqEX,MAAO,CACL1nG,KAAM,yBACNixe,kBAAkB,EAClB3xc,QAAS,CAAE,OACXkkD,SAjDA,gbAkDA96B,SAAU,CAzDI,CACd3oC,UAAW,SACXk0C,MAAO,8BACP04a,UAAW,GAnBG,CACd5sd,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,KACP04a,UAAW,OAmEjBjlY,EAAKulY,oBACLvlY,EAAKwlY,qBACL,CACEntd,UAAW,UACXk0C,MAAO,IACPC,IAAK,IACLy4a,UAAW,GAEb,CACE5sd,UAAW,WACXk0C,MAAO,8BAET,CACEl0C,UAAW,WACXk0C,MAAO,mBAET,CACEl0C,UAAW,WACXk0C,MAAO,wBAET,CACEl0C,UAAW,SACXk0C,MAAO,qBAET,CACEl0C,UAAW,UACXk0C,MAAO,gCAIT,CACEA,MAAO,SACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZkE,YAAa,OAEf,CACE7gb,MAAO,4BACPC,IAAK,IACL64a,cAAc,EACd6D,YAAY,EACZkE,YAAa,cAEf,CAEE7gb,MAAO,aACPC,IAAK,QACL4gb,YAAa,QAIrB,aCmdA73O,EAAO59F,QArlBP,SAAa33D,GACX,MAAMllE,EAAQklE,EAAKllE,MAIbyqc,EAAsBvlY,EAAKr0C,QAAQ,KAAM,IAAK,CAAE3K,SAAU,CAAE,CAAEuL,MAAO,WACrEgnb,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,cACrBF,EAAmB,IACnBz4c,EAAMojc,SAASsV,GACf,gBAAkB14c,EAAMojc,SAJC,YAK3B,IAEIwV,EAAsB,CAC1Br7d,UAAW,OACXk0C,MAAO,sBAMHglb,EAAU,CACdl5d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,cACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,sEACPC,IAAK,IACL24a,QAAS,KAEXnlY,EAAKkmY,kBAAkB,CACrB35a,MAAO,mCACPC,IAAK,0BAKL8kb,EAAU,CACdj5d,UAAW,SACXrE,SAAU,CAER,CAAEu4C,MACA,gVAoBF,CAAEA,MACA,gKAgBJ04a,UAAW,GAGP0O,EAAe,CACnBt7d,UAAW,OACXk0C,MAAO,eACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QACR,0FAEJhnb,SAAU,CACR,CACEuL,MAAO,OACP04a,UAAW,GAEbjlY,EAAK6/C,QAAQ0xV,EAAS,CAAEl5d,UAAW,WACnC,CACEA,UAAW,SACXk0C,MAAO,SAETg5a,EACAvlY,EAAKwlY,uBAIHM,EAAa,CACjBztd,UAAW,QACXk0C,MAAOzxB,EAAMojc,SAASsV,GAAgBxzY,EAAK2kY,SAC3CM,UAAW,GAGP2O,EAAiB94c,EAAMojc,SAASsV,GAAgBxzY,EAAK2kY,SAAW,UA+RhEkP,EAAe,CACnBn2e,KAlMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAmLAsqe,QA9RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAwMAjxL,QAde,CACf,OACA,QACA,UACA,UACA,QAUA26L,SANe,CAAE,WAOjBoC,YAnLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,WACA,WACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxB17d,UAAW,oBACX4sd,UAAW,EACXnpZ,SAAU,CAERk4Z,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAznb,MAAOzxB,EAAM1C,OACX,KACA,eACA,SACA,UACA,aACA,YACA4nE,EAAK2kY,SACL7pc,EAAMopc,UAAU,sBAGd+P,EAAsB,CAC1BF,EACAJ,EACAD,EACAnO,EACAvlY,EAAKwlY,qBACL8L,EACAC,GAGI2C,E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CK,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,IACPvL,SAAU,CACR2xb,EACA,CAAEpmb,MAAOqqb,IAEX3R,UAAW,GAEb,CACE5sd,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,gBAAkBoqb,GAC3B,CAAEpqb,MAAO,iBAAmBoqb,GAC5B,CAAEpqb,MAAO,uBAAyBoqb,GAClC,CAAEpqb,MAAO,yFACT,CAAEA,MAAO,sBAAwBoqb,IAEnC1R,UAAW,IAMf,OAHAgO,EAAMjyb,SAAWm2b,EACjBJ,EAAU/1b,SAAWm2b,EAAyBr5e,MAAM,GAE7C,CACLxF,KAAM,UACNs/B,QAAS,CAAE,MACXkkD,SAAUg7Z,EACV91b,SAAUm2b,EAEd,aCsGA5hP,EAAO59F,QAlZP,SAAgB33D,GACd,MAmJM8yY,EAAW,CACf9K,QAvGsB,CACtB,WACA,KACA,OACA,QACA,OACA,QACA,QACA,QACA,WACA,KACA,OACA,QACA,WACA,SACA,UACA,QACA,MACA,UACA,OACA,KACA,WACA,KACA,YACA,WACA,KACA,OACA,YACA,MACA,WACA,MACA,WACA,SACA,UACA,YACA,SACA,WACA,SACA,MACA,SACA,SACA,SACA,SACA,aACA,SACA,SACA,SACA,OACA,QACA,MACA,SACA,YACA,SACA,QACA,UACA,OACA,WACA,SA8CyB5vc,OA5CC,CAC1B,MACA,QACA,MACA,YACA,OACA,QACA,QACA,KACA,aACA,UACA,SACA,OACA,OACA,MACA,SACA,QACA,OACA,OACA,OACA,MACA,SACA,MACA,UACA,KACA,KACA,UACA,UACA,SACA,SACA,WACA,SACA,SACA,MACA,YACA,UACA,MACA,OACA,QACA,OACA,UAKAs5c,SArJwB,CACxB,OACA,OACA,OACA,UACA,WACA,SACA,UACA,OACA,QACA,MACA,OACA,OACA,QACA,SACA,QACA,QACA,SACA,QACA,OACA,UAkIA36L,QA/GuB,CACvB,UACA,QACA,OACA,SA6GI+uL,EAAa9lY,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAO,uBACpD+kb,EAAU,CACdj5d,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,iBACT,CAAEA,MAAO,mEACT,CAAEA,MAAO,wFAEX04a,UAAW,GAOPmS,EAAkB,CACtB/+d,UAAW,SACXk0C,MAAO,KACPC,IAAK,IACLxL,SAAU,CAAE,CAAEuL,MAAO,QAEjB8qb,EAAwBr3Y,EAAK6/C,QAAQu3V,EAAiB,CAAEjS,QAAS,OACjE8N,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,KACPC,IAAK,KACLsvB,SAAUg3Z,GAENwE,EAAct3Y,EAAK6/C,QAAQozV,EAAO,CAAE9N,QAAS,OAC7CoS,EAAsB,CAC1Bl/d,UAAW,SACXk0C,MAAO,MACPC,IAAK,IACL24a,QAAS,KACTnkb,SAAU,CACR,CAAEuL,MAAO,QACT,CAAEA,MAAO,QACTyzC,EAAKglY,iBACLsS,IAGEE,EAA+B,CACnCn/d,UAAW,SACXk0C,MAAO,OACPC,IAAK,IACLxL,SAAU,CACR,CAAEuL,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,MACT0mb,IAGEwE,EAAqCz3Y,EAAK6/C,QAAQ23V,EAA8B,CACpFrS,QAAS,KACTnkb,SAAU,CACR,CAAEuL,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,MACT+qb,KAGJrE,EAAMjyb,SAAW,CACfw2b,EACAD,EACAH,EACAp3Y,EAAKklY,iBACLllY,EAAKolY,kBACLkM,EACAtxY,EAAKwlY,sBAEP8R,EAAYt2b,SAAW,CACrBy2b,EACAF,EACAF,EACAr3Y,EAAKklY,iBACLllY,EAAKolY,kBACLkM,EACAtxY,EAAK6/C,QAAQ7/C,EAAKwlY,qBAAsB,CAAEL,QAAS,QAErD,MAAMwN,EAAS,CAAE3+d,SAAU,CArER,CACjBqE,UAAW,SACXk0C,MAAO,4BACP04a,UAAW,GAoEXuS,EACAD,EACAH,EACAp3Y,EAAKklY,iBACLllY,EAAKolY,oBAGDsS,EAAmB,CACvBnrb,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CAAE8lb,cAAe,UACjBhB,IAGE6R,EAAgB33Y,EAAK2kY,SAAW,KAAO3kY,EAAK2kY,SAAW,aAAe3kY,EAAK2kY,SAAW,iBACtFiT,EAAgB,CAGpBrrb,MAAO,IAAMyzC,EAAK2kY,SAClBM,UAAW,GAGb,MAAO,CACL3se,KAAM,KACNs/B,QAAS,CACP,KACA,MAEFkkD,SAAUg3Z,EACV3N,QAAS,KACTnkb,SAAU,CACRg/C,EAAKr0C,QACH,MACA,IACA,CACEq9a,aAAa,EACbhob,SAAU,CACR,CACE3oC,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,MACP04a,UAAW,GAEb,CAAE14a,MAAO,kBACT,CACEA,MAAO,MACPC,IAAK,UAOjBwzC,EAAKulY,oBACLvlY,EAAKwlY,qBACL,CACEntd,UAAW,OACXk0C,MAAO,IACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QAAS,wFAEvB2K,EACArB,EACA,CACExK,cAAe,kBACf7B,UAAW,EACXz4a,IAAK,QACL24a,QAAS,UACTnkb,SAAU,CACR,CAAE8lb,cAAe,eACjBhB,EACA4R,EACA13Y,EAAKulY,oBACLvlY,EAAKwlY,uBAGT,CACEsB,cAAe,YACf7B,UAAW,EACXz4a,IAAK,QACL24a,QAAS,SACTnkb,SAAU,CACR8kb,EACA9lY,EAAKulY,oBACLvlY,EAAKwlY,uBAGT,CACEsB,cAAe,SACf7B,UAAW,EACXz4a,IAAK,QACL24a,QAAS,SACTnkb,SAAU,CACR8kb,EACA4R,EACA13Y,EAAKulY,oBACLvlY,EAAKwlY,uBAGT,CAEEntd,UAAW,OACXk0C,MAAO,oBACP84a,cAAc,EACd74a,IAAK,MACL08a,YAAY,EACZlob,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,IACPC,IAAK,OAIX,CAGEs6a,cAAe,8BACf7B,UAAW,GAEb,CACE5sd,UAAW,WACXk0C,MAAO,IAAMorb,EAAgB,SAAW33Y,EAAK2kY,SAAW,wBACxDqE,aAAa,EACbx8a,IAAK,WACL08a,YAAY,EACZptZ,SAAUg3Z,EACV9xb,SAAU,CAER,CACE8lb,cAvViB,CACzB,SACA,UACA,YACA,SACA,WACA,YACA,WACA,QACA,SACA,WACA,SACA,UACA,MACA,SACA,WAwU0Cn7d,KAAK,KACvCs5d,UAAW,GAEb,CACE14a,MAAOyzC,EAAK2kY,SAAW,wBACvBqE,aAAa,EACbhob,SAAU,CACRg/C,EAAK8lY,WACL4R,GAEFzS,UAAW,GAEb,CAAExuc,MAAO,QACT,CACEpe,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZptZ,SAAUg3Z,EACV7N,UAAW,EACXjkb,SAAU,CACR2xb,EACArB,EACAtxY,EAAKwlY,uBAGTxlY,EAAKulY,oBACLvlY,EAAKwlY,uBAGToS,GAGN,aChWAriP,EAAO59F,QA9CP,SAAa33D,GAuBX,MAAO,CACL1nG,KAAM,MACNixe,kBAAkB,EAClBztZ,SAAU,CACR8uZ,SAAU,yBACV5C,QA3Ba,CACf,WACA,YACA,cACA,cACA,WACA,cACA,kBACA,YACA,UACA,eACA,YACA,aACA,eACA,aACA,UACA,aACA,YACA,gBACA,gBACA,eASAhnb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEP,CACEn0C,UAAW,YACXk0C,MAAO,WACPC,IAAK,IACL08a,YAAY,IAIpB,aCvDA,MAyKM2O,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACAr0c,OAAOisC,UAGHqoa,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACAt0c,OAAOisC,UAGHsoa,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACAv0c,OAAOisC,UAEH2sX,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QAC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AK,IACL24a,QAAS,MACTnkb,SAAU,CACRg/C,EAAKglY,iBACLiO,EACAmG,MAKRA,EAAap4b,SAAW,CACtBgyb,EACAL,GAGF,MAAM0G,EAAiB,CAErB,aACA,WACA,WACA,WACA,WACA,WACA,OACA,MACA,QACA,SACA,UACA,SACA,MACA,YACA,SACA,eACA,aACA,SACA,OACA,MACA,OACA,SACA,MACA,MAEA,UACA,eAEIC,EAA0BD,EAAer/e,KAAK8uC,GAAM,GAAGA,OA2F7D,MAAO,CACLxwC,KAAM,OACNwjF,SAtBe,CACfksZ,QAtEqB,CACrB,WACA,KACA,SACA,QACA,QACA,OACA,QACA,OACA,QACA,QACA,QACA,WACA,YACA,UACA,WACA,KACA,UACA,OACA,OACA,SACA,UACA,YACA,WACA,UACA,QACA,QACA,UACA,MACA,WACA,MACA,OACA,KACA,aACA,SACA,KACA,YACA,KACA,OACA,UACA,QACA,MACA,OACA,KACA,WACA,OACA,WACA,UACA,SACA,SACA,MACA,OACA,SACA,QACA,SACA,OACA,OACA,QACA,OACA,MACA,UACA,MACA,OACA,OACA,QACA,OACA,SAKA0J,SACE2H,EACGjhd,OAAOkhd,GACPlhd,OAAO,CAEN,QACA,OACA,UACA,QAEA,WACA,gBACA,mBACA,WAENwyc,SAAU,4BAMV5pb,SAAU,CACR2xb,EACA3yY,EAAKr0C,QACH,eACA,OACA,CACEyhb,YAAa,WACbnI,UAAW,IAGfjlY,EAAKr0C,QACH,WACA,IAAK,CAAE3K,SAAU,CACf,CACEosb,YAAa,WACb7gb,MAAO,IACPC,IAAK,IACLy4a,UAAW,MAIjBjlY,EAAKulY,oBACLvlY,EAAKwlY,qBACL,CACEntd,UAAW,QACXyud,cAAe,kBACft6a,IAAK,KACL08a,YAAY,EACZlob,SAAU,CACR,CAAE8lb,cAAe,sBACjB9mY,EAAK+lY,wBAGTiN,EACA,CACE36d,UAAW,OACXk0C,MAAO,cAET,CAAEA,MAAO,OAIf,aCvBAgpM,EAAO59F,QA9OP,SAAgB33D,GACd,MAAM8yY,EAAW,CACf,UACA,WACA,OACA,MACA,QACA,SACA,WACA,MACA,MACA,QACA,MACA,OACA,QACA,OACA,QACA,MACA,SACA,QACA,WACA,MACA,YACA,KACA,UACA,SACA,OACA,QACA,YACA,KACA,OACA,UACA,WACA,MACA,MACA,MACA,iBACA,eACA,SACA,UACA,MACA,MACA,YACA,UACA,KACA,WACA,OACA,OACA,WACA,MACA,MACA,WACA,SACA,OACA,QACA,SACA,KACA,SACA,SACA,QACA,aACA,QACA,UACA,UACA,OACA,OACA,iBACA,SACA,UACA,MACA,KACA,OACA,QACA,KACA,SACA,YACA,KACA,MACA,SACA,QACA,WACA,cACA,OACA,SACA,OACA,iBACA,UACA,YACA,YACA,WACA,cACA,WACA,KACA,KACA,WACA,QACA,YACA,YACA,QACA,WACA,UACA,OACA,aACA,eACA,WACA,aACA,gBACA,UACA,SACA,QACA,UACA,UACA,SACA,aACA,YACA,WACA,QACA,OACA,YACA,WACA,eACA,aACA,YACA,gBACA,YACA,aACA,SACA,YACA,WAEIuC,EAAgB,CACpBr1Y,EAAKulY,oBACLvlY,EAAKr0C,QAAQ,KAAM,KAAM,CAAEs5a,UAAW,IACtCjlY,EAAKr0C,QAAQ,OAAQ,OAAQ,CAAEs5a,UAAW,MAEtCsU,EAAY,CAChBlhe,UAAW,OACXrE,SAAU,CACR,CACEu4C,MAAO,OACPC,IAAK,MAEP,CACED,MAAO,SACPC,IAAK,UAILmmb,EAAS,CACbt6d,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAE,CAAEuL,MAAO,QA6BjB+ob,EAAc,CAClBj9d,UAAW,SACXrE,SAAU,CACR,CAAEyiB,MAAO,aACT,CAAEA,MAAO,6BACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,kBAGP+id,EAAQ,CACZjtb,MAAOyzC,EAAK2kY,SAAW,wBACvBqE,aAAa,EACbhob,SAAU,CAAEg/C,EAAK8lY,aAEboP,EAAW,CACf78d,UAAW,WACXyud,cAAe,4CACft6a,IAAK,OACLsvB,SAAU,qDACV96B,SAAU,CACRg/C,EAAK8lY,WACL,CACEztd,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACLsvB,SAAUg3Z,EACV9xb,SAAU,CACR2xb,EACA2C,EACAiE,GACAnhd,OAAOi9c,IAEXkE,GACAnhd,OAAOi9c,IAEX,MAAO,CACL/8e,KAAM,SACNs/B,QAAS,CACP,MACA,MACA,MACA,UAEF2xc,kBAAkB,EAClBztZ,SAAUg3Z,EACV3N,QAAS,2BACTnkb,SAAU,CACR2xb,EACA2C,EA3EW,CACbj9d,UAAW,SACX4sd,UAAW,EAEXjxd,SAAU,CACR,CAEEyiB,MAAO,2BACT,CAEEA,MAAO,kBACT,CAEEA,MAAO,KACPwuc,UAAW,GACb,CAEExuc,MAAO,iBACT,CAEEA,MAAO,WACT,CAEEA,MAAO,IACPwuc,UAAW,KAqDbuU,EACAtE,EACAqE,GACAnhd,OAAOi9c,GAEb,aCtLA9/O,EAAO59F,QApDP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MACnB,MAAO,CACLxiC,KAAM,OACNs/B,QAAS,CAAE,SACXopB,SAAU,CACR,CACE3oC,UAAW,OACX4sd,UAAW,GACXxuc,MAAOqE,EAAMspc,OACX,+BACA,8BACA,yBAGJ,CACE/rd,UAAW,UACXrE,SAAU,CACR,CACEu4C,MAAOzxB,EAAMspc,OACX,UACA,SACA,QACA,QACA,UACA,SACA,eAEF53a,IAAK,KAEP,CAAE/1B,MAAO,cAGb,CACEpe,UAAW,WACXk0C,MAAO,MACPC,IAAK,KAEP,CACEn0C,UAAW,WACXk0C,MAAO,KACPC,IAAK,KAEP,CACEn0C,UAAW,WACXk0C,MAAO,KACPC,IAAK,MAIb,YCeA+oM,EAAO59F,QA/DP,SAAgB33D,GACd,MAAMy5Y,EAAS,CACbltb,MAAO,gBACPuvB,SAAU,CAAExjF,KACR,4kBAQJ0oD,SAAU,CACRg/C,EAAKolY,kBACLplY,EAAKklY,mBAIT,MAAO,CACL5se,KAAM,SACNs/B,QAAS,CAAE,SACX2xc,kBAAkB,EAClB6D,YAAa,MACbpsb,SAAU,CACRg/C,EAAKr0C,QAAQ,sBAAuB,0BACpCq0C,EAAKr0C,QAAQ,MAAO,OACpB,CACEtzC,UAAW,eACXk0C,MAAO,MACPC,IAAK,MACLxL,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAO,MACPuvB,SAAU,CAAExjF,KACR,imBASJ+ue,OAAQ,CACN0D,gBAAgB,EAChBjvZ,SAAU,WACV96B,SAAU,CAAEy4b,GACZxU,UAAW,MAKnB,CACE5sd,UAAW,oBACXk0C,MAAO,OACPC,IAAK,OACLxL,SAAU,CAAEy4b,KAIpB,aCKAlkP,EAAO59F,QArEP,SAAa33D,GAyCX,MAAO,CACL1nG,KAAM,WACNs/B,QAAS,CACP,OACA,QAEFkkD,SA9Ce,CACf,KACA,IACA,OACA,QACA,MACA,MACA,UACA,MACA,OACA,QACA,QACA,MACA,QACA,SACA,KACA,MACA,WACA,MACA,KACA,MACA,KACA,QACA,KACA,OACA,QACA,aACA,MACA,QACA,KACA,MACA,MACA,MACA,QACA,KACA,OACA,OACA,OACA,OASA96B,SAAU,CACRg/C,EAAKr0C,QAAQ,IAAK,IAAK,CAAEs5a,UAAW,IACpC,CACE5sd,UAAW,OACXk0C,MAAO,sCAGT,CACEl0C,UAAW,SACXk0C,MAAO,+mCAGT,CACEl0C,UAAW,SACXk0C,MAAO,+FAETyzC,EAAK6/C,QAAQ7/C,EAAK0lY,YAAa,CAAEn5a,MAAO,kBAG9C,aChCAgpM,EAAO59F,QAjCP,SAAoB33D,GAWlB,MAAO,CACL1nG,KAAM,aACNs/B,QAAS,CAAE,UACX2xc,kBAAkB,EAClBztZ,SAde,CACf,OACA,aACA,SACA,MACA,MACA,OACA,UACA,cAOA96B,SAAU,CACRg/C,EAAKylY,kBACLzlY,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK0lY,YACL,CACEoB,cAAe,qEACfO,OAAQ,CACN76a,IAAK,SACL4gb,YAAa,UAInBjI,QAAS,KAEb,aC6HA5vO,EAAO59F,QA7JP,SAAa33D,GACX,MAAMr0C,EAAUq0C,EAAKr0C,QACnB,cAAe,IACf,CAAEs5a,UAAW,KAsHf,MAAO,CACL3se,KAAM,mBACNs/B,QAAS,CACP,MACA,OAEF2xc,kBAAkB,EAClBpE,QAAS,OACTrpZ,SAAU,CACRksZ,QAxHa,CACf,KACA,OACA,OACA,MACA,KACA,KACA,OACA,OACA,MACA,QACA,aACA,UACA,MACA,MACA,MACA,MACA,MACA,OAuGE0J,SArGc,CAChB,MACA,MACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,QACA,KACA,MACA,OACA,WACA,WACA,MACA,QACA,OACA,SACA,QACA,KACA,SACA,QACA,QACA,KACA,OACA,QACA,SACA,UACA,MACA,MACA,QACA,OACA,UACA,UACA,OACA,MACA,WACA,WACA,SACA,QACA,KACA,OACA,UACA,SACA,QACA,WACA,OACA,OACA,QACA,KACA,QACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,KACA,UACA,MACA,SACA,UACA,UACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,OACA,OACA,MACA,SACA,MAEA,OACA,MACA,WACA,WACA,QACA,MACA,QAcA1wb,SAAU,CACR,CACE3oC,UAAW,WACXk0C,MAAO,4BAET,CACEl0C,UAAW,WACXk0C,MArIG,mDAsIHC,IAAK,WACLxL,SAAU,CACRg/C,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAO,sDACvCZ,IAGJ,CACEtzC,UAAW,SACXk0C,MAAO,UACP04a,UAAW,GAEbt5a,GAGN,aCnGA4pM,EAAO59F,QAzDP,SAAkB33D,GAwBhB,MAAO,CACLlkB,SAAU,WACV96B,SAAU,CACR,CACE3oC,UAAW,UACXk0C,MAAO,YACPC,IAAK,KACL08a,YAAY,EACZjE,UAAW,IAEb,CACE5sd,UAAW,WACXk0C,MAAO,qCACPC,IAAK,KACL08a,YAAY,EACZ/D,QAAS,aACTF,UAAW,IAEb,CACE5sd,UAAW,WACXk0C,MAAO,UACPC,IAAK,KACL08a,YAAY,GA7CM,CACtB7wd,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEe,CACpBn0C,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEmB,CACxBn0C,UAAW,SACXk0C,MAAO,eACPC,IAAK,KACLy4a,UAAW,GAEc,CACzB5sd,UAAW,SACXk0C,MAAO,cACPC,IAAK,SACLy4a,UAAW,GA+BTjlY,EAAKylY,mBAGX,aC6FAlwO,EAAO59F,QAnJP,SAAa33D,GACX,MAAMuxY,EAAU,CACdl5d,UAAW,SACXrE,SAAU,CACRgsF,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAE74a,MAAO,kBAC9C,CACEA,MAAO,aACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,UACPC,IAAK,IACL24a,QAAS,OAKTmM,EAAU,CACdj5d,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,kDACT,CAAEA,MAAOyzC,EAAK8kY,cAEhBG,UAAW,GAGP0O,EAAe,CACnBt7d,UAAW,OACXk0C,MAAO,IACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QAAS,gDACrBhnb,SAAU,CACR,CACEuL,MAAO,OACP04a,UAAW,GAEb,CACE6B,cAAe,UACft6a,IAAK,IACLsvB,SAAU,CAAEksZ,QAAS,WACrBhnb,SAAU,CACRg/C,EAAK6/C,QAAQ0xV,EAAS,CAAEl5d,UAAW,WACnC,CACEA,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACL24a,QAAS,SAIfoM,EACAvxY,EAAKulY,oBACLvlY,EAAKwlY,uBAIHkU,EAAY,CAChBrhe,UAAW,WACXk0C,MAAO,gBA+DT,MAAO,CACLj0D,KAAM,cACN0oD,SAAU,CAnCM,CAChB3oC,UAAW,cACXk0C,MAAO,eACP04a,UAAW,IAkCTyU,EAhEY,CACdrhe,UAAW,UACXk0C,MAAO,qBAGK,CACZl0C,UAAW,SACXk0C,MAAO,gCAcI,CACXl0C,UAAW,cACXk0C,MAAO,kCACP04a,UAAW,IAgBA,CACXA,UAAW,EACXxuc,MAAO,CACL,gBACA,MACA,KAEF4b,MAAO,CACL,EAAG,OACH,EAAG,aAde,CACpB5b,MAAO,qBACPwuc,UAAW,EACX5yb,MAAO,QA5Ba,CACpBh6B,UAAW,SACX4sd,UAAW,EACX14a,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRswb,EACAoI,IAsDA15Y,EAAKulY,oBACLvlY,EAAKwlY,qBACL8L,EACAC,EACAoC,EAtBS,CACXthc,MAAO,cACP4yb,UAAW,EAEXxuc,MAAO,aAoBL,CACE81B,MAAOyzC,EAAK2kY,SAAW,KACvB7oZ,SAAU,KAIlB,aC5GAy5K,EAAO59F,QApCP,SAAc33D,GAEZ,MAAO,CACL1nG,KAAM,OACNs/B,QAAS,CAAE,OACX2xc,kBAAkB,EAClB6D,YAAa,MACbpsb,SAAU,CACR,CACE3oC,UAAW,eACXk0C,MAAO,UACPC,IAAK,KACL24a,QAAS,IACTnkb,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAO,eACP86a,OAAQ,CACN0D,gBAAgB,EAChB9F,UAAW,EACXjkb,SAAU,CAAEg/C,EAAKolY,uBAKzB,CACE/sd,UAAW,oBACXk0C,MAAO,KACPC,IAAK,KACL24a,QAAS,IACTrpZ,SA7BsB,mDAiC9B,aCSAy5K,EAAO59F,QA7CP,SAAc33D,GACZ,MAAM25Y,EAAc35Y,EAAKr0C,QAAQ,OAAQ,QAiCzC,MAAO,CACLrzD,KAAM,4BACN6se,QAAS,KACTnkb,SAAU,CACR24b,EAnCoB,CACtBthe,UAAW,YACXk0C,MAAO,qCAQY,CACnBA,MAAO,IACPC,IAAK,OACLxL,SAAU,CACR24b,EATwB,CAC1Bthe,UAAW,OACXk0C,MAAO,UASL,CAEEl0C,UAAW,SACXrE,SAAU,CACRgsF,EAAKklY,iBACLllY,EAAKolY,kBACL,CACE74a,MAAO,IACPC,IAAK,UAgBjB,aCmOA+oM,EAAO59F,QA7QP,SAAgB33D,GACd,MAAMllE,EAAQklE,EAAKllE,MACb8+c,EAAkB,kCAwClBC,EAAM,CACVjP,SAAUgP,EACV5R,QAxCe,CACf,QACA,QACA,MACA,OACA,QACA,OACA,YACA,WACA,KACA,OACA,MACA,KACA,MACA,KACA,SACA,KACA,MACA,KACA,QACA,QACA,UACA,UACA,UACA,SACA,MACA,SACA,UACA,mBACA,MACA,OACA,UAUAjxL,QARe,CACf,QACA,MACA,SAOIk8L,EAAQ,CACZ56d,UAAW,QACXk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B,UACA,UACA,SACA,UACA,SACA,UACA,UACA,aACA,OACA,aACA,OACA,UACA,WACA,eACA,WACA,UACA,QACA,SACA,QACA,aACA,YACA,QACA,WACA,SAyC0Bhue,KAAI4P,GAAK,GAAGA,UAAS+B,KAAK,MAEhDq1C,SAAU,CACR4xb,EACAqI,EACAD,EACAh7Y,EAAKolY,oBAGT4N,EACAiI,EACAD,EACAh7Y,EAAKolY,kBACL0V,EACAF,EACAC,EACAF,EACAI,EACA,CAAExub,MAAO,QAGf,aC2VAgpM,EAAO59F,QA1jBP,SAAe33D,GAqgBb,MAAO,CACL1nG,KAAM,iBACNs/B,QAAS,CACP,OACA,OAEF2xc,kBAAkB,EAClBztZ,SAAU,CACR8uZ,SAAU,kBACV8G,SA5gBc,CAChB,MACA,UACA,WACA,OACA,QACA,OACA,QACA,YACA,UACA,YACA,WACA,MACA,SACA,QACA,cACA,MACA,OACA,QACA,OACA,QACA,QACA,SACA,UACA,WACA,YACA,aACA,WACA,OACA,UACA,UACA,UACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,UACA,YACA,aACA,mBACA,YACA,SACA,YACA,QACA,YACA,SACA,QACA,QACA,OACA,UACA,eACA,kBACA,OACA,OACA,UACA,SACA,UACA,aACA,gBACA,YACA,eACA,aACA,SACA,aACA,aACA,QACA,OACA,SACA,UACA,SACA,UACA,UACA,SACA,cACA,aACA,kBACA,eACA,UACA,SACA,MACA,OACA,MACA,OACA,QACA,SACA,aACA,UACA,WACA,YACA,WACA,aACA,UACA,UACA,UACA,QACA,eACA,eACA,YACA,MACA,OACA,gBACA,aACA,qBACA,mBACA,UACA,eACA,YACA,UACA,WACA,OACA,UACA,YACA,WACA,MACA,OACA,UACA,KACA,OACA,SACA,UACA,MACA,UACA,UACA,UACA,UACA,UACA,QACA,QACA,OACA,OACA,OACA,OACA,SACA,WACA,WACA,WACA,OACA,SACA,UACA,OACA,WACA,OACA,QACA,QACA,SACA,YACA,UACA,MACA,cACA,OACA,eACA,aACA,cACA,OACA,QACA,MACA,SACA,aACA,YACA,OACA,aACA,QACA,SACA,QACA,YACA,SACA,YACA,OACA,QACA,QACA,WACA,OACA,SACA,YACA,QACA,QACA,aACA,gBACA,WACA,eACA,uBACA,2BACA,oBACA,kBACA,cACA,YACA,SACA,QACA,KACA,aACA,QACA,aACA,YACA,YACA,WACA,UACA,kBACA,QACA,MACA,UACA,SACA,eACA,SACA,UACA,UACA,UACA,UACA,UACA,OACA,SACA,YACA,eACA,cACA,KACA,UACA,OACA,MACA,QACA,QACA,YACA,aACA,cACA,QACA,SACA,QACA,QACA,SACA,QACA,QACA,OACA,UACA,SACA,UACA,YACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,WACA,OACA,MACA,YACA,UACA,OACA,MACA,UACA,QACA,UACA,SACA,YACA,YACA,OACA,YACA,WACA,QACA,YACA,QACA,SACA,cACA,aACA,QACA,MACA,OACA,SACA,QACA,MACA,OACA,QACA,MACA,OACA,MACA,SACA,KACA,MACA,QACA,SACA,SACA,eACA,cACA,cACA,SACA,QACA,YACA,MACA,QACA,MACA,OACA,SACA,UACA,YACA,SACA,MACA,OACA,MACA,SACA,OACA,SACA,WACA,OACA,QACA,MACA,OACA,YACA,YACA,QACA,SACA,cACA,QACA,IACA,KACA,gBACA,eACA,cACA,mBACA,UACA,YACA,WACA,UACA,WACA,cACA,YACA,aACA,WACA,MACA,MACA,OACA,MACA,cACA,UACA,UACA,UACA,MACA,YACA,YACA,YACA,YACA,SACA,KACA,YACA,UACA,iBACA,iBACA,aACA,kBACA,kBACA,cACA,SACA,eACA,MACA,WACA,KACA,MACA,eACA,UACA,QACA,OACA,QACA,YACA,WACA,OACA,UACA,SACA,KACA,WACA,eACA,eACA,WACA,UACA,OACA,YACA,cACA,WACA,UACA,OACA,OACA,WACA,SACA,cACA,UACA,WACA,OACA,QACA,SACA,QACA,QACA,YACA,UACA,MACA,OACA,MACA,MACA,MACA,OACA,SACA,UACA,MACA,OACA,SACA,WACA,YACA,QACA,SACA,OACA,MACA,OACA,OACA,SACA,MACA,QACA,QACA,OACA,SACA,OACA,SACA,cACA,cACA,eACA,QACA,UACA,UACA,SACA,SACA,UACA,QACA,aACA,WACA,MACA,QACA,SACA,aACA,QACA,WACA,WACA,UACA,SACA,MACA,IACA,MACA,OACA,OACA,UACA,aACA,aACA,SACA,YACA,YACA,QACA,OACA,YACA,aACA,WACA,YACA,OACA,YACA,QACA,WACA,OACA,QACA,QACA,QACA,YACA,QACA,OACA,WACA,OACA,QACA,SACA,QACA,OACA,UACA,UACA,SACA,QACA,QACA,cACA,MACA,QACA,QACA,OACA,OACA,QACA,MACA,UACA,SACA,aACA,UACA,UACA,UACA,eACA,UACA,eACA,WACA,WACA,OACA,UACA,SACA,OACA,MACA,OACA,WACA,QACA,YACA,WACA,SACA,UAaA1wb,SAAU,CACR,CAEEuL,MAAO,KACPC,IAAK,OACL28a,WAAW,EACXhE,QAAS,IACTF,UAAW,IAGb,CAEE5sd,UAAW,SACXk0C,MAAO,oBACPC,IAAK,QACL08a,YAAY,EACZjE,UAAW,GAEb,CAEE5sd,UAAW,SACXk0C,MAAO,8BACP04a,UAAW,GAEbjlY,EAAKglY,iBACLhlY,EAAKolY,kBACL,CACE/sd,UAAW,SACXk0C,MAAOyzC,EAAK6kY,UAAY,OACxBI,UAAW,GAGbjlY,EAAKr0C,QAAQ,QAAS,KACpB,CACE05a,cAAc,EACd6D,YAAY,EACZ/D,QAAS,QAInB,aC3hBA5vO,EAAO59F,QAhCP,SAAa33D,GACX,MAAO,CACL1nG,KAAM,MACN0oD,SAAU,CACR,CACEuL,MAAO,mBACPC,IAAK,iBACL08a,YAAY,EACZF,aAAa,EACbG,WAAW,EACXnob,SAAU,CACR,CACEuL,MAAO,sBACPC,IAAK,uBACL28a,WAAW,EACXH,aAAa,EACb3wd,UAAW,QAEb,CACEk0C,MAAO,IACPC,IAAK,mBACL08a,YAAY,EACZ7D,cAAc,EACdhtd,UAAW,aAKnBkxd,kBAAkB,EAEtB,aC0CAh0O,EAAO59F,QAtEP,SAAc33D,GACZ,MAqBMo7Y,EAAS,CACb/ie,UAAW,WACXyud,cAAe,MACft6a,IAAK,cACL08a,YAAY,EACZlob,SAAU,CAXC,CACX3oC,UAAW,QACX4sd,UAAW,EACX14a,MAAO,oFAWT,MAAO,CACLj0D,KAAM,OACNwjF,SAAU,CACRksZ,QAAS,CACP,OACA,QACA,MACA,OACA,OACA,KACA,OACA,SACA,KACA,MACA,MACA,QACA,MACA,QACA,YACA,SACA,OACA,QACA,QAEFjxL,QAAS,CACP,OACA,UAGJ/1P,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBA5DI,CACXntd,UAAW,SACXk0C,MAAO,8BAGM,CACbl0C,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,OAqDP4ub,EACAp7Y,EAAK2lY,eAGX,aCifApwO,EAAO59F,QArjBP,SAAiB33D,GACf,MAAMllE,EAAQklE,EAAKllE,MAOb6wB,EAAU,CAAE33C,SAAU,CAC1BgsF,EAAKr0C,QAAQ,IAAK,IAAK,CAAEs5a,UAAW,IAEpCjlY,EAAKr0C,QAAQ,QAAS,IAAK,CAAEs5a,UAAW,IACxCjlY,EAAKr0C,QAAQ,MAAO,IAAK,CAAEs5a,UAAW,MAIlCoW,EAAyB,gBACzBC,EAAsB,kBACtBtI,EAAS,CACb36d,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAOzxB,EAAM1C,OAAO,QAAS,UAAWkjd,EAAqBD,IAC/D,CAAE9ub,MAAOzxB,EAAM1C,OAAO,QAASkjd,EAAqBD,IACpD,CAAE9ub,MAAOzxB,EAAM1C,OAAO,QAASkjd,EAAqBD,KAEtDpW,UAAW,GAGPsW,EAAe,CACnBlje,UAAW,WACXyud,cAAe,8BACf3B,QAAS,WACTnkb,SAAU,CACRg/C,EAAK+lY,sBA/BM,CACb1td,UAAW,SACXk0C,MAAO,MACPC,IAAK,SAmhBP,MAAO,CACLl0D,KAAM,UACNixe,kBAAkB,EAClB3xc,QAAS,CACP,MACA,OAEFkkD,SAAU,CACR8uZ,SAAU,0CACV5C,QAlfa,CACf,OACA,KACA,aACA,QACA,SACA,QACA,UACA,OACA,YACA,QACA,YACA,OACA,UACA,YACA,YACA,eACA,MACA,QACA,QACA,KACA,SACA,YACA,OACA,WACA,UACA,SACA,OACA,OACA,QACA,WACA,eACA,SACA,gBACA,WACA,UACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,SACA,SACA,OACA,SACA,QACA,SACA,QACA,OACA,MACA,OACA,YACA,SACA,OACA,QACA,UACA,SACA,SACA,MACA,OACA,aACA,SACA,cACA,OACA,WACA,SACA,QACA,QACA,OACA,cACA,UACA,cACA,cACA,QACA,OACA,UACA,QACA,QACA,cACA,SACA,kBACA,OACA,YACA,WACA,WACA,UACA,SACA,gBACA,QACA,WACA,UACA,QACA,aACA,QACA,YACA,OACA,OACA,QACA,UACA,SACA,cACA,gBACA,WACA,WACA,YACA,YACA,YACA,iBACA,kBACA,kBACA,kBACA,gBACA,iBACA,iBACA,iBACA,aACA,aACA,UACA,WACA,gBACA,kBACA,mBACA,wBACA,SACA,SACA,aACA,gBACA,aACA,oBACA,mBACA,iBACA,gBACA,QACA,WACA,eACA,cACA,QACA,WACA,kBACA,yBACA,aACA,oBACA,aACA,aACA,aACA,uBACA,cACA,kBACA,kBACA,iCACA,0BACA,0BACA,UACA,aACA,YACA,MACA,WACA,SACA,QACA,YACA,MACA,UACA,MACA,YACA,YACA,WACA,UACA,WACA,YACA,OACA,SACA,UACA,OACA,YACA,UACA,UACA,cACA,YACA,iBACA,YACA,WACA,cACA,OACA,SACA,YACA,SACA,SACA,WACA,UACA,SACA,KACA,MACA,SACA,cACA,QA0SEjxL,QAxSa,CACf,UACA,UAuSE26L,SArSc,CAChB,OACA,SACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,OACA,QACA,OACA,OACA,OACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,QACA,OACA,OACA,QACA,SACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,OACA,QACA,SACA,SACA,QACA,SACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,SACA,QACA,SACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,MACA,OACA,QACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,QACA,MACA,OACA,MACA,QACA,QACA,MACA,MACA,QACA,MACA,MACA,OACA,OACA,MACA,OACA,OACA,MACA,OACA,QACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,WACA,aACA,UACA,UACA,MACA,YACA,MACA,aACA,WACA,QACA,UACA,QACA,SACA,gBACA,SACA,cACA,UACA,UACA,WACA,QACA,WACA,OACA,OACA,QACA,QACA,QACA,OACA,MACA,QACA,SACA,SACA,WACA,SACA,cACA,SACA,SACA,QACA,cACA,SACA,SACA,SACA,SACA,UACA,OACA,UACA,UACA,QACA,gBACA,cACA,QACA,SACA,UACA,YACA,QACA,OACA,oBACA,qBACA,eACA,QACA,OACA,UACA,SACA,MACA,eACA,OACA,YACA,OACA,SACA,SACA,SACA,QACA,SACA,WACA,OACA,QACA,QACA,WACA,yBACA,cACA,uBACA,2BACA,gBACA,kBACA,iCACA,0BACA,0BACA,gBACA,aACA,WACA,qBACA,eACA,kBACA,QACA,QACA,QACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,OACA,cACA,QACA,YACA,QACA,QACA,gBACA,aACA,uBACA,QACA,SACA,eACA,aACA,MACA,MACA,MACA,MACA,UACA,UACA,UACA,OACA,OACA,UACA,cACA,WACA,WACA,QACA,QACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,aACA,OACA,SACA,OACA,eACA,SACA,SACA,SACA,cAeAvM,QAAS,OACTnkb,SAAU,CAhgBG,CACb3oC,UAAW,SACX4sd,UAAW,EACXjxd,SAAU,CACRgsF,EAAKklY,iBACLllY,EAAKolY,oBA6fLmW,EAGA,CACEhvb,MAAO,cACP04a,UAAW,GAEbt5a,EACAqnb,GAGN,aCvjBA,SAAStpD,EAAOhrb,GACd,OAAO,IAAI68B,OAAO78B,EAAMyM,QAAQ,wBAAyB,QAAS,IACpE,CAMA,SAASwwB,EAAOy8H,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGz8H,OAHM,IAIlB,CAMA,SAASuoc,EAAU9rU,GACjB,OAAOhgI,EAAO,MAAOggI,EAAI,IAC3B,CAMA,SAAShgI,IAAgB,QAAAggC,EAAAviE,UAAAsR,OAANkxD,EAAI,IAAA39D,MAAA09D,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAziE,UAAAyiE,GAErB,OADeD,EAAKr+D,KAAK4P,GAAM+xB,EAAO/xB,KAAI+B,KAAK,GAEjD,CA0BA,SAASy4d,IAAgB,QAAA79Z,EAAA1wE,UAAAsR,OAANkxD,EAAI,IAAA39D,MAAA6rE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJnO,EAAImO,GAAA3wE,UAAA2wE,GAErB,MAAMnJ,EAtBR,SAA8BhF,GAC5B,MAAMgF,EAAOhF,EAAKA,EAAKlxD,OAAS,GAEhC,MAAoB,kBAATk2D,GAAqBA,EAAKn0B,cAAgBtmB,QACnDy1C,EAAKthB,OAAOshB,EAAKlxD,OAAS,EAAG,GACtBk2D,GAEA,CAAC,CAEZ,CAaegna,CAAqBhsa,GAIlC,MAHe,KACVgF,EAAKnb,QAAU,GAAK,MACrBmW,EAAKr+D,KAAK4P,GAAM+xB,EAAO/xB,KAAI+B,KAAK,KAAO,GAE7C,CA+iBA4pP,EAAO59F,QAniBP,SAAgB33D,GACd,MAmEMw7Y,EAAoB,CAExBnpc,MAAO,UACP5b,MAAO,sCAyCHgld,EAAc,CAElB,OACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,MACA,OACA,QACA,SACA,YACA,aACA,UACA,QACA,SACA,UACA,SACA,OACA,SACA,OACA,SAEA,SACA,UACA,OACA,QACA,MACA,QACA,MACA,QACA,YACA,MACA,SACA,UAEA,UA4CIC,EAAe,CACnB1T,QApMe,CACf,WACA,MACA,KACA,SACA,OACA,QACA,QACA,UACA,WACA,KACA,OACA,WACA,SACA,OACA,OACA,MACA,YACA,SAEA,UACA,QACA,MACA,MACA,WACA,SACA,KACA,KACA,UACA,SACA,YACA,WACA,OACA,MACA,QACA,SACA,SACA,UACA,YACA,MAGA,KACA,OACA,KACA,WACA,UACA,SACA,MACA,SACA,SACA,SACA,OACA,KAEA,MACA,OACA,SACA,MACA,MACA,OACA,OACA,QACA,OACA,SAqIAjxL,QA5Ge,CACf,OACA,QACA,OACA,OACA,OACA,KACA,QACA,WACA,YACA,MACA,QAkGA26L,SA5Ce,CAKf,MACA,MACA,QACA,UACA,OACA,eACA,MACA,MACA,OACA,SACA,SACA,YACA,SACA,UACA,aACA,YACA,KACA,MACA,MACA,SACA,OACA,QACA,MACA,QACA,WACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,aAOA,oBAhG0B,CAC1B,WACA,uBACA,oBAsGI/lb,EAAU,CACd33C,SAAU,CALVgsF,EAAKr0C,QAAQ,aAAc,OAAQ,CACjC3K,SAAU,CAAC,UAMXg/C,EAAKulY,sBAOHoW,EAAoB,CACxBtpc,MAAO,WACPka,MAAO,KACPC,IAAK,MAIDovb,EAA+B,WAC/BC,EAAsB,CAC1Bxpc,MAAO,SACPr+B,SAAU,CAER,CAAEyiB,MAAO2B,EAAOwjd,EAA8B,YAE9C,CAAEnld,MAAO2B,EAAOwjd,EAA8B57Y,EAAK4kY,uBAErDK,UAAW,GAGP6W,EAAmB,SAAAnze,GAA2B,IAE9Coze,GAF4B,aAAEC,GAAcrze,EAI9Coze,EAD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AClBztZ,SAAU,CACRksZ,QAliGa,CACf,aACA,SACA,UACA,MACA,QACA,QACA,OACA,cACA,WACA,UACA,SACA,MACA,KACA,OACA,MACA,OACA,OACA,MACA,WACA,YACA,KACA,MACA,MACA,MACA,KACA,SACA,SACA,SACA,SACA,OACA,QACA,MACA,QACA,OACA,OAggGE0J,SA7/Fc,CAChB,MACA,YACA,YACA,mBACA,6BACA,wBACA,mBACA,oBACA,mBACA,gBACA,wBACA,8BACA,sBACA,YACA,2BACA,kCACA,6BACA,iCACA,SACA,SACA,SACA,UACA,YACA,YACA,eACA,iBACA,qBACA,aACA,mBACA,eACA,mBACA,eACA,eACA,eACA,mBACA,mBACA,cACA,gBACA,YACA,kBACA,eACA,qBACA,aACA,eACA,YACA,gBACA,YACA,aACA,eACA,eACA,gBACA,oBACA,YACA,gBACA,oBACA,aACA,cACA,eACA,mBACA,iBACA,mBACA,gBACA,kBACA,iBACA,iBACA,oBACA,iBACA,oBACA,2BACA,mBACA,yBACA,oBACA,4BACA,0BACA,sBACA,0BACA,cACA,uBACA,2BACA,sBACA,oBACA,uBACA,uBACA,wBACA,qBACA,qBACA,wBACA,yBACA,kCACA,0BACA,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,yBACA,kCACA,yBACA,eACA,0BACA,0BACA,wBACA,2BACA,0BACA,0BACA,wBACA,iBACA,2BACA,0BACA,iBACA,yBACA,uBACA,wBACA,mBACA,4BACA,mBACA,uBACA,uBACA,qBACA,kBACA,mBACA,0BACA,6BACA,0BACA,iCACA,8BACA,8BACA,0BACA,oBACA,kBACA,oBACA,yBACA,2BACA,mBACA,sBACA,uBACA,sBACA,oBACA,mBACA,qBACA,0BACA,0BACA,wBACA,mBACA,8BACA,uBACA,gCACA,uBACA,2BACA,6BACA,wBACA,iCACA,0BACA,qBACA,mBACA,uBACA,yBACA,oBACA,gCACA,iCACA,wBACA,yBACA,iBACA,uBACA,mBACA,wBACA,yBACA,iCACA,6BACA,8BACA,4BACA,8BACA,gBACA,gBACA,OACA,wBACA,2BACA,yBACA,4BACA,uBACA,2BACA,uBACA,kBACA,cACA,iCACA,qBACA,eACA,gBACA,mCACA,uCACA,oBACA,gBACA,gBACA,cACA,qBACA,uBACA,kBACA,qBACA,kBACA,cACA,oBACA,kBACA,sBACA,aACA,cACA,cACA,cACA,gBACA,cACA,oBACA,kBACA,cACA,qBACA,uBACA,cACA,gBACA,cACA,eACA,cACA,aACA,eACA,yBACA,gBACA,qBACA,iBACA,oBACA,0BACA,qBACA,wBACA,sBACA,2BACA,wBACA,2BACA,2BACA,yBACA,sBACA,0BACA,0BACA,yBACA,wBACA,oBACA,oBACA,0BACA,qBACA,wBACA,sBACA,2BACA,wBACA,yBACA,sBACA,sBACA,uBACA,wBACA,yBACA,OACA,SACA,MACA,QACA,gBACA,oBACA,mBACA,uBACA,mBACA,mBACA,sBACA,qBACA,qBACA,qBACA,kBACA,oBACA,oBACA,mBACA,mBACA,wBACA,oBACA,yBACA,iBACA,sBACA,kBACA,uBACA,sBACA,2BACA,iBACA,kBACA,gBACA,gBACA,uBACA,kBACA,kBACA,mBACA,iBACA,iBACA,wBACA,mBACA,MACA,UACA,UACA,UACA,WACA,oBACA,wBACA,oBACA,uBACA,wBACA,eACA,mBACA,uBACA,gBACA,qBACA,oBACA,eACA,uBACA,gBACA,wBACA,kBACA,0BACA,iBACA,kBACA,0BACA,oBACA,gBACA,mBACA,gBACA,iBACA,eACA,gBACA,kBACA,iBACA,kBACA,gBACA,gBACA,gBACA,iBACA,mBACA,kBACA,mBACA,oBACA,eACA,mBACA,sBACA,iBACA,iBACA,YACA,sBACA,aACA,eACA,YACA,aACA,gBACA,gBACA,cACA,qBACA,qBACA,aACA,iBACA,aACA,WACA,iBACA,WACA,kBACA,kBACA,YACA,OACA,cACA,sBACA,WACA,oBACA,oBACA,oBACA,wBACA,4BACA,oCACA,qCACA,8BACA,qBACA,qBACA,iBACA,wBACA,iBACA,wBACA,mBACA,oBACA,mBACA,oBACA,oBACA,wBACA,yBACA,wBACA,qBACA,0BACA,2BACA,4BACA,oBACA,sBACA,sBACA,oBACA,gBACA,2BACA,2BACA,uBACA,2BACA,4BACA,4BACA,qBACA,oBACA,cACA,iBACA,4BACA,4BACA,yBACA,yBACA,aACA,cACA,cACA,oBACA,qBACA,aACA,mBACA,eACA,qBACA,sBACA,wBACA,kCACA,qBACA,aACA,iBACA,iBACA,kBACA,sCACA,gBACA,kBACA,oBACA,wBACA,kBACA,gBACA,oBACA,iBACA,iBACA,4BACA,8BACA,0BACA,oBACA,iBACA,yBACA,YACA,kBACA,mBACA,kBACA,wBACA,yBACA,YACA,aACA,mBACA,oBACA,uBACA,+BACA,qBACA,iBACA,uBACA,wBACA,iBACA,uBACA,2BACA,wBACA,4BACA,qBACA,YACA,iBACA,4BACA,iBACA,kBACA,gBACA,kBACA,oBACA,wBACA,kBACA,gBACA,0BACA,yBACA,qBACA,cACA,kBACA,sBACA,mBACA,uBACA,kBACA,wBACA,4BACA,oBACA,wBACA,eACA,mBACA,uBACA,oBACA,wBACA,yBACA,6BACA,qBACA,yBACA,YACA,kBACA,mBACA,gBACA,sBACA,uBACA,4BACA,kCACA,mCACA,wBACA,8BACA,+BACA,qBACA,YACA,eACA,gBACA,sBACA,uBACA,cACA,oBACA,qBACA,sBACA,4BACA,6BACA,YACA,cACA,mBACA,0BACA,qBACA,gBACA,eACA,iBACA,kBACA,cACA,uBACA,wBACA,uBACA,uBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,wBACA,+BACA,0BACA,eACA,iBACA,cACA,mBACA,0BACA,qBACA,kBACA,eACA,qBACA,4BACA,uBACA,uBACA,uBACA,kBACA,kBACA,gBACA,gBACA,cACA,gBACA,eACA,iBACA,iBACA,kBACA,gBACA,qBACA,qBACA,iBACA,kBACA,iBACA,uBACA,sBACA,eACA,kBACA,cACA,kBACA,eACA,eACA,gBACA,aACA,kBACA,iBACA,eACA,cACA,gBACA,gBACA,iBACA,eACA,gBACA,oBACA,mBACA,mBACA,uBACA,oBACA,iBACA,gBACA,uBACA,cACA,iBACA,sBACA,qBACA,qBACA,4BACA,qBACA,4BACA,aACA,cACA,yBACA,eACA,kBACA,8BACA,oBACA,mBACA,qBACA,yBACA,yBACA,2BACA,sBACA,oBACA,uBACA,uBACA,4BACA,mBACA,mBACA,oBACA,iBACA,gBACA,kBACA,mBACA,mBACA,iBACA,mBACA,gBACA,gBACA,gBACA,gBACA,iBACA,mBACA,iBACA,gBACA,kBACA,mBACA,iBACA,eACA,gBACA,gBACA,gBACA,eACA,iBACA,OACA,OACA,eACA,sBACA,sBACA,sBACA,sBACA,2BACA,kBACA,gBACA,sBACA,uBACA,aACA,8BACA,MACA,mBACA,6BACA,6BACA,6BACA,wBACA,wBACA,gBACA,kBACA,gBACA,kBACA,iBACA,gBACA,oBACA,qBACA,mBACA,gBACA,gBACA,sBACA,YACA,cACA,cACA,kBACA,kBACA,iBACA,cACA,kBACA,gBACA,iBACA,wBACA,6BACA,sBACA,uBACA,sBACA,wBACA,mBACA,uBACA,yBACA,oBACA,sBACA,eACA,iBACA,eACA,gBACA,gBACA,QACA,WACA,qBACA,yBACA,kBACA,sBACA,mBACA,cACA,sBACA,kBACA,cACA,gBACA,iBACA,oBACA,gBACA,kBACA,gBACA,gBACA,uBACA,sBACA,gBACA,mBACA,eACA,sBACA,0BACA,kBACA,sBACA,OACA,YACA,cACA,mBACA,yBACA,oBACA,sBACA,mBACA,oBACA,sBACA,cACA,WACA,iBACA,YACA,mBACA,eACA,YACA,mBACA,iBACA,qBACA,qBACA,uBACA,+BACA,gCACA,uBACA,uBACA,4BACA,+BACA,0BACA,2BACA,mBACA,sBACA,qBACA,oBACA,oBACA,uBACA,uBACA,yBACA,4BACA,+BACA,oBACA,qBACA,qBACA,wBACA,uBACA,aACA,YACA,eACA,2BACA,gBACA,uBACA,8BACA,0BACA,wBACA,oBACA,sBACA,kCACA,8BACA,4BACA,wBACA,0BACA,+BACA,kCACA,6BACA,2BACA,0BACA,wBACA,2BACA,8BACA,yBACA,uBACA,sBACA,oBACA,cACA,oBACA,kBACA,oBACA,wBACA,oBACA,wBACA,aACA,mBACA,YACA,kBACA,WACA,WACA,kBACA,aACA,mBACA,0BACA,uBACA,sBACA,oBACA,yBACA,8BACA,wBACA,iCACA,wBACA,6BACA,2BACA,4BACA,mBACA,gBACA,cACA,gBACA,qBACA,yBACA,wBACA,4BACA,sBACA,0BACA,sBACA,0BACA,uBACA,2BACA,yBACA,6BACA,yBACA,6BACA,qBACA,yBACA,oBACA,wBACA,oBACA,wBACA,gBACA,sBACA,uBACA,gBACA,iBACA,0BACA,uBACA,sBACA,oBACA,wBACA,iCACA,2BACA,4BACA,mBACA,gBACA,cACA,gBACA,qBACA,yBACA,wBACA,4BACA,sBACA,0BACA,sBACA,0BACA,uBACA,2BACA,yBACA,6BACA,yBACA,6BACA,qBACA,yBACA,oBACA,wBACA,oBACA,wBACA,gBACA,sBACA,uBACA,eACA,gBACA,kBACA,iBACA,kBACA,WACA,gBACA,+BACA,mBACA,eACA,+BACA,cACA,eACA,cACA,yBACA,sBACA,uBACA,kBACA,aACA,YACA,iBACA,iBACA,WACA,uBACA,gBACA,kBACA,qBACA,qBACA,iBACA,mBACA,wBACA,0BACA,2BACA,2BACA,kBACA,gBACA,wBACA,wBACA,0BACA,4BACA,6BACA,6BACA,mBACA,kBACA,gBACA,oBACA,kBACA,mBACA,kBACA,iBACA,sBACA,oBACA,yBACA,aACA,QACA,WACA,UACA,gBACA,WACA,UACA,cACA,wBACA,YACA,cACA,gBACA,WACA,WACA,iCACA,YACA,8BACA,SACA,aACA,SACA,UACA,YACA,YACA,eACA,cACA,cACA,aACA,iBACA,iBACA,wBACA,yBACA,0BACA,iBACA,mBACA,uBACA,qBACA,uBACA,mBACA,uBACA,qBACA,0BACA,wBACA,wBACA,0BACA,qBACA,yBACA,yBACA,0BACA,0BACA,2BACA,0BACA,6BACA,6BACA,8BACA,0BACA,6BACA,6BACA,8BACA,+BACA,+BACA,8BACA,8BACA,8BACA,0BACA,yBACA,yBACA,0BACA,2BACA,2BACA,0BACA,0BACA,0BACA,iBACA,eACA,cACA,gBACA,0BACA,qBACA,kBACA,eACA,yBACA,sBACA,gBACA,yBACA,kBACA,0BACA,yBACA,yBACA,eACA,mBACA,eACA,wBACA,iBACA,yBACA,uBACA,mBACA,wBACA,oBACA,mBACA,cACA,cACA,qBACA,eACA,8BACA,6BACA,0BACA,qBACA,mBACA,uBACA,wBACA,yBACA,wBACA,2BACA,6BACA,6BACA,8BACA,4BACA,8BACA,gCACA,uBACA,4BACA,uBACA,4BACA,yBACA,yBACA,6BACA,2BACA,uBACA,sBACA,4BACA,mBACA,wBACA,mBACA,wBACA,eACA,wBACA,oBACA,eACA,qBACA,qBACA,qBACA,sBACA,sBACA,uBACA,sBACA,yBACA,yBACA,yBACA,sBACA,yBACA,yBACA,0BACA,qBACA,0BACA,qBACA,0BACA,qBACA,qBACA,iBACA,sBACA,iBACA,sBACA,mBACA,mBACA,oBACA,oBACA,qBACA,oBACA,uBACA,uBACA,wBACA,wBACA,yBACA,mBACA,wBACA,mBACA,wBACA,oBACA,qBACA,eACA,oBACA,eACA,oBACA,uBACA,wBACA,uBACA,uBACA,eACA,UACA,UACA,cACA,cACA,OACA,YACA,KACA,WACA,QACA,OACA,OACA,iBACA,iBACA,kBACA,kBACA,mBACA,mBACA,eACA,wBACA,sBACA,gCACA,sCACA,0CACA,aACA,kBACA,aACA,qBACA,wBACA,mBACA,oBACA,mBACA,mBACA,0BACA,MACA,WACA,qBACA,kBACA,OACA,SACA,cACA,eACA,SACA,cACA,mBACA,kBACA,MACA,aACA,aACA,qBACA,6BACA,8BACA,cACA,mBACA,iBACA,mBACA,kBACA,oBACA,mBACA,qBACA,mBACA,qBACA,cACA,YACA,qBACA,YACA,mBACA,wBACA,wBACA,oBACA,qBACA,0BACA,iBACA,kBACA,eACA,mBACA,eACA,qBACA,iBACA,wBACA,iBACA,wBACA,oBACA,2BACA,wBACA,oBACA,2BACA,SACA,kBACA,wBACA,sBACA,4BACA,wBACA,4BACA,wBACA,4BACA,kBACA,kBACA,yBACA,sBACA,mBACA,mBACA,uBACA,qBACA,sBACA,gBACA,kBACA,kBACA,oBACA,wBACA,qBACA,mBACA,oBACA,qBACA,qBACA,kBACA,wBACA,mBACA,oBACA,qBACA,MACA,sBACA,gBACA,cACA,kBACA,gBACA,0BACA,eACA,sBACA,sBACA,wBACA,0BACA,kBACA,mBACA,qBACA,qBACA,sBACA,qBACA,uBACA,2BACA,sBACA,sBACA,wBACA,sBACA,wBACA,sBACA,uBACA,uBACA,uBACA,wBACA,8BACA,+BACA,oBACA,6BACA,+BACA,oBACA,oBACA,qBACA,qBACA,2BACA,oBACA,sBACA,yBACA,qBACA,qBACA,uBACA,wBACA,2BACA,oBACA,uBACA,qBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,sBACA,sBACA,sBACA,oBACA,oBACA,oBACA,uBACA,uBACA,uBACA,mBACA,kBACA,oBACA,sBACA,mBACA,oBACA,iBACA,wBACA,kBACA,kBACA,iBACA,mBACA,mBACA,kBACA,mBACA,iBACA,qBACA,kBACA,oBACA,WACA,iBACA,cACA,cACA,oBACA,oBACA,cACA,oBACA,iBACA,WACA,cACA,YACA,kBACA,gBACA,kBACA,gBACA,kBACA,uBACA,mBACA,mBACA,qBACA,iBACA,aACA,aACA,oBACA,cACA,eACA,eACA,cACA,kBACA,gBACA,qBACA,aACA,aACA,gCACA,sBACA,wBACA,4BACA,8BACA,uBACA,qBACA,4BACA,uBACA,2BACA,yBACA,yBACA,sCACA,4BACA,gCACA,kCACA,mCACA,sCACA,8BACA,iCACA,+BACA,gCACA,qCACA,oCACA,kCACA,6BACA,sBACA,uBACA,0BACA,uBACA,gCACA,6BACA,gCACA,4BACA,0BACA,iCACA,8BACA,gCACA,4BACA,0BACA,4BACA,6BACA,0BACA,yBACA,0BACA,0BACA,qCACA,wCACA,sCACA,wBACA,4BACA,+BACA,4BACA,qCACA,+BACA,qCACA,mCACA,iCACA,8BACA,mCACA,+BACA,6BACA,gCACA,+BACA,gCACA,6BACA,qCACA,mCACA,sCACA,sCACA,kCACA,qCACA,kCACA,mCACA,mCACA,+BACA,+BACA,8BACA,iCACA,sCACA,+BACA,+BACA,6BACA,qCACA,mCACA,iCACA,8BACA,uBACA,yBACA,sBACA,uBACA,0BACA,uBACA,uBACA,2BACA,wBACA,kCACA,6BACA,cACA,aACA,gBACA,gBACA,kBACA,iBACA,oBACA,kBACA,qBACA,oBACA,kBACA,mBACA,iBACA,mBACA,QACA,MACA,WACA,SACA,kBACA,eACA,kBACA,YACA,YACA,OACA,sBACA,yBACA,wBACA,aACA,gBACA,uBACA,wCACA,wBACA,oCACA,6BACA,yBACA,0BACA,oBACA,qBACA,4BACA,qBACA,sBACA,4BACA,sBACA,yBACA,yBACA,4BACA,4BACA,4BACA,WACA,cACA,iBACA,cACA,kBACA,gBACA,gBACA,oBACA,YACA,iBACA,qBACA,oBACA,sBACA,YACA,gBACA,eACA,kBACA,kBACA,sBACA,wBACA,oBACA,iBACA,QACA,2BACA,2BACA,cACA,mBACA,iBACA,qBACA,gBACA,kBACA,kBACA,mBACA,kBACA,eACA,uBACA,oCACA,wBACA,4BACA,qBACA,YACA,sBACA,mBACA,iBACA,0BACA,kBACA,2BACA,qBACA,qBACA,eACA,aACA,uBACA,6BACA,8BACA,uBACA,6BACA,4BACA,kCACA,wBACA,oBACA,qBACA,yBACA,qBACA,aACA,eACA,qBACA,gBACA,sBACA,OACA,MACA,2BACA,yBACA,kCACA,sCACA,6BACA,+BACA,gCACA,kCACA,iCACA,gCACA,0BACA,yBACA,yBACA,6BACA,+BACA,kCACA,6BACA,mCACA,oCACA,8BACA,6BACA,0BACA,8BACA,oCACA,qCACA,0BACA,yBACA,yBACA,qBACA,0BACA,0BACA,8BACA,qBACA,sBACA,sBACA,0BACA,uBACA,oBACA,qBACA,oBACA,0BACA,0BACA,0BACA,2BACA,2BACA,qBACA,8BACA,qBACA,aACA,iBACA,0BACA,gBACA,wBACA,6BACA,gBACA,mBACA,gBACA,eACA,qBACA,yBACA,uBACA,uBACA,wBACA,sBACA,oBACA,kBACA,kBACA,uBACA,oBACA,mBACA,wBACA,qBACA,iBACA,iBACA,mBACA,qBACA,qBACA,eACA,0BACA,kBACA,wBACA,iBACA,cACA,oBACA,+BACA,kBACA,uBACA,wBACA,4BACA,uBACA,oBACA,mBACA,MACA,OACA,aACA,aACA,SACA,iBACA,qBACA,iBACA,gBACA,oBACA,cACA,eACA,gBACA,gBACA,mBACA,aACA,iBACA,gBACA,yBACA,gBACA,oBACA,gBACA,cACA,kBACA,kBACA,sBACA,gBACA,iBACA,uBACA,eACA,gBACA,aACA,iBACA,gBACA,iBACA,qBACA,qBACA,eACA,mBACA,qBACA,cACA,kBACA,oBACA,eACA,eACA,mBACA,gBACA,iBACA,aACA,uBACA,mBACA,qBACA,gBACA,aACA,uBACA,eACA,oBACA,iBACA,qBACA,wBACA,iBACA,8BACA,eACA,4BACA,qBACA,qBACA,qBACA,yBACA,sBACA,oBACA,mBACA,uBACA,uBACA,iBACA,eACA,oBACA,qBACA,yBACA,oBACA,iBACA,MACA,yBACA,gBACA,qBACA,2BACA,0BACA,kBACA,oBACA,uBACA,mBACA,mBACA,oBACA,yBACA,yBACA,2BACA,0BACA,4BACA,4BACA,oBACA,wBACA,sBACA,iBACA,gBACA,iBACA,kBACA,kBACA,iBACA,gBACA,iBACA,kBACA,kBACA,gBACA,cACA,uBACA,8BACA,8BACA,oBACA,0BACA,qBACA,mBACA,0BACA,yBACA,sBACA,oBACA,gBACA,gBACA,cACA,uBACA,0BACA,qBACA,mBACA,oBACA,kBACA,YACA,YACA,mBACA,mBACA,sBACA,kBACA,sBACA,sBACA,qBACA,sBACA,qBACA,2BACA,yBACA,yBACA,iCACA,iCACA,wBACA,iCACA,wBACA,oBACA,0BACA,oBACA,qBACA,oBACA,mBACA,eACA,iBACA,kBACA,kBACA,oBACA,sBACA,6BACA,wBACA,gBACA,SACA,iBACA,WACA,eACA,gBACA,mCACA,2BACA,kCACA,kCACA,gCACA,mCACA,sCACA,4CACA,gCACA,yCACA,qCACA,4BACA,0BACA,gCACA,uCACA,2BACA,wBACA,+BACA,iBACA,oBACA,yBACA,sBACA,sBACA,2BACA,wBACA,8BACA,gCACA,wBACA,yBACA,sBACA,4BACA,8BACA,yBACA,sBACA,cACA,eACA,eACA,gBACA,uBACA,2BACA,mCACA,uCACA,uBACA,aACA,gBACA,gBACA,gBACA,gBACA,0BACA,2BACA,2BACA,2BACA,6BACA,gCACA,6BACA,sBACA,uBACA,oBACA,yBACA,gBACA,yBACA,oBACA,gBACA,kBACA,qBACA,gBACA,oBACA,kBACA,gBACA,mCACA,mCACA,cACA,aACA,oBACA,qBACA,mBACA,qBACA,mBACA,mBACA,mBACA,aACA,cACA,eACA,gBACA,mBACA,kBACA,iBACA,sBACA,mBACA,iBACA,iBACA,iBACA,kBACA,iBACA,sBACA,mBACA,iBACA,iBACA,iBACA,kBACA,qBACA,mBACA,mBACA,uBACA,8BACA,iBACA,qBACA,kBACA,gBACA,gBACA,sCACA,mCACA,qBACA,mBACA,oBACA,oBACA,wBACA,oBACA,wBACA,2BACA,mBACA,eACA,eACA,gBACA,mBACA,2BACA,2BACA,0BACA,qBACA,qBACA,mBACA,0BACA,qBACA,mBACA,oBACA,oBACA,wBACA,wBACA,uBACA,wBACA,uBACA,sBACA,uBACA,wBACA,kBACA,0BACA,0BACA,2BACA,2BACA,iCACA,kCACA,eACA,aACA,WACA,YACA,mBAshCEloP,OAphCY,CACd,cACA,kBACA,eACA,gBACA,gBACA,kBACA,sBACA,qBACA,aACA,MACA,WACA,eACA,WACA,aACA,aACA,MACA,uBACA,2BACA,uBACA,uBACA,aACA,eACA,aACA,aACA,eACA,iBACA,eACA,cACA,eACA,cACA,iBACA,gBACA,WACA,iBACA,kCACA,0CACA,yCACA,iCACA,yCACA,wCACA,gCACA,wCACA,qBACA,aACA,eACA,mBACA,mBACA,mBACA,uBACA,qBACA,qBACA,kBACA,SACA,gBACA,gBACA,iBACA,oBACA,oBACA,qBACA,mBACA,mBACA,oBACA,SACA,YACA,SACA,eACA,mBACA,eACA,gBACA,cACA,UACA,iBACA,eACA,kBACA,aACA,oBACA,wBACA,gBACA,iBACA,wBACA,gBACA,kBACA,wBACA,cACA,aACA,aACA,aACA,cACA,eACA,cACA,aACA,aACA,YACA,kBACA,uBACA,oBACA,gBACA,cACA,aACA,aACA,aACA,YACA,iBACA,cACA,SACA,UACA,SACA,WACA,WACA,YACA,SACA,UACA,SACA,SACA,WACA,WACA,WACA,SACA,UACA,WACA,WACA,QACA,WACA,SACA,UACA,WACA,kBACA,mBACA,iBACA,gBACA,kBACA,uBACA,eACA,oBACA,gBACA,mBACA,YACA,aACA,cACA,WACA,UACA,WACA,aACA,UACA,eACA,eACA,UACA,cACA,eACA,aACA,eACA,aACA,aACA,iBACA,wBACA,iBACA,kBACA,kBACA,yBACA,oBACA,qBACA,qBACA,yBACA,2BACA,qBACA,gBACA,oBACA,4BACA,mBACA,2BACA,YACA,cACA,oBACA,oBACA,eACA,eACA,cACA,mBACA,gBACA,gBACA,WACA,aACA,eACA,cACA,WACA,UACA,UACA,WACA,aACA,UACA,WACA,UACA,iBACA,iBACA,WACA,mBACA,qBACA,sBACA,0BACA,gCACA,2BACA,kBACA,6BACA,qBACA,qBACA,kBACA,wBACA,eACA,qBACA,mBACA,0BACA,0BACA,qBACA,oBACA,0BACA,qBACA,cACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,uBACA,aACA,eACA,YACA,aACA,kBACA,UACA,gBACA,cACA,iBACA,eACA,cACA,iBACA,cACA,gBACA,aACA,wBACA,sBACA,wBACA,sBACA,mBACA,uBACA,sBACA,uBACA,yBACA,wBACA,0BACA,sBACA,iBACA,+BACA,6BACA,+BACA,6BACA,0BACA,8BACA,6BACA,8BACA,gCACA,+BACA,iCACA,6BACA,wBACA,wBACA,uBACA,yBACA,0BACA,yBACA,2BACA,yBACA,wBACA,0BACA,SACA,eACA,aACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,oBACA,oBACA,qBACA,kBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,oBACA,oBACA,qBACA,kBACA,cACA,cACA,gBACA,iBACA,gBACA,kBACA,mBACA,kBACA,oBACA,WACA,iBACA,iBACA,sBACA,oBACA,eACA,oBACA,mBACA,WACA,aACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,gBACA,uBACA,kBACA,iBACA,mBACA,cACA,gBACA,YACA,UACA,gBACA,cACA,iBACA,kBACA,aACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,eACA,eACA,aACA,oBACA,oBACA,oBACA,eACA,aACA,YACA,YACA,eACA,YACA,UACA,YACA,UACA,cACA,WACA,aACA,SACA,cACA,QACA,aACA,aACA,gBACA,yBACA,SACA,YACA,aACA,cACA,cACA,UACA,YACA,yBACA,yBACA,yBACA,6BACA,6BACA,6BACA,wBACA,wBACA,wBACA,wBACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,eACA,gBACA,eACA,gBACA,WACA,YACA,YACA,gBACA,eACA,iBACA,iBACA,kBACA,iBACA,mBACA,aACA,gBACA,eACA,uBACA,qBACA,wBACA,uBACA,yBACA,2BACA,uBACA,mBACA,kBACA,WACA,gCACA,0BACA,+BACA,2BACA,yBACA,wBACA,qBACA,0BACA,mBACA,uBACA,qBACA,qBACA,sBACA,uBACA,qBACA,sBACA,iBACA,mBACA,iBACA,mBACA,iBACA,sBACA,eACA,8BACA,4BACA,8BACA,kCACA,4BACA,0BACA,wBACA,2BACA,6BACA,0BACA,kCACA,gBACA,kBACA,cACA,UACA,cACA,UACA,cACA,gBACA,cACA,oBACA,cACA,eACA,SACA,UACA,YACA,UACA,WACA,WACA,WACA,iBACA,UACA,SACA,iCACA,iCACA,mCACA,sCACA,kCACA,qCACA,yCACA,oCACA,yBACA,2BACA,8BACA,uBACA,0BACA,sBACA,oBACA,2BACA,qBACA,qBACA,oBACA,qBACA,uBACA,oBACA,0BACA,oBACA,oCACA,kBACA,yBACA,kBACA,mBACA,mBACA,mBACA,iBACA,iBACA,mBACA,mBACA,kBACA,oBACA,gBACA,QACA,oBACA,mBACA,mBACA,aACA,SACA,aACA,SACA,WACA,YACA,aACA,uBACA,oCACA,wBACA,SACA,SACA,SACA,YACA,YACA,UACA,aACA,SACA,gBACA,aACA,cACA,aACA,kBACA,QACA,eACA,gBACA,cACA,iBACA,iBACA,mBACA,uBACA,sBACA,sBACA,mBACA,wBACA,mCACA,wBACA,+BACA,0BACA,uBACA,0BACA,uBACA,uBACA,uBACA,uBACA,kBACA,yBACA,0BACA,sBACA,qBACA,qBACA,8BACA,sBACA,uBACA,4BACA,6BACA,uBACA,wBACA,wBACA,yBACA,6BACA,6BACA,4BACA,kBACA,wBACA,8BACA,kCACA,+BACA,gCACA,kCACA,mCACA,kCACA,gCACA,iCACA,4BACA,2BACA,2BACA,4BACA,4BACA,yBACA,0BACA,2BACA,gCACA,gCACA,KACA,kBACA,eACA,cACA,eACA,eACA,iBACA,kBACA,mBACA,oBACA,uBACA,kBACA,gBACA,iBACA,mBACA,mBACA,gBACA,qBACA,kBACA,iBACA,gBACA,qBACA,iBACA,gBACA,iBACA,gBACA,iBACA,gBACA,iBACA,kBACA,kBACA,gBACA,wBACA,yBACA,wBACA,6BACA,+BACA,kCACA,oBACA,qBACA,qBACA,4BACA,wBACA,wBACA,wBACA,6BACA,kCACA,mCACA,OACA,mBACA,sBACA,cACA,eACA,0BACA,wBACA,eACA,kBACA,mBACA,oBACA,oBACA,qBACA,kBACA,oBACA,mBACA,iBACA,qBACA,oBACA,wBACA,6BACA,gCACA,qBACA,sBACA,qBACA,uBACA,qBACA,wBACA,uBACA,sBACA,8BACA,oBACA,wBACA,4BACA,sBACA,oBACA,cACA,eACA,gBACA,gBACA,iBACA,iCACA,wCACA,kCACA,mCACA,sCACA,+BACA,iCACA,8BACA,mBACA,mBACA,kBACA,mBACA,sBACA,sBACA,qBACA,qBACA,8BACA,6BACA,8BACA,+BACA,iBACA,YACA,WACA,YACA,YACA,kBACA,cACA,cACA,2BACA,6BACA,mBACA,qBACA,2BACA,4BACA,2BACA,4BACA,2BACA,4BACA,iBACA,eACA,iBACA,WACA,kBACA,OACA,UACA,YACA,YACA,oBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,wBACA,4BACA,2BACA,qBACA,sBACA,qBACA,mBACA,sBACA,wBACA,qBACA,sBACA,uBACA,wBACA,oBACA,mBACA,sBACA,sBACA,uBACA,yBACA,SACA,SACA,YACA,eACA,aACA,aACA,YACA,YACA,UACA,SACA,WACA,YACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,UACA,YACA,UACA,cACA,UACA,YACA,cACA,WACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cACA,YACA,WACA,iBACA,UACA,cACA,YACA,WACA,YACA,WACA,WACA,cACA,SACA,QACA,mBACA,8BACA,QAwME,oBAtMuB,CACzB,QACA,sBACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,iBACA,aACA,mBACA,oBACA,uBACA,wBACA,cACA,YACA,aACA,WACA,iBACA,gBACA,qBACA,cACA,eACA,iBACA,gBACA,iBACA,eACA,kBACA,eACA,gBACA,aACA,aACA,QACA,YACA,aACA,oBACA,eACA,aACA,eACA,eACA,aACA,yBACA,MACA,WACA,WACA,oBACA,UACA,oBACA,eACA,UACA,oBACA,SACA,SACA,WACA,KACA,cACA,cACA,cACA,cACA,eACA,cACA,eACA,eACA,oBACA,cACA,iBACA,cACA,eACA,oBACA,mBACA,kBACA,QACA,QACA,cACA,UACA,aACA,UACA,eACA,mBACA,UACA,UACA,eACA,aACA,YACA,UACA,aACA,iBACA,aACA,mBACA,gBACA,wBACA,aACA,aACA,aACA,aACA,sBACA,uBACA,aACA,mBACA,mBACA,uBACA,kBACA,kBACA,YACA,YACA,cACA,qBACA,cACA,gBACA,qBACA,wBACA,wBACA,WACA,iBACA,yBACA,iBACA,yBACA,eACA,eACA,YACA,cACA,cACA,uBACA,oBACA,YACA,eACA,cACA,iBACA,oBACA,sBACA,2BACA,yBACA,oBACA,uBACA,wBACA,OACA,aACA,cACA,YACA,kBACA,aACA,aACA,QACA,SACA,oBACA,QACA,QACA,gBACA,eACA,eACA,iBACA,iBACA,aACA,iBACA,iBACA,gBACA,oBACA,mBACA,iBACA,cACA,eACA,eACA,aACA,kBACA,eACA,aACA,aACA,aACA,UACA,SACA,gBACA,oBACA,IACA,YACA,SACA,IACA,YACA,WAWAxoM,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK2lY,eAGX,aC55FApwO,EAAO59F,QAlJP,SAAY33D,GACV,MAwEM8yY,EAAW,CACf9K,QA5BU,CACV,QACA,OACA,OACA,QACA,WACA,UACA,QACA,OACA,cACA,MACA,OACA,KACA,OACA,KACA,SACA,YACA,MACA,UACA,QACA,SACA,SACA,SACA,SACA,OACA,OAIAtqe,KAnDY,CACZ,OACA,OACA,YACA,aACA,QACA,UACA,UACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,MACA,OACA,UACA,QAgCAq5S,QA3Ee,CACf,OACA,QACA,OACA,OAwEA26L,SAtEgB,CAChB,SACA,MACA,QACA,UACA,OACA,OACA,MACA,OACA,MACA,QACA,QACA,UACA,OACA,UACA,WAyDF,MAAO,CACLp5e,KAAM,KACNs/B,QAAS,CAAE,UACXkkD,SAAUg3Z,EACV3N,QAAS,KACTnkb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACL,CACEntd,UAAW,SACXrE,SAAU,CACRgsF,EAAKolY,kBACLplY,EAAKklY,iBACL,CACE34a,MAAO,IACPC,IAAK,OAIX,CACEn0C,UAAW,SACXrE,SAAU,CACR,CACEyiB,MAAO,6DACPwuc,UAAW,GAEb,CACExuc,MAAO,sFACPwuc,UAAW,GAEb,CACExuc,MAAO,wBACPwuc,UAAW,GAEb,CACExuc,MAAO,uCACPwuc,UAAW,GAEb,CACExuc,MAAO,wDACPwuc,UAAW,KAIjB,CAAE14a,MAAO,MAET,CACEl0C,UAAW,WACXyud,cAAe,OACft6a,IAAK,cACL08a,YAAY,EACZlob,SAAU,CACRg/C,EAAK8lY,WACL,CACEztd,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL+6a,YAAY,EACZzrZ,SAAUg3Z,EACV3N,QAAS,WAMrB,aCzEA5vO,EAAO59F,QAxEP,SAAc33D,GAkDZ,MAAO,CACL1nG,KAAM,OACNwjF,SAAU,CACRksZ,QApDa,CACf,UACA,SACA,QACA,SACA,SACA,WACA,QACA,SACA,MACA,MACA,QACA,MACA,UACA,QACA,KACA,OACA,OACA,QACA,OACA,QACA,WACA,UACA,eACA,OACA,OACA,SACA,SACA,KACA,OACA,OACA,YACA,MACA,QACA,UACA,QACA,QACA,WACA,mBACA,kBACA,SACA,aACA,MACA,MACA,SACA,OACA,SAOEjxL,QAAS,CACP,OACA,QACA,SAGJ/1P,SAAU,CACRg/C,EAAKylY,kBACLzlY,EAAKolY,kBACLplY,EAAK2lY,cACL,CACEttd,UAAW,OACXk0C,MAAO,eAIf,aC+GAgpM,EAAO59F,QArLP,SAAgB33D,GAqKd,MAAO,CACL1nG,KAAM,SACNixe,kBAAkB,EAClBztZ,SAvKe,CACf,OACA,UACA,cACA,cACA,YACA,cACA,iBACA,eACA,eACA,aACA,cACA,SACA,OACA,OACA,UACA,UACA,SACA,YACA,iBACA,WACA,UACA,sBACA,sBACA,QACA,UACA,SACA,UACA,UACA,QACA,UACA,MACA,MACA,WACA,QACA,OACA,QACA,WACA,UACA,KACA,OACA,UACA,QACA,UACA,MACA,KACA,aACA,aACA,SACA,MACA,UACA,YACA,SACA,SACA,SACA,SACA,eACA,QACA,SACA,YACA,MACA,WACA,QACA,WACA,UACA,SACA,QACA,OACA,QACA,OACA,OACA,YACA,aACA,WACA,OACA,UACA,OACA,OACA,QACA,SACA,QACA,MACA,YACA,OACA,QACA,OACA,UACA,UACA,OACA,WACA,MACA,MACA,SACA,SACA,aACA,OACA,UACA,YACA,QACA,MACA,OACA,OACA,WACA,WACA,WACA,QACA,OACA,UACA,UACA,QACA,SACA,QACA,SACA,UACA,OACA,YACA,SACA,UACA,YACA,gBACA,SACA,OACA,YACA,QACA,WACA,iBACA,kBACA,iBACA,YACA,YACA,OACA,OACA,MACA,QACA,WACA,QACA,UACA,OACA,QACA,OACA,YACA,YACA,UACA,cACA,QACA,OACA,OACA,gBACA,OACA,SACA,QACA,YACA,SACA,WACA,OACA,gBACA,kBACA,aACA,aACA,aACA,mBACA,QACA,aAMA96B,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK0lY,YACL1lY,EAAK6lY,aAIX,aC9GAtwO,EAAO59F,QArEP,SAAiB33D,GACf,MAAMllE,EAAQklE,EAAKllE,MAEnB,MAAO,CACLxiC,KAAM,UACNs/B,QAAS,CAAE,OACX2xc,kBAAkB,EAClByC,mBAAmB,EACnBlwZ,SAAU,CACRksZ,QAAS,CACP,QACA,WACA,eACA,OACA,QACA,SACA,YACA,YACA,QACA,SACA,WACA,OACA,MAEFjxL,QAAS,CACP,OACA,QACA,SAGJ/1P,SAAU,CACRg/C,EAAKylY,kBACLzlY,EAAKolY,kBACLplY,EAAK0lY,YACL,CACErzb,MAAO,cACP5b,MAAO,SACPwuc,UAAW,GAEb,CACE5yb,MAAO,cACPka,MAAO,4BACP04a,UAAW,GAEb,CACE5yb,MAAO,WACPka,MAAO,KACPC,IAAK,KACL08a,YAAY,EACZjE,UAAW,GAEb,CACE5yb,MAAO,OACP5b,MAAO,OACPyyc,YAAY,GAEd,CACE72b,MAAO,SACPka,MAAOzxB,EAAM1C,OAxDF,yBAwDmB0C,EAAMopc,UAAU,SAC9Ce,UAAW,IAGfE,QAAS,CACP,QACA,SAGN,aCnEA,SAASnxd,EAASA,GAAoB,IAAV0kB,EAAG7iC,UAAAsR,OAAA,QAAAuT,IAAA7kB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEjC,OADA6iC,EAAI1kB,SAAWA,EACR0kB,CACT,CAkLA68N,EAAO59F,QAhLP,SAAgB33D,GACd,MAAMllE,EAAQklE,EAAKllE,MACb6pc,EAAW,iBACXh5a,EAAU33C,EAAS,CACvBgsF,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKr0C,QACH,UACA,OACA,CACEs5a,UAAW,EACXjkb,SAAU,CACR,CAEEuL,MAAO,OACP04a,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,mBAMX2qb,EAAS,CACb7+d,UAAW,SACXk0C,MAAO,iBACPvL,SAAU,CAAEg/C,EAAKglY,mBAEbgO,EAASh/d,EAAS,CACtBgsF,EAAK4lY,mBACL5lY,EAAK2lY,gBAEDgN,EAAS3+d,EAAS,CACtB,CACEu4C,MAAO,MACPC,IAAK,OAEP,CACED,MAAO,MACPC,IAAK,OAEP,CACED,MAAO,OACPC,IAAK,OACLy4a,UAAW,IAEbjlY,EAAKklY,iBACLllY,EAAKolY,mBAEP,CAAE/sd,UAAW,WAGPs8d,EAAmB,CACvBl+c,MAAO,CACL,yDACA,MACAupE,EAAK4kY,qBAEPvyb,MAAO,CACL,EAAG,UACH,EAAG,gBA0DP,MAAO,CACL/5C,KAAM,SACNwjF,SAAU,CACR,oBAAqB,aACrBi7N,QAAS,kBACTr5S,KA5DU,CACZ,OACA,QACA,OACA,MACA,OACA,UACA,QACA,SACA,QAoDEsqe,QAlDa,CAEf,MACA,KACA,KACA,SACA,QAEA,WACA,SACA,WACA,YACA,SACA,UACA,YACA,eACA,QACA,QACA,YACA,OACA,KACA,OACA,MACA,QACA,SACA,OACA,QACA,UACA,WACA,QACA,SACA,MACA,QACA,UACA,aACA,UACA,MACA,SACA,UACA,SACA,aACA,QAWAhnb,SAAU,CACRg/C,EAAKymY,QAAQ,CACXv8D,OAAQ,SACR+6D,UAAW,KAEbt5a,EACAgnb,EACAuE,EACAlE,EACA2B,EACA,CACEt8d,UAAW,OACXk0C,MAAO,aACP04a,UAAW,GAEb,CAEE5sd,UAAW,OACXk0C,MAAOo4a,EAAW,UAClBM,UAAW,GAEb,CAGE14a,MAAO,KACPC,IAAK,IACLy4a,UAAW,EACXjkb,SAAU,CACR2K,EACAgnb,EACAuE,EACAlE,EACA,SAGJ,CAEE36d,UAAW,SACXk0C,MAAO,UAAYzxB,EAAMopc,UAAUS,EAAW,KAC9CU,cAAc,EACd74a,IAAKm4a,EAAW,IAChBM,UAAW,IAGfE,QAAS,QAEb,YC3EA5vO,EAAO59F,QAvGP,SAAc33D,GACZ,MAAO,CACL1nG,KAAM,OACNixe,kBAAkB,EAClBvob,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAO,gEACP04a,UAAW,IAGbjlY,EAAKr0C,QACH,wBACA,KACA,CAAEs5a,UAAW,IAEf,CACE14a,MAAO,qBACPC,IAAK,IACL4gb,YAAa,OACb/H,cAAc,EACd6D,YAAY,GAEd,CACE7wd,UAAW,MACXk0C,MAAO,SACPvL,SAAU,CACR,CACE3oC,UAAW,eACXk0C,MAAO,QAET,CACEl0C,UAAW,cACXk0C,MAAO,YAET,CACEl0C,UAAW,iBACXk0C,MAAO,cAET,CACEA,MAAO,QACPC,IAAK,QACLxL,SAAU,CACR,CACEuL,MAAO,cACPC,IAAK,QACLw8a,aAAa,EACb+B,gBAAgB,EAChB/pb,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAO,SAETyzC,EAAKklY,iBACLllY,EAAKolY,kBACL,CACE74a,MAAO,OACP04a,UAAW,OAMrB,CACE14a,MAAO,UACPC,IAAK,UACL08a,YAAY,EACZlob,SAAU,CACR,CACEuL,MAAO,YACPC,IAAK,OACLw8a,aAAa,EACb+B,gBAAgB,EAChB/pb,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAO,OACP04a,UAAW,GAEbjlY,EAAKklY,iBACLllY,EAAKolY,kBACL,CACE74a,MAAO,OACP04a,UAAW,SAQzB,CAAE14a,MAAO,iBACT,CACEA,MAAO,MACPC,IAAK,KACL4gb,YAAa,OACb/H,cAAc,EACd6D,YAAY,IAIpB,aCmJA3zO,EAAO59F,QAxPP,SAAoB33D,GAClB,MAAMllE,EAAQklE,EAAKllE,MACbu7c,EAAY,CAChBzL,SAAU,WACV8G,SAAU,CACR,SACA,WACA,aACA,YACA,SACA,WACA,OACA,UACA,MACA,OACA,KACA,KACA,QACA,UACA,MACA,MACA,SACA,MACA,SACA,UACA,eACA,SACA,WACA,WACA,UACA,SACA,OACA,OACA,UAoBE8M,EAA0B,kBAC1BC,EAAiB,wCAEjBC,EAAS5jd,EAAMspc,OALU,aACA,aAO7Boa,EACAC,GAGIE,EAAmB7jd,EAAM1C,OAC7B0C,EAAMojc,SAAS,cACfwgB,EACA5jd,EAAMqpc,iBAAiBrpc,EAAM1C,OAXF,UAazBsmd,KAKEE,EAAmB9jd,EAAM1C,OAC7B,IACAomd,EAAyB,IACzBC,EACA,UAGII,EAAiC,CAAEtyb,MAAOoyb,GAE1CG,EAAmB9+Y,EAAK6/C,QAAQg/V,EAAg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,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEIsD,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAIIjB,EAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGIuL,EAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGIvK,EAAY,GAAGj+c,OACnBuod,EACAxL,EACAuL,GAmmBFnrP,EAAO59F,QAvlBP,SAAoB33D,GAClB,MAAMllE,EAAQklE,EAAKllE,MAcb+ld,EAAalc,EACb9oB,EACG,KADHA,EAEC,MAIDilC,EAAU,CACdv0b,MAAO,sBACPC,IAAK,4BAKLu0b,kBAAmBA,CAACtqd,EAAO3nB,KACzB,MAAMkye,EAAkBvqd,EAAM,GAAGtvB,OAASsvB,EAAMt+B,MAC1CmvM,EAAW7wK,EAAMpH,MAAM2xd,GAC7B,GAIe,MAAb15S,GAGa,MAAbA,EAGA,YADAx4L,EAAS6zd,cAiBX,IAAIlud,EAXa,MAAb6yL,IAtCc25S,EAACxqd,EAAK9tB,KAAgB,IAAd,MAAE67O,GAAO77O,EACrC,MAAMk+C,EAAM,KAAOpwB,EAAM,GAAG34B,MAAM,GAElC,OAAgB,IADJ24B,EAAMpH,MAAM6P,QAAQ2nB,EAAK29L,EACpB,EAsCRy8P,CAAcxqd,EAAO,CAAE+tN,MAAOw8P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ACA,SA2QAjxL,QAzPmB,CACnB,OACA,SACA,aACA,aACA,MACA,MACA,QACA,QACA,QACA,gBACA,YACA,YACA,MACA,QACA,QACA,QACA,eACA,YACA,YACA,gBACA,eACA,uBACA,qBACA,cACA,UACA,YACA,UACA,QACA,KACA,UACA,UACA,KACA,SACA,QACA,SACA,OACA,QACA,SACA,UAmNA26L,SAjMoB,CACpB,gBACA,kBACA,eACA,eACA,kBACA,gBACA,qBACA,iBACA,gBACA,cACA,iBACA,oBACA,mBACA,iBACA,MACA,gBACA,QACA,iBACA,WACA,SACA,WACA,YACA,SACA,YACA,OACA,cACA,oBACA,iBACA,mBACA,QACA,UACA,SACA,UACA,OACA,OACA,YACA,QACA,YACA,MACA,QACA,UACA,aACA,aACA,aACA,qBACA,YACA,aACA,SACA,UACA,WACA,UACA,SACA,QACA,aACA,SACA,aACA,UACA,QACA,WACA,WACA,WACA,aACA,cACA,gBACA,cACA,OACA,oBACA,OACA,cACA,cACA,WACA,OACA,iBACA,YACA,qBACA,OACA,UACA,UACA,UACA,WACA,YACA,OACA,KACA,WACA,YACA,WACA,SACA,iBACA,cACA,aACA,eACA,YACA,MACA,SACA,QACA,QACA,QACA,OACA,UACA,qBACA,wBACA,aACA,WACA,WACA,iBACA,gBACA,YACA,OACA,SACA,SACA,cACA,UACA,mBACA,SACA,SACA,aACA,UACA,SACA,eACA,mBACA,gBACA,OACA,mBACA,oBACA,OACA,yBACA,MACA,YACA,WACA,QACA,sBACA,OACA,gBACA,MACA,QACA,aACA,eACA,oBACA,MACA,SACA,OACA,qBACA,YACA,eACA,eACA,gBACA,kBACA,gBACA,SACA,mBACA,WACA,YACA,qBACA,SACA,cACA,OACA,sBACA,OACA,cACA,QACA,QACA,OACA,YACA,UACA,OACA,UACA,SACA,SACA,SACA,QACA,mBACA,oBACA,gBACA,gBACA,QACA,WACA,YACA,WACA,MACA,SACA,aACA,WACA,SACA,gBACA,cACA,YAWIyQ,EAAU,CACdrma,SAAUg3Z,EACV3N,QAAS,OAsBLid,EAAgB,CACpB/pe,UAAW,QACXk0C,MAAO,OACPC,IAAK,KACLsvB,SAAUg3Z,GAGNuP,EAAwB,CAC5Bhqe,UAAW,WACXk0C,MAAO,MAAQ21b,GAIXvP,EAAS,CACbt6d,UAAW,SACX2oC,SAAU,CACRg/C,EAAKglY,iBACLod,EACAC,GAEFrue,SAAU,CACR,CACEu4C,MAAO,SACPC,IAAK,SACLy4a,UAAW,IAEb,CACE14a,MAAO,OACPC,IAAK,UAKL81b,EAAU,CACdjqe,UAAW,SACX2oC,SAAU,CACRg/C,EAAKglY,iBACLod,EACAC,GAEF91b,MAAO,IACPC,IAAK,KAGD+1b,EAAY,CAChBlqe,UAAW,OACXk0C,MAAO,IAAM21b,GAoCf,OAlBAC,EAAQ7pf,KAAO,QACf6pf,EAAQnhc,SAAW,CAnFJ,CACb3oC,UAAW,SAQXk0C,MAAO,qIACP04a,UAAW,GAGA,CACX5sd,UAAW,SACXk0C,MAAO,8BAuEPomb,EACA2P,EACAC,EArBc,CACdlqe,UAAW,UACXrE,SAAU,CACR,CACEu4C,MAAO,KACPC,IAAK,KACLy4a,UAAW,IAEb,CACE14a,MAAO,IACPC,IAAK,OAaTwzC,EAAKylY,kBACL,CACEptd,UAAW,UACXk0C,MACE,+DAEJ,CAAEA,MAAO,OAEX61b,EAAcphc,SAAWmhc,EAAQnhc,SAE1Bmhc,CACT,aCtbA,IAAI7C,EAAgB,kBAChBa,EAAO,OAAOb,KACdC,EAAY,8BACZa,EAAU,CACZ/ne,UAAW,SACXrE,SAAU,CAGR,CAAEu4C,MAAO,QAAQ+yb,OAAmBa,aAAgBA,gBACrCb,gBAEf,CAAE/yb,MAAO,OAAO+yb,OAAmBa,iCACnC,CAAE5zb,MAAO,IAAI4zb,gBACb,CAAE5zb,MAAO,OAAO+yb,eAGhB,CAAE/yb,MAAO,aAAagzb,WAAmBA,UAAkBA,gBAC5CD,gBAGf,CAAE/yb,MAAO,kCAGT,CAAEA,MAAO,YAAYgzb,cAGrB,CAAEhzb,MAAO,0BAGT,CAAEA,MAAO,kCAEX04a,UAAW,GA6Pb1vO,EAAO59F,QAjPP,SAAgB33D,GACd,MAAM8yY,EAAW,CACf9K,QACE,wYAKF0J,SACE,kEACF36L,QACE,mBAYEyrM,EAAQ,CACZnqe,UAAW,SACXk0C,MAAOyzC,EAAK4kY,oBAAsB,KAI9BqO,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,OACPC,IAAK,KACLxL,SAAU,CAAEg/C,EAAK2lY,gBAEb+O,EAAW,CACfr8d,UAAW,WACXk0C,MAAO,MAAQyzC,EAAK4kY,qBAEhB+N,EAAS,CACbt6d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,MACPC,IAAK,cACLxL,SAAU,CACR0zb,EACAzB,IAMJ,CACE1mb,MAAO,IACPC,IAAK,IACL24a,QAAS,KACTnkb,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,IACPC,IAAK,IACL24a,QAAS,KACTnkb,SAAU,CACRg/C,EAAKglY,iBACL0P,EACAzB,MAKRA,EAAMjyb,SAAS7rB,KAAKw9c,GAEpB,MAAM8P,EAAsB,CAC1Bpqe,UAAW,OACXk0C,MAAO,gFAAkFyzC,EAAK4kY,oBAAsB,MAEhH6b,EAAa,CACjBpoe,UAAW,OACXk0C,MAAO,IAAMyzC,EAAK4kY,oBAClB5jb,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,KACLxL,SAAU,CACRg/C,EAAK6/C,QAAQ8yV,EAAQ,CAAEt6d,UAAW,WAClC,WASFqqe,EAAqBtC,EACrBuC,EAAwB3iZ,EAAKr0C,QACjC,OAAQ,OACR,CAAE3K,SAAU,CAAEg/C,EAAKwlY,wBAEfod,EAAoB,CAAE5ue,SAAU,CACpC,CACEqE,UAAW,OACXk0C,MAAOyzC,EAAK4kY,qBAEd,CACEr4a,MAAO,KACPC,IAAK,KACLxL,SAAU,MAGR6hc,EAAqBD,EAI3B,OAHAC,EAAmB7ue,SAAS,GAAGgtC,SAAW,CAAE4hc,GAC5CA,EAAkB5ue,SAAS,GAAGgtC,SAAW,CAAE6hc,GAEpC,CACLvqf,KAAM,SACNs/B,QAAS,CACP,KACA,OAEFkkD,SAAUg3Z,EACV9xb,SAAU,CACRg/C,EAAKr0C,QACH,UACA,OACA,CACEs5a,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,iBAKfyzC,EAAKulY,oBACLod,EA5HwB,CAC1Btqe,UAAW,UACXk0C,MAAO,mCACP86a,OAAQ,CAAErmb,SAAU,CAClB,CACE3oC,UAAW,SACXk0C,MAAO,WAwHTi2b,EACAC,EACAhC,EACA,CACEpoe,UAAW,WACXyud,cAAe,MACft6a,IAAK,QACLw8a,aAAa,EACbE,YAAY,EACZptZ,SAAUg3Z,EACV7N,UAAW,EACXjkb,SAAU,CACR,CACEuL,MAAOyzC,EAAK4kY,oBAAsB,UAClCoE,aAAa,EACb/D,UAAW,EACXjkb,SAAU,CAAEg/C,EAAK+lY,wBAEnB,CACE1td,UAAW,OACXk0C,MAAO,IACPC,IAAK,IACLsvB,SAAU,UACVmpZ,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL+6a,YAAY,EACZzrZ,SAAUg3Z,EACV7N,UAAW,EACXjkb,SAAU,CACR,CACEuL,MAAO,IACPC,IAAK,SACLu+a,gBAAgB,EAChB/pb,SAAU,CACR4hc,EACA5iZ,EAAKulY,oBACLod,GAEF1d,UAAW,GAEbjlY,EAAKulY,oBACLod,EACAF,EACAhC,EACA9N,EACA3yY,EAAK2lY,gBAGTgd,IAGJ,CACEp2b,MAAO,CACL,wBACA,MACAyzC,EAAK4kY,qBAEPiE,WAAY,CACV,EAAG,eAEL/sZ,SAAU,wBACVtvB,IAAK,WACL08a,YAAY,EACZ/D,QAAS,qBACTnkb,SAAU,CACR,CAAE8lb,cAAe,iDACjB9mY,EAAK+lY,sBACL,CACE1td,UAAW,OACXk0C,MAAO,IACPC,IAAK,IACL64a,cAAc,EACd6D,YAAY,EACZjE,UAAW,GAEb,CACE5sd,UAAW,OACXk0C,MAAO,UACPC,IAAK,eACL64a,cAAc,EACd8D,WAAW,GAEbsZ,EACAhC,IAGJ9N,EACA,CACEt6d,UAAW,OACXk0C,MAAO,kBACPC,IAAK,IACL24a,QAAS,MAEXud,GAGN,YCjHAntP,EAAO59F,QAlKP,SAAe33D,GACb,MAAM8iZ,EAAiB,mBACjBC,EAAiB,yBACjBC,EAAiB,WACjBC,EAAiB,CACrBrY,SAAUkY,EAAiB,WAC3B/rM,QACE,uGAEF26L,SACE,yMAGF1J,QACE,2hCAkBEkb,EAAeljZ,EAAKr0C,QACxB,UACA,SACA,CAAEs5a,UAAW,IAETke,EAAkB,CACtB9qe,UAAW,OACXk0C,MAAO,kBACP86a,OAAQ,CACN76a,IAAK,mBACL28a,WAAW,EACXnob,SAAU,CAAEkic,KAGVE,EAAc,CAClB/qe,UAAW,OACXk0C,MAAO,iBAAmBw2b,GAEtBM,EAAmB,CACvBhre,UAAW,SACXk0C,MAAO,IAAOu2b,EAAiB,KAE3BQ,EAAa,CACjBtjZ,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAK6/C,QAAQ7/C,EAAK2lY,cAAe,CAAEp5a,MAAOyzC,EAAK8kY,YAAc,yBAC7D9kY,EAAK6/C,QAAQ7/C,EAAKklY,iBAAkB,CAAEC,QAAS,OAC/CnlY,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAED,QAAS,OAChD,CACE9sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEP,CACEx4C,SAAU,CACR,CAAEu4C,MAAO,OAASu2b,GAClB,CACEv2b,MAAO,IACPC,IAAK,OACL24a,QAAS,SAGf,CACE9sd,UAAW,OACXk0C,MAAO,SACPC,IAAKs2b,EACL3d,QAAS,OAEX,CACE9sd,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,gBAAkBu2b,EACzB7d,UAAW,GAEb,CAAE14a,MAAO,iBAGb,CACEA,MAAO,aACP04a,UAAW,EACXjkb,SAAU,CAAEqic,IAEd,CACEhre,UAAW,QACXyud,cAAe,SACfqC,WAAW,EACX38a,IAAK,SACLxL,SAAU,CAAEg/C,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAOu2b,EAAiB,8BAGxE,MAAO,CACLxqf,KAAM,QACNs/B,QAAS,CACP,KACA,eAEF2xc,kBAAkB,EAClBztZ,SAAUmna,EACVjic,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAOy2b,EACP/d,UAAW,EACXoC,OAAQ,CACN76a,IAAK,OAASu2b,EACd5Z,WAAW,EACXlE,UAAW,EACXjkb,SAAU,CAAEkic,KAGhBC,EACAC,EACA,CACE/qe,UAAW,OACXk0C,MAAO,wBACP86a,OAAQ,CACN76a,IAAK,4BACLsvB,SAAUmna,EACVjic,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAOy2b,EACP/d,UAAW,EACXoC,OAAQ,CACN76a,IAAK,mBAAqBu2b,EAC1B5Z,WAAW,EACXnob,SAAU,CAAEkic,KAGhBC,EACAC,GACAhrd,OAAOkrd,KAGb,CACEjre,UAAW,OACXk0C,MAAO,MACP04a,UAAW,GAEb,CACE5sd,UAAW,OACXk0C,MAAO,MACPC,IAAK,UACLy4a,UAAW,KAEb7sc,OAAOkrd,GAEb,aC6GA/tP,EAAO59F,QA7QP,SAAe33D,GACb,MAiDMujZ,EAAwB,CAC5B,CAAEh3b,MAAO,oBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,yBAkDLi3b,EAA0B,CAhDP,CACvBnre,UAAW,UACXk0C,MAAO,KACP04a,UAAW,EACXjkb,SAAU,CACR,CACEumb,YAAY,EACZh7a,MAhEQyzC,EAAKllE,MACespc,UAAU,CAC1C,8CACA,0CACA,mCACA,6CACA,yBACA,uBACA,gCACA,uBACA,8DACA,mDACA,wBACA,gBACA,yDACA,UACA,2DACA,8EACA,sEACA,yEACA,4EACA,yDACApqe,KAAIy8R,GAAQA,EAAO,sBA4CjB,CACE8wM,YAAY,EACZh7a,MA7CW,IAAIhxB,OAAO,CAI1B,wDAIA,+CAKA,iCAEA,uBACA,kBACA,kBACA,kBACA,sBACA,eACAvhC,KAAIiyD,GAAWA,EAAU,mBAAkBtgD,KAAK,OA0B9C,CACE47d,YAAY,EACZvzd,SAAUuve,GAEZ,CACEhc,YAAY,EACZtC,UAAW,EACXjxd,SAhCc,CAClB,CAAEu4C,MAAO,cACT,CAAEA,MAAO,mBAkCS,CAClBl0C,UAAW,SACX4sd,UAAW,EACX14a,MAAO,SAEiB,CAExBv4C,SAAUuve,GACY,CACtBlre,UAAW,WACX4sd,UAAW,EACX14a,MAAO,UAEa,CACpBl0C,UAAW,OACXk0C,MAAO,2BACPC,IAAK,IACLy4a,UAAW,IAEGjlY,EAAKr0C,QACnB,IACA,IACA,CAAEs5a,UAAW,KAUTwe,EAA0B,CAC9Bl3b,MAAO,KACPC,IAAK,KACLy4a,UAAW,EACXjkb,SAAU,CACR,UACGwic,IAGDE,EAAkB1jZ,EAAK6/C,QAC3B4jW,EACA,CACExe,UAAW,EACXsC,YAAY,EACZvmb,SAAU,CACRyic,KACGD,KAIHG,EAAoB,CACxBp3b,MAAO,KACPC,IAAK,KACL+6a,YAAY,EACZtC,UAAW,EACXjkb,SAAU,CACRyic,KACGD,IAGDI,EAAgB,CACpBr3b,MAAO,MACP04a,UAAW,GAEP4e,EAAa,CAAEH,GACfI,EAAa,CAAEH,GACfI,EAAoB,SAASvgZ,EAAKwgZ,GACtC,MAAO,CACLhjc,SAAU,CAAE4ic,GACZvc,OAAQ,CACNpC,UAAW,EACXjkb,SAAUwiD,EACV6jY,OAAQ2c,GAGd,EACMC,EAAS,SAASC,EAAQF,GAC9B,MAAO,CACLz3b,MAAO,OAAS23b,EAAS,kBACzBpoa,SAAU,CACR8uZ,SAAU,cACV5C,QAAS,KAAOkc,GAElBjf,UAAW,EACXjkb,SAAU,CAAE4ic,GACZvc,OAAQ2c,EAEZ,EACMG,EAAY,SAASC,EAASJ,GAClC,OAAOhkZ,EAAK6/C,QACV,CACEtzF,MAAO,wCAA0C63b,EAAU,OAC3Dtoa,SAAU,CACR8uZ,SAAU,cACV5C,QAAS,WAEX/C,UAAW,GAEb8e,EAAkBF,EAAYG,GAElC,EACMK,EAA2B,WAA0B,IAAzBC,EAASzuf,UAAAsR,OAAA,QAAAuT,IAAA7kB,UAAA,GAAAA,UAAA,GAAG,SAC5C,OAAOmqG,EAAKkmY,kBAAkB,CAC5B7td,UAAWise,EACX/3b,MAAO,YACPC,IAAK,YACL64a,cAAc,EACd6D,YAAY,EACZ3B,YAAY,GAEhB,EACMgd,EAAyB,SAASH,GACtC,MAAO,CACL/re,UAAW,SACXm0C,IAAK,gBAAkB43b,EAAU,OAErC,EAEMI,EAA4B,WAChC,MAAO,CACLvf,UAAW,EACX14a,MAAO,KACP86a,OAAQ,CACNE,YAAY,EACZvmb,SAAU,CACR,CACE3oC,UARkCxiB,UAAAsR,OAAA,QAAAuT,IAAA7kB,UAAA,GAAAA,UAAA,GAAG,SASrC22D,IAAK,SACL+6a,YAAY,EACZvmb,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,KACLy4a,UAAW,EACXjkb,SAAU,CAAE,aAO1B,EAkCA,MAAO,CACL1oD,KAAM,QACNs/B,QAAS,CAAE,OACXopB,SAAU,IApCK,IACZ,CACD,OACA,aACAhnD,KAAIkqf,GAAUD,EAAOC,EAAQ,CAAEljc,SAAU,CAAEqjc,SAC7CJ,EAAO,OAAQF,EAAkBF,EAAY,CAAE7ic,SAAU,CAAEqjc,QAC3DJ,EAAO,aAAcF,EAAkBF,EAAY,CAAE7ic,SAAU,CAC7Dwjc,IACAH,QAEFJ,EAAO,MAAO,CAAEjjc,SAAU,CACxBwjc,EAA0B,QAC1BA,EAA0B,WAE5BP,EAAO,WAAY,CAAEjjc,SAAU,CAAEwjc,EAA0B,WAC3DP,EAAO,OAAQF,EAAkBD,EAAY,CAAE9ic,SAAU,CAAEwjc,EAA0B,eAClF,GAAGpsd,UAAU,CACd,GACA,OACAp+B,KAAIohC,GAAU,CACd+od,EAAU,WAAa/od,EAAQmpd,EAAuB,WAAanpd,IACnE+od,EAAU,eAAiB/od,EAAQ2od,EAAkBF,EAAYU,EAAuB,eAAiBnpd,QACtG,CACD,GACA,IACA,KACAphC,KAAI2V,GACJw0e,EAAUx0e,EAAS,WAAayrB,EAAQ2od,EAAkBD,EAAYS,EAAuB50e,EAAS,WAAayrB,WAGvH+od,EAAU,SAAUJ,EAAkBD,EAAYC,EAAkBF,EAAYU,EAAuB,iBAQlGf,GAGT,aCrPAjuP,EAAO59F,QAtBP,SAAc33D,GACZ,MAAO,CACL1nG,KAAM,OACN0oD,SAAU,CACR,CACE3oC,UAAW,YACXoe,MAAO,WACPwuc,UAAW,IAEb,CACE5sd,UAAW,YACXoe,MAAO,cAET,CACEpe,UAAW,UACXoe,MAAO,MAETupE,EAAKylY,mBAGX,aCoEAlwO,EAAO59F,QAzFP,SAAc33D,GACZ,MAAMykZ,EAAQ,4BAMR7R,EAAS,CACbvgc,MAAO,SACPka,MAAO,KACPC,IAAK,YACL+6a,YAAY,EACZtC,UAAW,EACXjkb,SAAU,CACR,CACE3O,MAAO,SACPka,MAAO,IACPC,IAAK,KAEP,CACEna,MAAO,UACP5b,MAnBW,CACf,OACA,QACA,MAgBoB9qB,KAAK,MAEvB,CACE0mC,MAAO,WACP5b,MAAO,0BAET,CACE4b,MAAO,WACP5b,MAAO,+CAIPiud,EAAkB,CACtBjud,MAAO,CACLgud,EACA,UAEFpyc,MAAO,CACL,EAAG,WAEL2O,SAAU,CAAE4xb,IAGd,OADAA,EAAO5xb,SAASvZ,QAAQi9c,GACjB,CACLpsf,KAAM,OACN0oD,SAAU,CAER,CACEvqB,MAAO,CACL,KACAgud,EACA,UAEFpyc,MAAO,CACL,EAAG,cACH,EAAG,WAILg1b,OAAQ,CACNrmb,SAAU,CACR,CACEvqB,MAAO,KACP4b,MAAO,iBAIb2O,SAAU,CACR4xb,IAIJ,CACEn8c,MAAO,CACL,KACAgud,EACA,MAEFpyc,MAAO,CACL,EAAG,cACH,EAAG,UACH,EAAG,iBAKb,aC9FA,MAyKMwlc,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACAr0c,OAAOisC,UAGHqoa,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACAt0c,OAAOisC,UAGHsoa,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACAv0c,OAAOisC,UAEH2sX,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA54Z,OAAOisC,UAGHi1a,EAAmB5M,EAAe3/c,OAAO4/c,GAAiBv0c,OAAOisC,UA4OvE6lL,EAAO59F,QAhOP,SAAc33D,GACZ,MAAMqsD,EA1zBOrsD,KACN,CACLi4Y,UAAW,CACT5lc,MAAO,OACPka,MAAO,cAET2rb,cAAel4Y,EAAKwlY,qBACpB2S,SAAU,CACR9lc,MAAO,SACPka,MAAO,mDAETwnb,kBAAmB,CACjB17d,UAAW,WACXk0C,MAAO,gBAET6rb,wBAAyB,CACvB/lc,MAAO,gBACPka,MAAO,KACPC,IAAK,KACL24a,QAAS,IACTnkb,SAAU,CACRg/C,EAAKklY,iBACLllY,EAAKolY,oBAGTiT,gBAAiB,CACfhmc,MAAO,SACPka,MAAOyzC,EAAK6kY,UAAL7kY,kGASPilY,UAAW,GAEbqT,aAAc,CACZjge,UAAW,OACXk0C,MAAO,+BAkxBG05a,CAAMjmY,GACd4kZ,EAAqBD,EAGrBhgB,EAAW,UACXkgB,EAAkB,IAAMlgB,EAAW,QAAUA,EAAW,OAIxDmgB,EAAQ,GAAUC,EAAc,GAEhCC,EAAc,SAASx5e,GAC3B,MAAO,CAEL6M,UAAW,SACXk0C,MAAO,KAAO/gD,EAAI,MAAQA,EAE9B,EAEMy5e,EAAa,SAAS3sf,EAAMi0D,EAAO04a,GACvC,MAAO,CACL5sd,UAAW/f,EACXi0D,MAAOA,EACP04a,UAAWA,EAEf,EAEMigB,EAAc,CAClBta,SAAU,UACV5C,QA1BmB,kBA2BnBvgb,UAAWqwb,EAAense,KAAK,MAG3Bw5e,EAAc,CAElB54b,MAAO,MACPC,IAAK,MACLxL,SAAU+jc,EACVjpa,SAAUopa,EACVjgB,UAAW,GAIb8f,EAAY5vd,KACV6qE,EAAKulY,oBACLvlY,EAAKwlY,qBACLwf,EAAY,KACZA,EAAY,KACZ34V,EAAMgsV,gBACN,CACE9rb,MAAO,oBACP86a,OAAQ,CACNhvd,UAAW,SACXm0C,IAAK,WACL08a,YAAY,IAGhB78U,EAAM8rV,SACNgN,EACAF,EAAW,WAAY,MAAQtgB,EAAU,IACzCsgB,EAAW,WAAY,OAAStgB,EAAW,OAC3CsgB,EAAW,WAAY,cACvB,CACE5se,UAAW,YACXk0C,MAAOo4a,EAAW,QAClBn4a,IAAK,IACLw8a,aAAa,EACbE,YAAY,GAEd78U,EAAM4rV,UACN,CAAEnR,cAAe,WACjBz6U,EAAM0nV,mBAGR,MAAMqR,EAAsBL,EAAY3sd,OAAO,CAC7Cm0B,MAAO,KACPC,IAAK,KACLxL,SAAU8jc,IAGNO,EAAmB,CACvBve,cAAe,OACfiE,gBAAgB,EAChB/pb,SAAU,CAAE,CAAE8lb,cAAe,YAAc1uc,OAAO2sd,IAK9CO,EAAY,CAChB/4b,MAAOs4b,EAAkB,QACzB7b,aAAa,EACbx8a,IAAK,OACLy4a,UAAW,EACXjkb,SAAU,CACR,CAAEuL,MAAO,uBACT8/F,EAAMisV,aACN,CACEjge,UAAW,YACXk0C,MAAO,OAAS8vY,EAAW1wb,KAAK,KAAO,OACvC6gD,IAAK,QACL66a,OAAQ,CACN0D,gBAAgB,EAChB5F,QAAS,QACTF,UAAW,EACXjkb,SAAU+jc,MAMZQ,EAAe,CACnBlte,UAAW,UACXk0C,MAAO,2GACP86a,OAAQ,CACN76a,IAAK,QACLsvB,SAAUopa,EACV/b,WAAW,EACXnob,SAAU+jc,EACV9f,UAAW,IAKTugB,EAAgB,CACpBnte,UAAW,WACXrE,SAAU,CAKR,CACEu4C,MAAO,IAAMo4a,EAAW,QACxBM,UAAW,IAEb,CAAE14a,MAAO,IAAMo4a,IAEjB0C,OAAQ,CACN76a,IAAK,OACL28a,WAAW,EACXnob,SAAUokc,IAIRK,EAAgB,CAIpBzxe,SAAU,CACR,CACEu4C,MAAO,eACPC,IAAK,SAEP,CACED,MAAOs4b,EACPr4b,IAAK,OAGTw8a,aAAa,EACbG,WAAW,EACXhE,QAAS,WACTF,UAAW,EACXjkb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACL6f,EACAJ,EAAW,UAAW,UACtBA,EAAW,WAAY,OAAStgB,EAAW,OAE3C,CACEp4a,MAAO,OAASsrb,EAAKlse,KAAK,KAAO,OACjC0M,UAAW,gBAEbg0I,EAAMgsV,gBACN4M,EAAW,eAAgBJ,EAAiB,GAC5CI,EAAW,cAAe,IAAMJ,GAChCI,EAAW,iBAAkB,MAAQJ,EAAiB,GACtDI,EAAW,eAAgB,IAAK,GAChC54V,EAAM+rV,wBACN,CACE//d,UAAW,kBACXk0C,MAAO,KAAOwrb,EAAepse,KAAK,KAAO,KAE3C,CACE0M,UAAW,kBACXk0C,MAAO,SAAWyrb,EAAgBrse,KAAK,KAAO,KAEhD,CACE4gD,MAAO,KACPC,IAAK,KACLy4a,UAAW,EACXjkb,SAAUokc,GAEZ,CAAE74b,MAAO,cACT8/F,EAAM0nV,oBAIJ2R,EAAuB,CAC3Bn5b,MAAOo4a,EAAW,QAAU,IAAIigB,EAAmBj5e,KAAK,QACxDq9d,aAAa,EACbhob,SAAU,CAAEykc,IAed,OAZAX,EAAM3vd,KACJ6qE,EAAKulY,oBACLvlY,EAAKwlY,qBACL+f,EACAC,EACAE,EACAJ,EACAG,EACAJ,EACAh5V,EAAM0nV,mBAGD,CACLz7e,KAAM,OACNixe,kBAAkB,EAClBpE,QAAS,cACTnkb,SAAU8jc,EAEd,aC74BAvvP,EAAO59F,QAnIP,SAAc33D,GACZ,MAAM2lZ,EAAgB,sDAChBC,EAAS,cACTC,EAAwB,qEACxBxU,EAAU,CACdh5d,UAAW,UACXk0C,MAAO,oBAEHymb,EAAS,CACb36d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAOs5b,EACP5gB,UAAW,GAEb,CAAE14a,MAAO,0BACT,CAAEA,MAAO,0BACT,CAAEA,MAAO,sCACT,CACEA,MAAO,YAAcs5b,EAAwB,KAAOA,EACpDr5b,IAAK,SAILmmb,EAAS3yY,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAED,QAAS,OACzDx5a,EAAUq0C,EAAKr0C,QACnB,IAAK,IACL,CAAEs5a,UAAW,IAETyP,EAAW,CACfnob,MAAO,MACPC,IAAK,OAED2kb,EAAU,CACd94d,UAAW,SACXk0C,MAAO,OAASo5b,GAEZlB,EAAQ,CACZl4b,MAAOo5b,EACP1gB,UAAW,GAEP6gB,EAAM,CAAEv5b,MAAOq5b,GAYfG,EAAS,CACb/kc,SAAU,CACRgyb,EACAL,EACA+B,EACAvD,EAhBgB,CAClB5kb,MAAO,MACPC,IAAK,MACLxL,SAAU,CACR,OACAqwb,EACAsB,EACAK,EACAyR,IAUAA,GAEFzwe,SAAU,CACR,CACEu4C,MAAO,UACPC,IAAK,OAEP,CACED,MAAO,YACPC,IAAK,MACLsvB,SAAU,CAAExjF,KAAM,UAEpB,CAAEi0D,MAAO,IAAOq5b,KAGdI,EAAc,CAAEhye,SAAU,CAC9B,CAAEu4C,MAAO,IAAOo5b,GAChB,CAAEp5b,MAAO,KAAQo5b,EAAgB,MAAQA,EAAgB,QAErD1P,EAAO,CACX1pb,MAAO,UACPC,IAAK,OAED6uZ,EAAO,CACX0vB,gBAAgB,EAChB9F,UAAW,GA6Bb,OA3BAgR,EAAKj1b,SAAW,CACd,CACE3oC,UAAW,OACXrE,SAAU,CACR,CACEu4C,MAAOo5b,EACP1gB,UAAW,GAEb,CAAE14a,MAAOq5b,KAGbvqC,GAEFA,EAAKr6Z,SAAW,CACd+kc,EACAC,EACA/P,EACA5E,EACA2B,EACAL,EACAhnb,EACA+ob,EACAvD,EACA2U,EACArB,GAGK,CACLnsf,KAAM,OACN6se,QAAS,KACTnkb,SAAU,CACRgyb,EACAhzY,EAAKymY,UACL4K,EACAsB,EACAhnb,EACAo6b,EACAC,EACA/P,EACAwO,GAGN,aCoCAlvP,EAAO59F,QAnKP,SAAwB33D,GACtB,MAAM00Y,EAAW,CACfr8d,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAO,uDACT,CAAEA,MAAO,eAEX04a,UAAW,GAEPoQ,EAAgB,CACpBr1Y,EAAKwlY,qBACLxlY,EAAKylY,kBACLzlY,EAAKr0C,QAAQ,KAAM,KACnBq0C,EAAKr0C,QAAQ,SAAU,MAEnBs6b,EAASjmZ,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAE9xd,SAAU,CACvD,CAAEu4C,MAAO,iCACT,CAAEA,MAAO,uBAEL25b,EAASlmZ,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAO,6BACtD,MAAO,CACLj0D,KAAM,WACNixe,kBAAkB,EAClBztZ,SAAU,CACRksZ,QACE,4/BAYFjxL,QACE,gfAMF26L,SACE,o4KAqDJ1wb,SAAU,CACR0zb,EACA,CACEr8d,UAAW,UACXk0C,MAAO,kBAET,CACEl0C,UAAW,WACXyud,cAAe,WACft6a,IAAK,IACLxL,SAAU,CACR0zb,EACAwR,EACAlmZ,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK4lY,mBACL5lY,EAAK2lY,cACLsgB,IAGJ,CACE5te,UAAW,WACXk0C,MAAO,aACPC,IAAK,IACLsvB,SAAU,MACV96B,SAAU,CACRklc,EACAD,GAEFhhB,UAAW,GAEb,CACE6B,cAAe,aACft6a,IAAK,IACLxL,SAAU,CACR0zb,EACAwR,EACAlmZ,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK4lY,mBACL5lY,EAAK2lY,cACLsgB,IAGJ,CACE5te,UAAW,OACXrE,SAAU,CACR,CACEu4C,MAAO,wBACP04a,UAAW,IAEb,CAAE14a,MAAO,QACT,CAAEA,MAAO,UAGbyzC,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK4lY,mBACL5lY,EAAK2lY,cACLsgB,GACA7td,OAAOi9c,GACTlQ,QAAS,mBAEb,aC1KA,MAAM2N,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEIsD,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAyFIC,EAAY,GAAGj+c,OAtBI,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAlFY,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGkB,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,aAwQFm9N,EAAO59F,QA9NP,SAAoB33D,GAClB,MA4CMs2Y,EAAa,CACjBtO,QAAS8K,EAAS1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,EAAEusC,SAAWvsC,EAAEusC,SAAS5oB,OAAO4ud,EAAY,IAG7CA,EAAcA,EAAY5ud,OAAOwud,EAAMC,GAqChC,CACLvuf,KAAM,WACNs/B,QAAS,CACP,KACA,SACA,OAEFopB,SAAU,CA1CG,CACb3oC,UAAW,UACXrE,SAAU,CACR,CACEu4C,MAAO,UACPC,IAAK,IACLxL,SAAUgmc,GAEZ,CACEz6b,MAAO,uBACPvL,SAAU,CACR,CAAEuL,MAAO,WACT,CACEA,MAAO,IACPC,IAAK,MACLxL,SAAUgmc,OA6BhBL,EAvLS,CACXtue,UAAW,SACXk0C,MAAO,mCACPC,IAAK,OACL08a,YAAY,GAqLV0d,EACAC,EAzBe,CACjBxue,UAAW,QACXk0C,MAAO,SACPvL,SAAUgmc,EACVx6b,IAAK,KAnMM,CACXn0C,UAAW,OACXrE,SAAU,CAER,CAAEu4C,MAAO,iCACT,CAAEA,MAAO,iCAET,CACEA,MAAO,MACPC,IAAK,aAEP,CACED,MAAO,MACPC,IAAK,aAEP,CAAED,MAAO,SACT,CACEA,MAAO,kBAGPvL,SAAU,CACR,CACEuL,MAAO,cACPC,IAAK,WAGTy4a,UAAW,KA9BO,CACtB14a,MAAO,cACPC,IAAK,KA8NHgvZ,EAxLmB,CACrBjvZ,MAAO,eACPy8a,aAAa,EACbhob,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,GAEd,CACE7wd,UAAW,OACXk0C,MAAO,OACPC,IAAK,IACL64a,cAAc,KAmJL,CAEbhzb,MAAO,UACP5b,MAAO,uDAwBX,YCrPA,MAAMwwd,EAAiB,CACrB,cACA,eACA,QACA,eACA,eACA,qBACA,QACA,MACA,SACA,aACA,WACA,sBACA,8BACA,uBACA,kBACA,mBACA,kBACA,oBACA,oBACA,eACA,iBACA,sBACA,iBACA,aACA,WACA,eACA,yBACA,yBACA,8BACA,uBACA,4BACA,yBACA,yBACA,6BACA,cACA,aACA,gBACA,uBACA,WACA,SACA,uBACA,6BACA,aACA,mBACA,yBACA,cACA,gBACA,gBACA,WACA,QACA,mBACA,WACA,iBACA,gBACA,kBACA,oBACA,WACA,gBACA,uBACA,2BACA,6BACA,kBACA,cACA,wBACA,kBACA,QACA,wBACA,mBACA,eACA,cACA,kBACA,sBACA,qBACA,SACA,cACA,aACA,SACA,cACA,aACA,oBACA,kBACA,6BACA,sBACA,4BACA,uBACA,iBACA,qBACA,aACA,iBACA,YACA,kBACA,iBACA,MACA,oBACA,oBACA,8BACA,kCACA,oBACA,wBACA,eACA,kBACA,kBACA,mBACA,4BACA,oBACA,yBACA,yBACA,qBACA,UACA,WACA,kBACA,iBACA,eACA,iBACA,uBACA,mBACA,wBACA,eACA,iBACA,eACA,oBACA,gBACA,WACA,cACA,cACA,gBACA,mBACA,iBACA,iBACA,MACA,sBACA,SACA,gBACA,eACA,YACA,cACA,cACA,eACA,UACA,gBACA,uBACA,4BACA,qBACA,uBACA,gBACA,uBACA,mBACA,mBACA,qBACA,iBACA,WACA,cACA,qBACA,mBACA,WACA,aACA,mBACA,iBACA,kBACA,kBACA,UACA,aACA,UACA,mBACA,kBACA,0BACA,YACA,eACA,gBACA,uBACA,gBACA,uBACA,WACA,WACA,YACA,UACA,QACA,kBACA,cACA,aACA,qBACA,kBACA,WACA,SACA,cACA,cACA,WACA,cACA,QACA,gBACA,aACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,eACA,cACA,YACA,SACA,UACA,SACA,qBACA,UACA,SACA,UACA,OACA,MACA,SACA,SACA,iBACA,mBACA,eACA,0BACA,cACA,SACA,gBACA,YACA,QACA,kBACA,aACA,cACA,eACA,YACA,WACA,YACA,cACA,SACA,cACA,gBACA,eACA,aACA,SACA,QACA,aACA,WACA,aACA,cACA,MACA,YACA,aACA,aACA,SACA,aACA,cACA,WACA,qBACA,cACA,mBACA,SACA,qBACA,yBACA,cACA,cACA,oBACA,iBACA,eACA,oBACA,sBACA,WACA,cACA,yBACA,kBACA,cACA,gBACA,gBACA,iBACA,sBACA,mBACA,gBACA,kBACA,aACA,oBACA,sBACA,eACA,iBACA,aACA,wBACA,kBACA,uBACA,wBACA,oBACA,yBACA,sBACA,iBACA,sBACA,0BACA,wBACA,oBACA,wBACA,kBACA,gBACA,eACA,yBACA,oBACA,OACA,kBACA,YACA,yBACA,aACA,iBACA,WACA,QACA,aACA,eACA,iBACA,aACA,QACA,eACA,gBACA,wBACA,gBACA,eACA,yBACA,sBACA,kBACA,gBACA,uBACA,YACA,aACA,cACA,cACA,gBACA,gBACA,YACA,sBACA,iBACA,gBACA,mBACA,cACA,iBACA,iBACA,YACA,aACA,cACA,yBACA,eACA,gBACA,oBACA,iBACA,oBACA,eACA,WACA,WACA,iBACA,aACA,kBACA,YACA,YACA,SACA,cACA,eACA,gBACA,cACA,eACA,kBACA,mBACA,8BACA,aACA,YACA,cACA,eACA,mBACA,kBACA,sBACA,YACA,YACA,sBACA,+BACA,eACA,iBACA,uBACA,aACA,eACA,yBACA,WACA,sBACA,aACA,qBACA,uBACA,aACA,qBACA,kBACA,eACA,YACA,YACA,qBACA,2BACA,uBACA,oBACA,mBACA,yBACA,sBACA,gBACA,aACA,oBACA,cACA,aACA,cACA,mBACA,iBACA,iBACA,OACA,WACA,YACA,aACA,YACA,kBACA,OACA,YACA,mBACA,UACA,iBACA,YACA,aACA,YACA,oBACA,OACA,gBACA,oBACA,kBACA,wBACA,2BACA,4BACA,kBACA,aACA,uBACA,0BACA,YACA,mBACA,WACA,OACA,OACA,iBACA,iBACA,kCACA,WACA,aACA,eACA,mBACA,sBACA,YACA,2BACA,UACA,YACA,aACA,qBACA,iBACA,aACA,aACA,WACA,WACA,mBACA,YACA,sBACA,0BACA,YACA,oBACA,uBACA,uBACA,6BACA,uBACA,6BACA,UACA,uBACA,OACA,SACA,QACA,oBACA,eACA,QACA,QACA,QACA,sBACA,qBACA,+BACA,gCACA,aACA,wBACA,6BACA,mBACA,iBACA,SACA,oBACA,UACA,UACA,cACA,UACA,UACA,cACA,OACA,2BACA,mBACA,mCACA,wBACA,kBACA,UACA,wBACA,UACA,oBACA,cACA,mBACA,0BACA,iBACA,wBACA,iBACA,kBACA,4BACA,sBACA,WACA,oBACA,iBACA,eACA,eACA,aACA,iBACA,kBACA,cACA,YACA,WACA,sBACA,WACA,uBACA,uBACA,kBACA,uBACA,4BACA,cACA,+BACA,wBACA,uBACA,oBACA,kBACA,eACA,+BACA,wBACA,uBACA,kBACA,yBACA,qBACA,+BACA,SACA,WACA,SACA,YACA,SACA,QACA,UACA,SACA,eACA,gBACA,SACA,mBACA,sBACA,QACA,uBACA,wBACA,iBACA,QACA,YACA,oBACA,gBACA,QACA,QACA,wBACA,iBACA,sBACA,0BACA,iBACA,gBACA,sBACA,gBACA,sBACA,wBACA,4BACA,4BACA,8BACA,sBACA,6BACA,WACA,cACA,6BACA,gBACA,oBACA,OACA,OACA,WACA,WACA,eACA,OACA,OACA,YACA,aACA,iBACA,WACA,QACA,YACA,QACA,6BACA,iBACA,0BACA,kBACA,eACA,kBACA,kBACA,kBACA,WACA,gBACA,WACA,iBACA,eACA,mBACA,mBACA,0BACA,SACA,qBACA,6BACA,2BACA,eACA,qBACA,sBACA,gBACA,iBACA,iBACA,SACA,MACA,mBACA,UACA,gBACA,QACA,QACA,UACA,qBACA,WACA,QACA,aACA,YACA,YACA,YACA,cACA,mBACA,WACA,kBACA,MACA,gBACA,SACA,qBACA,mBACA,QACA,aACA,qBACA,uBACA,QACA,oBACA,wBACA,kBACA,eACA,eACA,oBACA,2BACA,kBACA,yBACA,kBACA,iBACA,sBACA,6BACA,cACA,gBACA,cACA,cACA,iBACA,yBACA,eACA,cACA,eACA,iBACA,yBACA,SACA,YACA,YACA,mBACA,aACA,iBACA,aACA,kBACA,mBACA,cACA,iBACA,gBACA,kBACA,aACA,iBACA,eACA,cACA,yBACA,OACA,YACA,kBACA,mBACA,aACA,oBACA,YACA,eACA,IACA,cACA,gBACA,mBACA,kBACA,eACA,eACA,UACA,gBACA,eACA,aACA,mBACA,SACA,eACA,mBACA,iBACA,sBACA,yBACA,qBACA,gBACA,iCACA,2BACA,aACA,kBACA,SACA,MACA,UACA,uBACA,aACA,eACA,iBACA,UACA,uBACA,oBACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,mBACA,eACA,QACA,gBACA,WACA,aACA,OACA,UACA,gBACA,QACA,0BACA,WACA,gBACA,qBACA,eACA,qBACA,eACA,cACA,MACA,YACA,iBACA,aACA,UACA,kBACA,OACA,oBACA,eACA,kBACA,qBACA,kBACA,eACA,cACA,cACA,oBACA,wBACA,oBACA,0BACA,sBACA,aACA,0BACA,yBACA,yBACA,mBACA,YACA,iBACA,wBACA,kBACA,mBACA,iBACA,YACA,gBACA,eACA,oBACA,0BACA,SACA,yBACA,YACA,sBACA,mBACA,uBACA,iBACA,oBACA,cACA,aACA,WACA,YACA,aACA,QACA,WACA,YACA,WACA,mBACA,kBACA,oBACA,uBACA,YACA,SACA,cACA,YACA,mBACA,iBACA,gBACA,kCACA,cACA,mBACA,gBACA,QACA,qBACA,gBACA,cACA,sBACA,iBACA,uBACA,gBACA,kBACA,mBACA,sBACA,gBACA,yBACA,0BACA,cACA,qBACA,mBACA,YACA,kBACA,oBACA,yBACA,yBACA,2BACA,gBACA,qBACA,iBACA,aACA,iBACA,mBACA,2BACA,uBACA,gBACA,cACA,cACA,eACA,aACA,wBACA,wBACA,oBACA,aACA,aACA,QACA,aACA,WACA,iBACA,WACA,cACA,cACA,qBACA,kBACA,eACA,kBACA,mBACA,mBACA,qBACA,kBACA,mBACA,wBACA,gBACA,eACA,wBACA,OACA,mBACA,qBACA,sBACA,SACA,YACA,YACA,cACA,aACA,eACA,gBACA,cACA,iBACA,qBACA,uCACA,uCACA,iCACA,uCACA,oCACA,eACA,WACA,qBACA,wBACA,yBACA,+BACA,WACA,cACA,QACA,WACA,kBACA,eACA,mBACA,mBACA,gBACA,YACA,cACA,qBACA,OACA,oBACA,WACA,gBACA,aACA,kBACA,YACA,QACA,aACA,2BACA,QACA,SACA,eACA,sBACA,UACA,kBACA,eACA,mBACA,YACA,eACA,mBACA,cACA,iBACA,kBACA,gBACA,cACA,kBACA,mBACA,gBACA,WACA,cACA,mBACA,cACA,yBACA,6BACA,wBACA,eACA,qBACA,eACA,WACA,uBACA,YACA,aACA,cACA,cACA,eACA,cACA,kBACA,+BACA,uBACA,yBACA,iBACA,YACA,SACA,oBACA,cACA,oBACA,oBACA,kBACA,mBACA,iBACA,UACA,kBACA,QACA,YACA,eACA,eACA,eACA,gBACA,YACA,oBACA,cACA,gBACA,gBACA,uBACA,uBACA,WACA,cACA,cACA,mBACA,SACA,gBACA,eACA,aACA,wBACA,gBACA,cACA,iBACA,wBACA,cACA,aACA,aACA,mBACA,SACA,mBACA,oBACA,aACA,cACA,eACA,iBACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,sBACA,mBACA,YACA,2BACA,YACA,kBACA,aACA,cACA,yBACA,qBACA,kBACA,uBACA,cACA,kBACA,qBACA,oBACA,UACA,WACA,uBACA,oBACA,gCACA,mBACA,gBACA,mBACA,sBACA,4BACA,8BACA,4BACA,kBACA,aACA,0BACA,gBACA,iBACA,mBACA,mBACA,wBACA,UACA,mBACA,qBACA,YACA,gBACA,kBACA,qBACA,kBACA,cACA,gBACA,oBACA,oBACA,oBACA,wBACA,2BACA,UACA,cACA,gBACA,aACA,cACA,kBACA,qBACA,8BACA,yBACA,yBACA,WACA,iBACA,mBACA,qBACA,kBACA,YACA,wBACA,cACA,OACA,UACA,kBACA,kBACA,sBACA,oBACA,UACA,gBACA,YACA,eACA,eACA,qBACA,eACA,gBACA,YACA,uBACA,kBACA,uBACA,8BACA,qBACA,4BACA,oBACA,YACA,qBACA,cACA,UACA,sBACA,2BACA,kBACA,0BACA,8BACA,qBACA,qBACA,iCACA,+BACA,+BACA,eACA,cACA,gCACA,iBACA,WACA,gBACA,qBACA,gBACA,oBACA,kBACA,YACA,qBACA,oBACA,iBACA,iBACA,YACA,aACA,cACA,cACA,kBACA,eACA,eACA,0BACA,sBACA,0BACA,gBACA,iBACA,sBACA,oBACA,cACA,UACA,cACA,WACA,oBACA,eACA,WACA,oBACA,qBACA,mBACA,0BACA,iBACA,uBACA,wBACA,6BACA,gBACA,kBACA,kBACA,gBACA,eACA,cACA,gBACA,WACA,iBACA,mBACA,eACA,qBACA,uBACA,UACA,gBACA,mBACA,0BACA,yBACA,wBACA,4BACA,qBACA,qBACA,wBACA,4BACA,oBACA,uBACA,mBACA,iBACA,kBACA,mBACA,oBACA,cACA,oBACA,cACA,oBACA,kBACA,sBACA,4BACA,iBACA,mBACA,qBACA,iBACA,oBACA,gBACA,mBACA,WACA,iBACA,iBACA,iBACA,iBACA,UACA,wBACA,6BACA,mBACA,wBACA,sBACA,yBACA,sBACA,0BACA,iBACA,WACA,YACA,qBACA,WACA,cACA,gBACA,WACA,eACA,UACA,kBACA,6BACA,eACA,kBACA,cACA,sBACA,sBACA,kBACA,MACA,OACA,eACA,iBACA,eACA,cACA,MACA,OACA,WACA,WACA,YACA,YACA,QACA,gBACA,kBACA,qBACA,aACA,oBACA,kCACA,mBACA,kBACA,oBACA,eACA,0BACA,aACA,cACA,SACA,WACA,aACA,8BACA,qBACA,qBACA,0BACA,WACA,cACA,qBACA,gBACA,eACA,gBACA,wBACA,4BACA,gBACA,sBACA,wBACA,eACA,kBACA,iBACA,aACA,gCACA,2BACA,iCACA,iBACA,sBACA,gBACA,yBACA,sBACA,oBACA,oBACA,kBACA,qBACA,aACA,eACA,oBACA,+BACA,+BACA,kBACA,QACA,wBACA,gBACA,iBACA,kBACA,cACA,MACA,OACA,YACA,aACA,gBACA,eACA,OACA,WACA,SACA,SACA,YACA,mBACA,WACA,6BACA,8BACA,MACA,SACA,OACA,mBACA,aACA,kBACA,cACA,eACA,uBACA,qBACA,eACA,QACA,eACA,sBACA,cACA,OACA,aACA,uBACA,SACA,cACA,aACA,WACA,cACA,qBACA,2BACA,mCACA,IACA,oBACA,UACA,6BACA,gBACA,SACA,SACA,UACA,kBACA,qBACA,oBACA,UACA,aACA,gBACA,WACA,gBACA,gBACA,kBACA,mBACA,YACA,eACA,UACA,sBACA,eACA,gBACA,iBACA,OACA,aACA,QACA,iBACA,iBACA,YACA,aACA,eACA,kBACA,gBACA,eACA,WACA,kBACA,eACA,mBACA,aACA,cACA,gBACA,cACA,WACA,YACA,gBACA,YACA,aACA,aACA,kBACA,YACA,cACA,oBACA,oBACA,UACA,WACA,qBACA,gBACA,YACA,YACA,UACA,qBACA,UACA,WACA,WACA,gBACA,mBACA,QACA,WACA,eACA,UACA,cACA,2BACA,sBACA,iBACA,YACA,qBACA,YACA,UACA,cACA,cACA,qBACA,UACA,gBACA,gBACA,2BACA,mBACA,mBACA,kBACA,gBACA,eACA,0BACA,yBACA,4BACA,kBACA,iBACA,wBACA,wBACA,cACA,wBACA,oBACA,oBACA,yBACA,wBACA,0BACA,yBACA,oBACA,mBACA,yBACA,sBACA,4BACA,kBACA,iBACA,0BACA,wBACA,eACA,0BACA,wBACA,8BACA,oBACA,sBACA,eACA,gBACA,QACA,iBACA,0BACA,2BACA,yBACA,aACA,SACA,mBACA,0BACA,sBACA,6BACA,eACA,eACA,mBACA,MACA,eACA,UACA,YACA,SACA,2BACA,kBACA,yBACA,cACA,gBACA,wBACA,iBACA,kBACA,mBACA,qBACA,iBACA,aACA,gBACA,eACA,uBACA,oBACA,wBACA,kBACA,qBACA,kBACA,iBACA,oBACA,YACA,wBACA,qBACA,oBACA,aACA,mBACA,aACA,cACA,kBACA,mBACA,cACA,gBACA,qBACA,SACA,WACA,QACA,iBACA,aACA,mBACA,oBACA,aACA,uBACA,eACA,yBACA,MACA,cACA,kBACA,gBACA,4BACA,eACA,aACA,cACA,aACA,mBACA,mBACA,iBACA,uBACA,UACA,gBACA,cACA,oBACA,mBACA,yBACA,WACA,wBACA,iBACA,kBACA,SACA,eACA,cACA,cACA,iBACA,eACA,eACA,gBACA,UACA,gBACA,oBACA,mBACA,kBACA,kBACA,kBACA,qBACA,iBACA,uBACA,cACA,gBACA,mBACA,yBACA,uBACA,mBACA,0BACA,4BACA,mBACA,aACA,oBACA,iBACA,aACA,SACA,gBACA,gBACA,WACA,0BACA,4BACA,kBACA,2BACA,qBACA,aACA,YACA,aACA,eACA,gBACA,gBACA,iBACA,mBACA,YACA,mBACA,YACA,YACA,gBACA,aACA,iBACA,gBACA,qBACA,qBACA,oBACA,wBACA,eACA,aACA,kBACA,qBACA,kBACA,4BACA,oBACA,qBACA,0BACA,mBACA,gBACA,4BACA,oBACA,2BACA,gBACA,2BACA,2BACA,wBACA,wBACA,mBACA,mBACA,eACA,iBACA,gBACA,uBACA,gBACA,qBACA,8BACA,oBACA,sBACA,iCACA,2BACA,qBACA,mBACA,eACA,YACA,cACA,OACA,UACA,iBACA,aACA,cACA,WACA,YACA,8BACA,UACA,kBACA,mBACA,cACA,kBACA,gBACA,eACA,gBACA,mBACA,cACA,iBACA,sBACA,mBACA,iBACA,oBACA,aACA,cACA,sBACA,wBACA,oBACA,qBACA,sBACA,mCACA,yBACA,YACA,MACA,aACA,SACA,WACA,WACA,cACA,YACA,WACA,eACA,aACA,UACA,YACA,KACA,aACA,cACA,oBACA,+BACA,mCACA,qBACA,mBACA,yBACA,eACA,gCACA,iBACA,qBACA,sBACA,gBACA,MACA,YACA,WACA,WACA,eACA,SACA,sBACA,wBACA,kBACA,kBACA,uBACA,gBACA,sBACA,2BACA,uBACA,mBACA,iBACA,gBACA,oBACA,oBACA,iBACA,OACA,YACA,eACA,mBACA,sBACA,oBACA,iBACA,oBACA,qBACA,kBACA,qBACA,aACA,UACA,eACA,aACA,qBACA,cACA,gBACA,YACA,iBACA,kBACA,gBACA,OACA,eACA,gBACA,SACA,wBACA,cACA,KACA,wBACA,kBACA,iBACA,mBACA,UACA,WACA,iBACA,WACA,UACA,aACA,oBACA,2BACA,qBACA,eACA,kBACA,gBACA,mBACA,0BACA,sBACA,sBACA,cACA,mBACA,mBACA,iBACA,kBACA,iBACA,oBACA,2BACA,IACA,kBACA,iBACA,yBACA,OACA,iBACA,eACA,YACA,aACA,cACA,UACA,4BACA,eACA,cACA,sBACA,YACA,mBACA,eACA,WACA,YACA,aACA,kBACA,cACA,aACA,aACA,WACA,YACA,eACA,eACA,aACA,iBACA,WACA,cACA,QACA,wBACA,YACA,oBACA,YACA,kBACA,mBACA,WACA,gBACA,uBACA,iBACA,iBACA,aACA,qBACA,WACA,qBACA,uBACA,eACA,oBACA,cACA,cACA,wBACA,eACA,UACA,cACA,mBACA,cACA,YACA,mBACA,YACA,YACA,cACA,mBACA,YACA,sBACA,YACA,cACA,gBACA,aACA,6BACA,gBACA,qBACA,YACA,eACA,kBACA,yBACA,wBACA,iBACA,kBACA,YACA,wBACA,wBACA,QACA,cACA,cACA,cACA,2BACA,UACA,UACA,SACA,UACA,kBACA,cACA,MACA,SACA,kBACA,cACA,YACA,YACA,cACA,aACA,oBACA,kBACA,QACA,wBACA,kBACA,SACA,cACA,kBACA,eACA,iBACA,cACA,iBACA,aACA,iBACA,mBACA,iBACA,sBACA,iBACA,cACA,eACA,iBACA,mBACA,cACA,UACA,gBACA,cACA,SACA,iBACA,QACA,eACA,YACA,aACA,UACA,YACA,cACA,yBACA,aACA,MACA,OACA,OACA,UACA,UACA,qBACA,UACA,WACA,kBACA,YACA,cACA,uBACA,eACA,sBACA,wBACA,wBACA,wBACA,mBACA,0BACA,iBACA,qBACA,oBACA,cACA,sBACA,SACA,aACA,iBACA,cACA,WACA,cACA,WACA,YACA,iBACA,wBACA,gBACA,iBACA,6BACA,iBACA,qBACA,wBACA,iBACA,oBACA,qBACA,mBACA,kBACA,uBACA,sBACA,YACA,iBACA,QACA,YACA,iBACA,eACA,kBACA,cACA,cACA,sBACA,eACA,qBACA,cACA,SACA,mBACA,gBACA,gBACA,6BACA,cACA,aACA,kBACA,SACA,OACA,aACA,gBACA,MACA,SACA,YACA,oBACA,iBACA,kBACA,cACA,eACA,gBACA,uBACA,eACA,gBACA,iBACA,WACA,mBACA,0BACA,oBACA,gCACA,2BACA,+BACA,mBACA,eACA,SACA,yBACA,kBACA,aACA,eACA,eACA,aACA,iBACA,kBACA,mBACA,iBACA,iBACA,YACA,sBACA,cACA,YACA,wBACA,gBACA,aACA,iBACA,eACA,gCACA,mBACA,mBACA,uBACA,qBACA,iBACA,kBACA,wBACA,mBACA,sBACA,0BACA,qBACA,wBACA,qBACA,wBACA,wBACA,gBACA,UACA,iBACA,eACA,uBACA,2BACA,YACA,WACA,YACA,iBACA,gBACA,iBACA,SACA,iBACA,YACA,aACA,kBACA,oCACA,iBACA,gBACA,aACA,mBACA,uBACA,cACA,kBACA,OACA,UACA,gBACA,sBACA,WACA,QACA,gBACA,gBACA,kBACA,iBACA,oBACA,mBACA,2BACA,oBACA,eACA,iBACA,mBACA,qBACA,eACA,6BACA,yBACA,8BACA,oBACA,iBACA,sBACA,eACA,6BACA,kBACA,YACA,aACA,0BACA,YACA,iBACA,cACA,YACA,OACA,eACA,gBACA,cACA,WACA,cACA,gBACA,aACA,uBACA,cACA,cACA,WACA,kBACA,WACA,gBACA,yBACA,eACA,gBACA,eACA,YACA,iBACA,gBACA,eACA,uBACA,YACA,WACA,gBACA,iBACA,iBACA,eACA,oBACA,WACA,cACA,iBACA,wBACA,cACA,WACA,UACA,eACA,mBACA,sBACA,cACA,gBACA,gBACA,sBACA,qBACA,OACA,gBACA,aACA,aACA,eACA,aACA,eACA,cACA,gBACA,YACA,cACA,mBACA,6BACA,gBACA,mBACA,gBACA,cACA,2BACA,sBACA,oBACA,yBACA,YACA,WACA,UACA,cACA,wBACA,yBACA,kBACA,2BACA,yBACA,uBACA,uBACA,qBACA,uBACA,sBACA,yBACA,gBACA,yBACA,2BACA,eACA,wBACA,cACA,yBACA,YACA,cACA,YACA,YACA,cACA,uBACA,WACA,oBACA,cACA,iBACA,kBACA,eACA,kBACA,cACA,sBACA,iBACA,eACA,2BACA,WACA,YACA,kBACA,qBACA,6BACA,kBACA,wBACA,sBACA,aACA,WACA,uBACA,eACA,mBACA,mBACA,mBACA,0BACA,6BACA,oBACA,gBACA,sBACA,qBACA,kBACA,gBACA,6BACA,OACA,gBACA,0BACA,mBACA,kBACA,QACA,YACA,+BACA,gBACA,mBACA,mBACA,wBACA,mCACA,kBACA,sBACA,MACA,SACA,oBACA,cACA,aACA,aACA,iBACA,iBACA,OACA,cACA,UACA,YACA,eACA,gBACA,aACA,WACA,QACA,iBACA,OACA,WACA,WACA,eACA,YACA,gBACA,kBACA,OACA,YACA,aACA,WACA,WACA,cACA,qBACA,iBACA,iBACA,WACA,YACA,oBACA,eACA,iBACA,aACA,MACA,SACA,aACA,sBACA,SACA,cACA,aACA,wBACA,eACA,UACA,iBACA,cACA,eACA,qBACA,aACA,WACA,uBACA,YACA,cACA,gBACA,cACA,UACA,kBACA,0BACA,UACA,qBACA,wBACA,mBACA,sBACA,aACA,mBACA,mBACA,aACA,mBACA,gBACA,oBACA,2BACA,gBACA,wBACA,mBACA,sBACA,mBACA,oBACA,OACA,aACA,kCACA,cACA,iCACA,iBACA,cACA,qBACA,eACA,QACA,WACA,kBACA,SACA,aACA,aACA,YACA,iBACA,eACA,YACA,aACA,aACA,kBACA,qBACA,sBACA,QACA,qBACA,gCACA,WACA,WACA,WACA,WACA,SACA,kBACA,iBACA,mBACA,oBACA,uBACA,wBACA,WACA,iBACA,aACA,UACA,aACA,iBACA,mBACA,uBACA,iBACA,mBACA,2BACA,eACA,QACA,4BACA,uBACA,kBACA,iBACA,mBACA,yBACA,oBACA,gBACA,uBACA,qBACA,kBACA,iBACA,qBACA,mBACA,yBACA,4BACA,6BACA,mBACA,OACA,WACA,iBACA,WACA,eACA,iCACA,cACA,aACA,eACA,WACA,mBACA,oBACA,kBACA,wBACA,iCACA,+BACA,8BACA,qBACA,oBACA,sBACA,0BACA,iBACA,iBACA,oBACA,wBACA,gBACA,sBACA,uBACA,iBACA,gBACA,gBACA,eACA,wBACA,gBACA,qBACA,0BACA,cACA,cACA,eACA,cACA,mBACA,aACA,cACA,QACA,oBACA,mBACA,aACA,eACA,sBACA,SACA,WACA,2BACA,iBACA,4BACA,iBACA,kBACA,cACA,eACA,aACA,iBACA,mBACA,iBACA,uCACA,uCACA,oCACA,iBACA,MACA,cACA,UACA,4BACA,4BACA,qBACA,uBACA,yBACA,gBACA,sBACA,2BACA,qBACA,2BACA,mBACA,sBACA,8BACA,wBACA,uBACA,mCACA,uBACA,qBACA,uBACA,yBACA,sBACA,UACA,kCACA,aACA,eACA,cACA,UACA,eACA,gBACA,cACA,iBACA,YACA,kBACA,0BACA,iBACA,YACA,YACA,iBACA,iBACA,kBACA,mBACA,kBACA,kBACA,qBACA,iBACA,cACA,eACA,UACA,kBACA,cACA,kBACA,mBACA,cACA,cACA,eACA,oBACA,sBACA,6BACA,eACA,oBACA,kBACA,eACA,sBACA,kBACA,sBACA,gBACA,WACA,gBACA,wBACA,eACA,cACA,WACA,YACA,YACA,cACA,cACA,uBACA,uBACA,YACA,qBACA,iCACA,wBACA,gBACA,sBACA,wBACA,iBACA,gBACA,wBACA,gBACA,0BACA,+BACA,sCACA,6BACA,oCACA,WACA,aACA,qBACA,UACA,aACA,cACA,iBACA,iBACA,gBACA,oBACA,WACA,kBACA,qBACA,gBACA,cACA,YACA,qBACA,gBACA,aACA,0BACA,aACA,YACA,eACA,gBACA,eACA,mBACA,2BACA,aACA,eACA,iBACA,oBACA,MACA,aACA,iBACA,cACA,gCACA,oBACA,WACA,8BACA,oBACA,gBACA,OACA,cACA,cACA,8BACA,eACA,sBACA,0BACA,OACA,iBACA,OACA,WACA,iBACA,qBACA,4BACA,eACA,eACA,eACA,QACA,UACA,qBACA,yBACA,cACA,kBACA,YACA,eACA,gBACA,kBACA,qBACA,gBACA,sBACA,iBACA,iBACA,sBACA,WACA,WACA,aACA,gBACA,uBACA,gBACA,mBACA,cACA,qBACA,gBACA,iBACA,kBACA,uBACA,8BACA,qBACA,4BACA,mBACA,eACA,eACA,kBACA,gBACA,qBACA,4BACA,mBACA,0BACA,mBACA,yBACA,cACA,kBACA,gBACA,oBACA,YACA,mBACA,cACA,kBACA,cACA,sBACA,iBACA,YACA,cACA,aACA,eACA,4BACA,SACA,cACA,mBACA,YACA,aACA,WACA,YACA,aACA,OACA,YACA,UACA,eACA,mBACA,mBACA,mBACA,iBACA,cACA,oBACA,cACA,eACA,aACA,QACA,gBACA,OACA,eACA,UACA,mBACA,oBACA,kBACA,eACA,kBACA,mBACA,iBACA,kBACA,uBACA,qBACA,0BACA,YACA,mBACA,YACA,YACA,iBACA,YACA,gBACA,kBACA,UACA,mBACA,uBACA,uBACA,gBACA,gBACA,qBACA,kBACA,YACA,2BACA,mBACA,yBACA,cACA,aACA,uBACA,yBACA,kBACA,uBACA,wBACA,8BACA,oBACA,eACA,eACA,qBACA,cACA,iBACA,WACA,yBACA,YACA,YACA,kBACA,oBACA,kBACA,gBACA,mBACA,uBACA,WACA,WACA,eACA,kBACA,oBACA,aACA,sBACA,cACA,uBACA,eACA,qBACA,iBACA,OACA,eACA,eACA,YACA,iBACA,OACA,cACA,kBACA,mBACA,wBACA,cACA,UACA,aACA,cACA,QACA,gBACA,sBACA,mBACA,qBACA,oBACA,2BACA,2BACA,oBACA,kBACA,cACA,iBACA,cACA,WACA,wBACA,oBACA,sBACA,sBACA,qBACA,OACA,uBACA,WACA,YACA,mBACA,0BACA,UACA,QACA,aACA,QACA,aACA,QACA,aACA,QACA,aACA,QACA,aACA,uBACA,aACA,gBACA,uBACA,cACA,sBACA,gBACA,cACA,iBACA,iBACA,gBACA,kBACA,iBACA,oBACA,eACA,gBACA,gBACA,YACA,cACA,wBACA,gBACA,wBACA,qBACA,kCACA,uBACA,mBACA,iBACA,qBACA,YACA,aACA,iBACA,OACA,UACA,kBACA,eACA,YACA,WACA,cACA,WACA,kBACA,gBACA,WACA,aACA,iBACA,kBACA,2BACA,aACA,aACA,+BACA,mBACA,WACA,oBACA,eACA,cACA,kBACA,eACA,MACA,kBACA,eACA,YACA,kBACA,cACA,yBACA,iBACA,+BACA,iBACA,oBACA,+BACA,oBACA,+BACA,oBACA,+BACA,6BACA,oBACA,+BACA,kBACA,YACA,kBACA,4BACA,aACA,cACA,qBACA,8BACA,qBACA,IACA,WACA,UACA,iBACA,YACA,cACA,WACA,iBACA,KACA,aACA,aACA,mBACA,iBACA,oBACA,mBACA,wBACA,mBACA,KACA,QACA,UACA,oBACA,gBACA,kBACA,WACA,cACA,aACA,aACA,oBACA,mBACA,gBACA,yBACA,qBACA,aACA,kBACA,eACA,uBACA,aACA,gBACA,YACA,eACA,kBACA,eACA,iBACA,gBACA,gBACA,oBACA,eACA,iBACA,2BACA,YACA,YACA,kBACA,gBACA,kBACA,kBACA,qBACA,gBACA,gBACA,cACA,uBACA,oBACA,iBACA,kBACA,gBACA,cACA,oBACA,2BACA,uBACA,6BACA,gBACA,iBACA,gBACA,iBACA,iBACA,cACA,eACA,cACA,aACA,eACA,cACA,eACA,oBACA,YACA,gBACA,cACA,WACA,eACA,iBACA,mBACA,iCACA,gBACA,uBACA,eACA,oBACA,SACA,kBACA,eACA,eACA,cACA,cACA,kBACA,eACA,cACA,eACA,sBACA,cACA,YACA,YACA,kBACA,iBACA,uBACA,eACA,cACA,gBACA,YACA,sBACA,YACA,YACA,aACA,sBACA,uBACA,oBACA,gBACA,YACA,iBACA,UACA,SACA,yBACA,kBACA,iBACA,gBACA,eACA,wBACA,KACA,aACA,WACA,gBACA,iBACA,gBACA,kBACA,uBACA,uBACA,mBACA,qBACA,qBACA,uBACA,wBACA,mBACA,qBACA,yBACA,cACA,oBACA,uBACA,2BACA,sBACA,qBACA,YACA,oBACA,SACA,2BACA,oBACA,mBACA,sBACA,8BACA,kBACA,2BACA,wBACA,gBACA,yBACA,uBACA,UACA,uBACA,aACA,WACA,aACA,gBACA,kBACA,iBACA,iBACA,iBACA,eACA,sBACA,eACA,gBACA,WACA,QACA,kBACA,kBACA,cACA,kBACA,sBACA,YACA,eACA,mCACA,8BACA,2BACA,iBACA,qBACA,+BACA,4BACA,uBACA,wBACA,sBACA,aACA,iBACA,2BACA,0BACA,cACA,QACA,eACA,kBACA,UACA,QACA,eACA,mBACA,wBACA,aACA,gBACA,uBACA,YACA,gBACA,kBACA,gBACA,cACA,aACA,gBACA,cACA,cACA,oBACA,uBACA,SACA,oBACA,uBACA,mBACA,gBACA,QACA,aACA,oBACA,WACA,kBACA,WACA,UACA,iBACA,6BACA,WACA,UACA,gBACA,kBACA,gBACA,cACA,cACA,oBACA,WACA,iBACA,WACA,gBACA,WACA,YACA,2BACA,cACA,0BACA,oBACA,aACA,eACA,kCACA,wBACA,0BACA,gBACA,qBACA,sBACA,yBACA,iBACA,oBACA,2BACA,yBACA,cACA,oBACA,qBACA,YACA,oBACA,yBACA,gBACA,eACA,WACA,uBACA,kBACA,uBACA,kBACA,iBACA,gBACA,OACA,UACA,yBACA,mCACA,6BACA,aACA,+BACA,oCACA,2BACA,uBACA,aACA,cACA,iBACA,6BACA,kCACA,6BACA,0BACA,kBACA,mBACA,2BACA,0BACA,8BACA,sBACA,yBACA,mBACA,sBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,0BACA,yBACA,qBACA,eACA,wBACA,gBACA,0BACA,qBACA,0BACA,2BACA,0BACA,sBACA,mCACA,oBACA,YACA,uBACA,iBACA,YACA,yBACA,aACA,oBACA,mBACA,sBACA,cACA,SACA,OACA,kBACA,UACA,iBACA,sBACA,WACA,YACA,aACA,uBACA,kBACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,eACA,aACA,WACA,eACA,eACA,eACA,eACA,oBACA,sBACA,OACA,aACA,SACA,cACA,iBACA,wBACA,WACA,sBACA,2BACA,aACA,oBACA,yBACA,eACA,iBACA,IACA,YACA,qBACA,eACA,kBACA,eACA,6BACA,WACA,iBACA,kBACA,gBACA,2BACA,uBACA,sBACA,YACA,YACA,YACA,YACA,aACA,iBACA,sBACA,gBACA,iBACA,4BACA,eACA,UACA,MACA,MACA,uBACA,gBACA,UACA,cACA,aACA,WACA,kBACA,SACA,aACA,mBACA,OACA,YACA,UACA,YACA,UACA,WACA,cACA,kBACA,WACA,cACA,iBACA,kBACA,kBACA,gBACA,kBACA,WACA,aACA,YACA,wBACA,iBACA,8BACA,mBACA,kBACA,aACA,0BACA,WACA,iBACA,6BACA,yBACA,WACA,QACA,UACA,gBACA,mBACA,eACA,aACA,kBACA,YACA,WACA,mBACA,WACA,QACA,aACA,kBACA,kBACA,QACA,aACA,aACA,gBACA,qBACA,WACA,mBACA,eACA,mBACA,kBACA,sBACA,mBACA,YACA,kBACA,0BACA,mBACA,QACA,SACA,OACA,WACA,oBACA,cACA,gBACA,SACA,gBACA,mBACA,qBACA,oBACA,oBACA,WACA,MACA,aACA,YACA,cACA,YACA,oBACA,sBACA,eACA,0BACA,eACA,2BACA,OACA,YACA,eACA,sBACA,oBACA,iBACA,oBACA,iBACA,kBACA,UACA,eACA,gBACA,eACA,kBACA,oBACA,mBACA,kBACA,eACA,kBACA,aACA,gBACA,mBACA,WACA,iBACA,cACA,eACA,gBACA,gBACA,mBACA,YACA,YACA,eACA,SACA,cACA,WACA,OACA,YACA,mBACA,gBACA,gBACA,cACA,WACA,iBACA,WACA,YACA,kBACA,eACA,eACA,UACA,QACA,aACA,mBACA,mBACA,gBACA,qBACA,oBACA,kBACA,kBACA,6BACA,uBACA,6BACA,sBACA,wBACA,cACA,gBACA,2BACA,sBACA,YACA,oBACA,oBACA,0BACA,YACA,aACA,YACA,UACA,YACA,aACA,WACA,gBACA,eACA,cACA,YACA,cACA,WACA,eACA,cACA,aACA,QACA,oBACA,0BACA,sBACA,OACA,YACA,mBACA,eACA,+BACA,4BACA,wBACA,sBACA,gCACA,cACA,iBACA,uBACA,qBACA,oBACA,mBACA,cACA,sBACA,UACA,iBACA,YACA,uBACA,iBACA,8BACA,kBACA,YACA,YACA,aACA,wBACA,8BACA,+BACA,aACA,cACA,cACA,gBACA,eACA,YACA,cACA,iBACA,aACA,YACA,YACA,eACA,WACA,gBACA,aACA,WACA,aACA,WACA,cACA,eACA,eACA,qBACA,WACA,eACA,aACA,QACA,cACA,YACA,gBACA,kBACA,OACA,WACA,cACA,kBACA,oBACA,eACA,gBACA,oBACA,iBACA,kBACA,oBACA,SACA,aACA,+BACA,oBACA,kCACA,eACA,iBACA,oBACA,iBACA,cACA,aACA,gBACA,0BACA,uBACA,WACA,WACA,aACA,kBACA,gBACA,QACA,yBACA,yBACA,wBACA,eACA,wBACA,iBACA,mBACA,oBACA,wBACA,6BACA,+BACA,iBACA,mBACA,iBACA,UACA,gBACA,cACA,wBACA,wBACA,aACA,6BACA,gBACA,sBACA,oBACA,cACA,eACA,kCACA,cACA,cACA,YACA,gBACA,0BACA,eACA,UACA,oBACA,aACA,oBACA,mBACA,cACA,iBACA,wBACA,gBACA,SACA,MACA,QACA,OACA,aACA,WACA,uBACA,gBACA,cACA,uBACA,kBACA,gBACA,gBACA,gBACA,0BACA,aACA,6BACA,wBACA,UACA,cACA,wBACA,YACA,UACA,wBACA,iCACA,2BACA,oCACA,eACA,yBACA,WACA,YACA,gBACA,qBACA,iBACA,2BACA,SACA,WACA,iBACA,UACA,eACA,aACA,iBACA,kBACA,qBACA,wBACA,yBACA,gBACA,mBACA,eACA,yBACA,mBACA,qBACA,SACA,uBACA,kBACA,eACA,WACA,gBACA,eACA,YACA,cACA,iBACA,mBACA,2BACA,UACA,gBACA,UACA,wBACA,cACA,aACA,WACA,uBACA,uBACA,aACA,oBACA,uBACA,eACA,YACA,wBACA,WACA,YACA,iBACA,YACA,6BACA,4BACA,yBACA,wBACA,8BACA,uBACA,oBACA,iBACA,oBACA,aACA,cACA,yBACA,kBACA,mBACA,SACA,MACA,SACA,WACA,QACA,aACA,YACA,YACA,8BACA,UACA,qBACA,qBACA,qBACA,uBACA,0BACA,UACA,6BACA,gBACA,+BACA,mBACA,oBACA,oBACA,4BACA,wBACA,kBACA,kBACA,SACA,WACA,kBACA,qBACA,2BACA,sBACA,WACA,yBACA,yBACA,gCACA,gBACA,kBACA,kBACA,kBACA,kBACA,kBACA,WACA,gBACA,aACA,aACA,WACA,YACA,aACA,iBACA,YACA,2BACA,aACA,cACA,6BACA,UACA,aACA,sBACA,MACA,UACA,iBACA,mBACA,UACA,YACA,uBACA,cACA,qBACA,qBACA,yBACA,cACA,YACA,YACA,WACA,WACA,gBACA,WACA,gBACA,oBACA,qBACA,gBACA,YACA,eACA,wBACA,kBACA,WACA,cACA,oBACA,WACA,sBACA,aACA,qBACA,OACA,wBACA,aACA,4BACA,yBACA,gBACA,aACA,oBACA,qBACA,mBACA,YACA,kBACA,uBACA,SACA,kBACA,eACA,kBACA,SACA,UACA,gBACA,sBACA,iBACA,kBACA,UACA,kBACA,oBACA,mBACA,cACA,aACA,OACA,iBACA,iBACA,gBACA,WACA,WACA,aACA,mBACA,YACA,WACA,QACA,mBACA,kBACA,wBACA,yBACA,OACA,mBACA,gBACA,oBACA,gBACA,gBACA,iBACA,kBACA,kBACA,YACA,wBACA,gBACA,wBACA,kBACA,gBACA,iBACA,kBACA,YACA,yBACA,aACA,cACA,cACA,YACA,UACA,gBACA,cACA,cACA,gBACA,iBACA,gBACA,WACA,mBACA,iBACA,kBACA,mBACA,SACA,gBACA,oBACA,eACA,WACA,uBACA,MACA,mBACA,UACA,YACA,cACA,YACA,YACA,oBACA,yBACA,WACA,uBACA,kBACA,wBACA,WACA,SACA,kBACA,SACA,qBACA,eACA,UACA,wBACA,QACA,YACA,WACA,UACA,kBACA,oBACA,mBACA,WACA,gBACA,eACA,sBACA,wBACA,iBACA,qBACA,cACA,iBACA,aACA,qBACA,YACA,sBACA,MACA,QACA,OACA,4BACA,UACA,iBACA,gBACA,SACA,UACA,YACA,WACA,gBACA,oBACA,eACA,sBACA,gBACA,gBACA,iBACA,oCACA,iBACA,eACA,kBACA,eACA,iBACA,mBACA,YACA,oBACA,4BACA,gBACA,SACA,gBACA,iBACA,2BACA,kBACA,SACA,UACA,eACA,gBACA,gBACA,YACA,eACA,gBACA,wBACA,4BACA,0BACA,2BACA,qBACA,yBACA,yBACA,gBACA,OACA,eACA,kBACA,kBACA,qBACA,eACA,YACA,mBACA,gBACA,YACA,gBACA,YACA,eACA,oBACA,uBACA,cACA,iBACA,cACA,qBACA,qBACA,mBACA,oBACA,cACA,0BACA,0BACA,sBACA,eACA,gBACA,wBACA,iBACA,yCACA,kCACA,4BACA,IACA,uBACA,QACA,QACA,eACA,sBACA,OACA,UACA,UACA,cACA,kBACA,sBACA,SACA,WACA,gBACA,gBACA,UACA,eACA,UACA,kBACA,mBACA,mBACA,uBACA,YACA,aACA,4BACA,QACA,WACA,+BACA,0BACA,mBACA,2BACA,kCACA,oBACA,gBACA,8BACA,mBACA,oBACA,OACA,uBACA,iBACA,oBACA,YACA,WACA,WACA,YACA,gBACA,YACA,WACA,gBACA,2BACA,WACA,aACA,YACA,UACA,aACA,oBACA,oBACA,aACA,aACA,kBACA,iBACA,WACA,iBACA,gBACA,YACA,wBACA,UACA,iBACA,uBACA,kBACA,WACA,kBACA,2BACA,UACA,kBACA,aACA,YACA,aACA,iBACA,iBACA,iBACA,UACA,WACA,wBACA,YACA,uBACA,yBACA,+BACA,qBACA,eACA,gBACA,gBACA,gBACA,gBACA,oBACA,eACA,OACA,WACA,WACA,YACA,wBACA,0BACA,eACA,WACA,aACA,YACA,mBACA,cACA,kBACA,aACA,YACA,YACA,YACA,YACA,eACA,mBACA,iBACA,6BACA,kCACA,+BACA,iCACA,yBACA,eACA,iCACA,OACA,WACA,oBACA,2BACA,sBACA,cACA,sBACA,uBACA,mBACA,cACA,sBACA,uBACA,mBACA,MACA,WACA,OACA,SACA,qBACA,iBACA,qBACA,YACA,aACA,qCACA,gBACA,kBACA,eACA,MACA,eACA,YACA,uBACA,WACA,gBACA,mBACA,0BACA,gBACA,0BACA,iBACA,kBACA,iBACA,oBACA,4BACA,mBACA,uBACA,mBACA,eACA,cACA,iBACA,sBACA,0BACA,iBACA,iBACA,eACA,eACA,gBACA,cACA,eACA,YACA,eACA,oBACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,aACA,kBACA,sBACA,oBACA,iBACA,uBACA,kBACA,UACA,kBACA,eACA,uBACA,kBACA,qBACA,uBACA,UACA,eACA,mBACA,iBACA,cACA,oBACA,eACA,0BACA,oBACA,cACA,mBACA,wBACA,mBACA,oBACA,mBACA,sBACA,wBACA,kBACA,uBACA,oBACA,yBACA,YACA,iBACA,cACA,mBACA,wBACA,mBACA,cACA,mBACA,WACA,gBACA,oBACA,gBACA,iBACA,MACA,eACA,eACA,WACA,kBACA,SACA,SACA,eACA,OACA,YACA,uBACA,qBACA,OACA,cACA,YACA,YACA,SACA,gBACA,kBACA,cACA,eACA,yBACA,0BACA,8BACA,2BACA,iCACA,uBACA,0BACA,uBACA,aACA,eACA,iBACA,cACA,mBACA,gBACA,cACA,UACA,kBACA,cACA,eACA,YACA,uBACA,iBACA,gBACA,eACA,gBACA,mBACA,kBACA,WACA,gBACA,UACA,mBACA,cACA,IACA,gBACA,uBACA,sBACA,0BACA,mBACA,YACA,aACA,OACA,MACA,SACA,UACA,KACA,cACA,OACA,cACA,UACA,kBACA,yBACA,OACA,aACA,SACA,YACA,mBACA,aACA,8BACA,UACA,WACA,qBACA,gBACA,YACA,UACA,kBACA,kBACA,kBACA,WACA,kBACA,0BACA,UACA,UACA,gBACA,iBACA,cACA,iBACA,wBACA,KACA,SACA,QACA,oBACA,WACA,WACA,aACA,gBACA,YACA,2BACA,eACA,2BACA,gBACA,oBACA,MACA,QACA,eACA,kBACA,sBACA,8BACA,2BACA,aACA,iBACA,iBACA,2BACA,mBACA,cACA,iBACA,kBACA,eACA,OACA,UACA,UACA,WACA,UACA,WACA,UACA,aACA,oBACA,eACA,aACA,gBACA,uBACA,YACA,aACA,kBACA,QACA,YACA,UACA,gBACA,aACA,oBACA,qBACA,sBACA,wBACA,wBACA,gBACA,eACA,aACA,mBACA,oBACA,gBACA,sBACA,eACA,eACA,gBACA,aACA,mBACA,qBACA,cACA,uBACA,mBACA,eACA,kBACA,eACA,aACA,UACA,eACA,cACA,kBACA,UACA,WACA,iBACA,iBACA,kBACA,kBACA,cACA,kBACA,cACA,aACA,qBACA,YACA,YACA,aACA,mBACA,iBACA,kBACA,wBACA,cACA,cACA,kBACA,cACA,uBACA,cACA,OACA,UACA,iBACA,QACA,WACA,kBACA,UACA,eACA,kBACA,yBACA,aACA,qBACA,kBACA,mBACA,gBACA,mBACA,kBACA,aACA,iBACA,mBACA,kBACA,cACA,kBACA,cACA,gBACA,gBACA,kBACA,iBACA,cACA,gBACA,cACA,YACA,qBACA,+BACA,qBACA,+BACA,qBACA,oBACA,yBACA,iBACA,mBACA,sBACA,mBACA,YACA,aACA,gBACA,kBACA,kBACA,0BACA,uBACA,0BACA,kBACA,0BACA,aACA,eACA,aACA,iBACA,qBACA,6BACA,WACA,OACA,eACA,6BACA,WACA,0BACA,eACA,YACA,uBACA,cACA,cACA,YACA,eACA,iBACA,eACA,qBACA,iBACA,eACA,QACA,2BACA,0BACA,cACA,OACA,YACA,aACA,UACA,iBACA,kBACA,kBACA,cACA,cACA,cACA,QACA,aACA,MACA,aACA,aACA,uBACA,yBACA,sBACA,wBACA,cACA,gBACA,iBACA,kBACA,YACA,4BACA,wBACA,cACA,mBACA,YACA,cACA,mBACA,0BACA,oBACA,iBACA,kBACA,oBACA,qBACA,mBACA,oBACA,kBACA,mBACA,oBACA,iBACA,iBACA,mBACA,mBACA,qBACA,qBACA,eACA,qBACA,UACA,oBACA,gBACA,wBACA,sBACA,kBACA,mBACA,oBACA,mBACA,kBACA,aACA,mBACA,gBACA,eACA,aACA,eACA,qBACA,KACA,OACA,iBACA,WACA,UACA,sBACA,iBACA,UACA,YACA,kBACA,WACA,aACA,cACA,kBACA,WACA,OACA,iBACA,WACA,mBACA,aACA,sBACA,SACA,cACA,mBACA,qBACA,QACA,cACA,iBACA,cACA,eACA,qBACA,iBACA,oBACA,aACA,YACA,OACA,mBACA,YACA,OACA,SACA,cACA,eACA,aACA,YACA,aACA,aACA,cACA,cACA,aACA,YACA,oBACA,2BACA,mBACA,aACA,YACA,YACA,YACA,OACA,YACA,aACA,YACA,WACA,QACA,aACA,oBACA,WACA,kBACA,yBACA,eACA,uBACA,mBACA,cACA,aACA,wBACA,sBACA,mCACA,yBACA,YACA,yBACA,iBACA,4BACA,sBACA,sBACA,sBACA,iBACA,gBACA,YACA,kBACA,iBACA,YACA,aACA,kBACA,0BACA,YACA,UACA,eACA,sBACA,kBACA,eACA,aACA,oBACA,qBACA,uBACA,mBACA,uBACA,eACA,aACA,kBACA,gBACA,uBACA,wBACA,iBACA,0BACA,kBACA,UACA,wBACA,wBACA,iBACA,gBACA,gBACA,gBACA,cACA,qBACA,8BACA,mBACA,sBACA,cACA,6BACA,eACA,YACA,eACA,sBACA,YACA,cACA,WACA,gBACA,kBACA,mBACA,WACA,0BACA,mBACA,2BACA,oBACA,gBACA,8BACA,gBACA,UACA,aACA,QACA,oBACA,cACA,WACA,eACA,aACA,uBACA,wBACA,2BACA,aACA,iBACA,WACA,gBACA,qBACA,gBACA,YACA,gBACA,eACA,UACA,iBACA,oBACA,uBACA,wBACA,8BACA,iBACA,kBACA,sBACA,SACA,eACA,UACA,eACA,YACA,qBACA,gBACA,uBACA,WACA,eACA,eACA,yBACA,qBACA,QACA,UACA,aACA,UACA,cACA,SACA,SACA,aACA,uBACA,gBACA,oBACA,sBACA,iBACA,QACA,kBACA,cACA,YACA,iBACA,kBACA,oBACA,6BACA,2BACA,aACA,sBACA,iBACA,iBACA,QACA,WACA,kBACA,qBACA,2BACA,qBACA,yBACA,aACA,yBACA,eACA,cACA,0BACA,kBACA,gBACA,uBACA,iBACA,oBACA,mBACA,qBACA,YACA,mBACA,qBACA,gBACA,8BACA,oBACA,qBACA,gBACA,oBACA,UACA,sBACA,aACA,oBACA,uBACA,8BACA,oBACA,aACA,SACA,aACA,cACA,kBACA,aACA,WACA,eACA,gBACA,aACA,eACA,UACA,YACA,cACA,UACA,gBACA,4BACA,YACA,cACA,aACA,uBACA,SACA,MACA,YACA,UACA,aACA,oBACA,YACA,aACA,SACA,qBACA,eACA,cACA,aACA,kBACA,uBACA,wBACA,WACA,eACA,WACA,gBACA,uBACA,eACA,oBACA,YACA,eACA,mBACA,gCACA,6BACA,6BACA,mCACA,WACA,oBACA,YACA,mBACA,QACA,oBACA,oBACA,iBACA,mBACA,yBACA,kBACA,kBACA,QACA,YACA,OACA,WACA,oBACA,iBACA,wBACA,sBACA,sBACA,aACA,oBACA,cACA,iBACA,iBACA,wBACA,QACA,iBACA,eACA,gBACA,oBACA,gBACA,OACA,SACA,mBACA,eACA,cACA,gBACA,aACA,eACA,iBACA,uBACA,oBACA,cACA,cACA,iBACA,gBACA,oBACA,cACA,2BACA,gBACA,mBACA,cACA,aACA,eACA,aACA,gBACA,aACA,aACA,gBACA,oBACA,aACA,QACA,cACA,qBACA,YACA,YACA,mBACA,SACA,WACA,cACA,qBACA,cACA,YACA,mBACA,YACA,aACA,WACA,sBACA,oBACA,cACA,YACA,SACA,WACA,WACA,UACA,YACA,uBACA,KACA,kBACA,oBACA,kBACA,OACA,gBACA,WACA,WACA,gBACA,aACA,OACA,UACA,wBACA,aACA,eACA,QACA,WACA,OACA,oBACA,wBACA,mBACA,uBACA,qBACA,SACA,cACA,mBACA,YACA,eACA,sBACA,iBACA,mBACA,8BACA,mBACA,kBACA,sBACA,MACA,SACA,SACA,qBACA,mBACA,uBACA,SACA,mBACA,sBACA,UACA,cACA,SACA,iBACA,iBACA,sBACA,eACA,iBACA,kBACA,gBACA,mBACA,iBACA,kBACA,iBACA,iBACA,yBACA,2BACA,cACA,gBACA,qBACA,YACA,iBACA,cACA,qBACA,gBACA,eACA,uBACA,eACA,gBACA,wBACA,aACA,eACA,gBACA,UACA,eACA,gBACA,aACA,4BACA,cACA,eACA,4BACA,oBACA,iBACA,oBACA,iBACA,OACA,aACA,WACA,YACA,YACA,qBACA,gBACA,UACA,cACA,0BACA,cACA,aACA,6BACA,sBACA,uBACA,kBACA,uBACA,mCACA,oBACA,gBACA,yBACA,iBACA,aACA,mBACA,qBACA,yBACA,YACA,mBACA,oBACA,SACA,qBACA,yBACA,oBACA,mBACA,wBACA,2BACA,UACA,mBACA,0BACA,2BACA,iBACA,sBACA,cACA,oBACA,kBACA,aACA,YACA,mBACA,iBACA,aACA,aACA,WACA,eACA,iBACA,iBACA,mBACA,UACA,aACA,YACA,kBACA,oBACA,cACA,cACA,oBACA,kBACA,iBACA,6BACA,aACA,0BACA,mBACA,UACA,qBACA,iBACA,qBACA,eACA,UACA,aACA,cACA,UACA,wBACA,kBACA,eACA,mBACA,iBACA,mBACA,iBACA,iBACA,2BACA,iBACA,qBACA,qBACA,iBACA,kBACA,eACA,OACA,kBACA,aACA,YACA,eACA,SACA,uBACA,oBACA,yBACA,wBACA,eACA,wBACA,mBACA,UACA,iBACA,mCACA,iBACA,qBACA,eACA,cACA,gBACA,uBACA,iBACA,mBACA,WACA,eACA,mBACA,cACA,WACA,qBACA,iBACA,YACA,SACA,QACA,aACA,gBACA,sBACA,mBACA,2BACA,qBACA,kBACA,qBACA,WACA,gBACA,iBACA,gBACA,mBACA,qBACA,oBACA,mBACA,gBACA,mBACA,cACA,iBACA,UACA,qBACA,4BACA,0BACA,2BACA,8BACA,qBACA,qBACA,eACA,OACA,kBACA,gBACA,gBACA,iBACA,eACA,aACA,QACA,UACA,WACA,SACA,cACA,aACA,cACA,iBACA,cACA,qBACA,iBACA,oBACA,QACA,eACA,iBACA,MACA,gBACA,iBACA,SACA,aACA,WACA,eACA,YACA,YACA,cACA,SACA,cACA,eACA,kBACA,OACA,gBACA,cACA,WACA,WACA,aACA,YACA,MACA,aACA,mBACA,aACA,oBACA,iBACA,0BACA,SACA,QACA,WACA,qBACA,qBACA,cACA,uBACA,mBACA,aACA,iBACA,gBACA,eACA,cACA,gBACA,sBACA,0BACA,eACA,WACA,OACA,WACA,iBACA,iBACA,kBACA,sBACA,eACA,QACA,SACA,iBACA,sBACA,cACA,eACA,cACA,kBACA,mBACA,gBACA,mBACA,OACA,gBACA,uBACA,2BACA,+BACA,sBACA,iBACA,qBACA,iBACA,8BACA,WACA,gBACA,WACA,gBACA,kBACA,yBACA,uBACA,aACA,cACA,gBACA,cACA,wBACA,aACA,mBACA,iBACA,mBACA,oBACA,gBACA,oBACA,qBACA,MACA,OACA,mBACA,8BACA,kBACA,cACA,gBACA,eACA,gBACA,2BACA,4BACA,sBACA,aACA,SACA,aACA,mBACA,gBACA,mBACA,cACA,YACA,mBACA,gBACA,0BACA,4BACA,2BACA,sBACA,uBACA,oBACA,8BACA,gBACA,uBACA,qBACA,YACA,gBACA,iBACA,uBACA,yBACA,kCACA,2BACA,WACA,cACA,WACA,oBACA,yBACA,gBACA,gBACA,eACA,mBACA,eACA,eACA,uBACA,oBACA,oBACA,mBACA,kBACA,4BACA,kBACA,oBACA,uBACA,gBACA,SACA,oBACA,aACA,iBACA,iBACA,oBACA,iBACA,gBACA,iBACA,kBACA,gBACA,gBACA,cACA,MACA,cACA,kBACA,gBACA,WACA,oBACA,aACA,aACA,eACA,iBACA,cACA,0BACA,aACA,mBACA,iBACA,eACA,cACA,8BACA,sBACA,oBACA,oBACA,oBACA,iBACA,mBACA,SACA,YACA,YACA,mBACA,UACA,WACA,UACA,UACA,iBACA,kBACA,QACA,cACA,UACA,iBACA,oBACA,cACA,mBACA,8BACA,wBACA,QACA,iBACA,WACA,gBACA,uBACA,iBACA,kBACA,mBACA,uBACA,eACA,OACA,kBACA,qBACA,iBACA,kBACA,gBACA,eACA,qBACA,iBACA,eACA,eACA,oBACA,yBACA,kBACA,0BACA,iBACA,0BACA,gBACA,mBACA,wBACA,uBACA,mBACA,iBACA,wBACA,eACA,cACA,kBACA,kBACA,iBACA,OACA,YACA,iBACA,uBACA,oBACA,cACA,WACA,kBACA,cACA,eACA,iBACA,oBACA,UACA,WACA,MACA,OACA,2BACA,mBACA,sBACA,oBACA,6BACA,oBACA,oBACA,iBACA,OACA,eACA,cACA,aACA,WACA,oBACA,sBACA,WACA,yBACA,YACA,OACA,qBACA,qBACA,oBACA,oBACA,SACA,WACA,cACA,qBACA,YACA,mBACA,iBACA,YACA,OACA,eACA,QACA,cACA,UACA,qBACA,wBACA,0BACA,yBACA,kBACA,oBACA,2BACA,qBACA,eACA,UACA,gBACA,iBACA,kBACA,SACA,gBACA,eACA,iBACA,eACA,aACA,oBACA,eACA,UACA,gBACA,iBACA,eACA,2BACA,eACA,yBACA,YACA,aACA,yBACA,YACA,6BACA,sBACA,6BACA,uBACA,uBACA,eACA,QACA,cACA,eACA,cACA,OACA,SACA,WACA,oBACA,QACA,mBACA,YACA,cACA,aACA,gBACA,MACA,QACA,iBACA,YACA,SACA,WACA,OACA,kBACA,wBACA,gBACA,eACA,eACA,oBACA,cACA,cACA,qBACA,gBACA,cACA,eACA,yBACA,4BACA,kBACA,2BACA,2BACA,WACA,gBACA,oBACA,4BACA,mBACA,qBACA,wBACA,6BACA,uBACA,QACA,gBACA,mBACA,cACA,cACA,kBACA,mBACA,cACA,mBACA,cACA,cACA,oBACA,kBACA,mBACA,qBACA,yBACA,uBACA,2BACA,kBACA,SACA,YACA,mBACA,eACA,mBACA,mBACA,oBACA,oBACA,qBACA,kBACA,kBACA,iBACA,uBACA,0BACA,eACA,oBACA,eACA,oBACA,yBACA,eACA,oBACA,eACA,oBACA,SACA,sBACA,eACA,eACA,cACA,gBACA,QACA,UACA,eACA,YACA,OACA,UACA,iBACA,SACA,2BACA,cACA,qBACA,gBACA,yBACA,WACA,eACA,oBACA,iBACA,sBACA,cACA,aACA,cACA,mBACA,wBACA,qBACA,QACA,aACA,gBACA,sBACA,kBACA,eACA,eACA,yBACA,oBACA,0BACA,eACA,cACA,eACA,oBACA,sBACA,OACA,kBACA,WACA,YACA,wBACA,uBACA,mBACA,cACA,gBACA,eACA,qBACA,eACA,kBACA,kBACA,qBACA,uBACA,gBACA,kBACA,wBACA,sBACA,+BACA,yBACA,mCACA,6BACA,aACA,mBACA,cACA,0BACA,iBACA,iBACA,aACA,aACA,uBACA,oBACA,oBACA,kBACA,sBACA,8BACA,sBACA,sBACA,6BACA,oBACA,gBACA,aACA,eACA,eACA,iBACA,UACA,cACA,cACA,qBACA,SACA,cACA,kBACA,cACA,kBACA,cACA,eACA,aACA,cACA,mBACA,gBACA,aACA,eACA,gBACA,cACA,eACA,aACA,eACA,eACA,gBACA,iBACA,aACA,kBACA,iBACA,UACA,eACA,gBACA,oBACA,oBACA,gBACA,eACA,mBACA,oBACA,iBACA,cACA,gBACA,aACA,iBACA,iBACA,oBACA,iBACA,aACA,aACA,eACA,oBACA,oBACA,aACA,gBACA,uBACA,kBACA,uBACA,sBACA,UACA,UACA,OACA,uBACA,QACA,WACA,qBACA,YACA,mBACA,YACA,aACA,kBACA,mBACA,0BACA,aACA,aACA,iBACA,YACA,eACA,WACA,WACA,UACA,mCACA,0BACA,gBACA,YACA,eACA,sBACA,cACA,eACA,SACA,cACA,cACA,cACA,YACA,iBACA,UACA,gBACA,UACA,UACA,qBACA,iBACA,oBACA,2BACA,mBACA,yBACA,WACA,eACA,gBACA,YACA,WACA,gBACA,qBACA,gBACA,UACA,WACA,MACA,iBACA,iBACA,SACA,cACA,UACA,SACA,cACA,aACA,gBACA,YACA,cACA,iBACA,wBACA,WACA,gBACA,YACA,OACA,WACA,oBACA,cACA,eACA,cACA,kBACA,uBACA,mBACA,gBACA,mBACA,gBACA,qBACA,iBACA,eACA,SACA,SACA,aACA,gBACA,YACA,sBACA,iBACA,eACA,mBACA,sBACA,qBACA,aACA,mBACA,wBACA,iCACA,mCACA,yBACA,4BACA,sBACA,WACA,SACA,aACA,oBACA,eACA,eACA,UACA,0BACA,mBACA,uBACA,sBACA,uBACA,8BACA,oBACA,kBACA,YACA,iBACA,oBACA,wBACA,gBACA,cACA,gBACA,sBACA,uBACA,0BACA,gCACA,kBACA,+BACA,yBACA,eACA,sBACA,iCACA,4BACA,aACA,gBACA,oBACA,kBACA,0BACA,6BACA,oBACA,+BACA,qBACA,yBACA,sBACA,8BACA,qBACA,wBACA,oBACA,oBACA,8BACA,4BACA,mCACA,mCACA,aACA,aACA,MACA,aACA,QACA,kBACA,aACA,kBACA,YACA,gBACA,eACA,YACA,eACA,wBACA,yBACA,sBACA,uBACA,wBACA,sBACA,cACA,UACA,aACA,oBACA,SACA,aACA,gBACA,eACA,SACA,gBACA,WACA,WACA,OACA,WACA,cACA,gBACA,WACA,eACA,iBACA,YACA,QACA,MACA,OACA,eACA,kBACA,eACA,cACA,YACA,cACA,aACA,aACA,aACA,QACA,cACA,WACA,aACA,mBACA,gBACA,iBACA,cACA,qBACA,mBACA,qBACA,aACA,iBACA,mBACA,eACA,uBACA,sBACA,mBACA,eACA,eACA,qBACA,YACA,oBACA,iBACA,mBACA,eACA,gBACA,UACA,aACA,eACA,iBACA,kBACA,cACA,uBACA,kBACA,qBACA,SACA,aACA,mBACA,mBACA,cACA,iBACA,wBACA,UACA,UACA,OACA,YACA,mBACA,gBACA,WACA,kBACA,UACA,YACA,WACA,oBACA,eACA,WACA,cACA,WACA,WACA,oBACA,WACA,aACA,gBACA,eACA,gBACA,aACA,mBACA,gBACA,aACA,gBACA,YACA,kBACA,UACA,4BACA,2BACA,YACA,YACA,oBACA,mBACA,QACA,YACA,OACA,WACA,WACA,qBACA,kBACA,SACA,WACA,iBACA,eACA,YACA,UACA,QACA,YACA,YACA,WACA,gBACA,uBACA,uBACA,aACA,cACA,gBACA,QACA,aACA,WACA,QACA,aACA,iBACA,aACA,kBACA,iBACA,gBACA,aACA,WACA,eACA,aACA,cACA,gBACA,QACA,UACA,aACA,sBACA,qBACA,mBACA,0BACA,gBACA,sBACA,kBACA,qBACA,qBACA,oBACA,kBACA,mBACA,mBACA,aACA,oBACA,WACA,YACA,4BACA,sBACA,WACA,kBACA,iBACA,SACA,OACA,gBACA,aACA,UACA,kBACA,UACA,wBACA,SACA,QACA,sBACA,WACA,iBACA,eACA,aACA,WACA,SACA,cACA,UACA,aACA,aACA,oBACA,mBACA,yBACA,aACA,YACA,cACA,WACA,gBACA,SACA,UACA,aACA,oBACA,eACA,eACA,cACA,MACA,kBACA,qBACA,kBACA,aACA,eACA,UACA,QACA,aACA,yBACA,WACA,QACA,cACA,aACA,uBACA,aACA,gBACA,sBACA,8BACA,cACA,YACA,KACA,QACA,aACA,cACA,gBACA,aACA,cACA,eACA,gBACA,aACA,WACA,UACA,gBACA,aACA,YACA,uBACA,iBACA,mBACA,yBACA,eACA,kBACA,8BACA,sBACA,mBACA,4BACA,gCACA,2BACA,+BACA,4BACA,4BACA,yBACA,2BACA,yBACA,yBACA,yBACA,wBACA,wBACA,4BACA,wBACA,sBACA,yBACA,0BACA,uBACA,0BACA,mBACA,qBACA,oBACA,sBACA,qBACA,mBACA,yBACA,2BACA,YACA,qBACA,uBACA,gBACA,cACA,mBACA,YACA,iBACA,eACA,gBACA,mBACA,uBACA,iBACA,qBACA,eACA,aACA,OACA,YACA,eACA,YACA,WACA,aACA,YACA,yBACA,mBACA,2BACA,wBACA,mBACA,2BACA,kBACA,0BACA,mBACA,2BACA,iBACA,cACA,WACA,WACA,YACA,aACA,aACA,aACA,gBACA,YACA,aACA,YACA,UACA,YACA,cACA,WACA,eACA,QACA,kBACA,YACA,WACA,aACA,WACA,qBACA,aACA,WACA,iBACA,oBACA,sBACA,eACA,yBACA,kBACA,OACA,aACA,aACA,iBACA,UACA,aACA,YACA,cACA,kBACA,oBACA,OACA,QACA,wBACA,sBACA,kCACA,+BACA,QACA,OACA,qBACA,4BACA,UACA,iBACA,sBACA,6BACA,UACA,0BACA,cACA,aACA,SACA,aACA,gBACA,kBACA,aACA,QACA,kBACA,eACA,WACA,SACA,gBACA,SACA,aACA,0BACA,YACA,WACA,YACA,aACA,kBACA,qBACA,4BACA,cACA,iBACA,wBACA,sBACA,iBACA,kBACA,mBACA,cACA,uBACA,UACA,YACA,cACA,sBACA,2BACA,oBACA,yBACA,YACA,QACA,qBACA,YACA,SACA,iBACA,iBACA,UACA,cACA,iBACA,UACA,eACA,eACA,WACA,aACA,eACA,aACA,kBACA,kBACA,oBACA,iBACA,WACA,gBACA,iBACA,YACA,8BACA,UACA,mBACA,QACA,cACA,QACA,qBACA,KACA,UACA,aACA,mBACA,SACA,uBACA,kCACA,iBACA,oBACA,oBACA,cACA,gBACA,aACA,iBACA,kBACA,qBACA,wBACA,yBACA,WACA,QACA,eACA,QACA,aACA,OACA,WACA,MACA,WACA,YACA,gBACA,cACA,oBACA,YACA,aACA,YACA,WACA,uBACA,WACA,iBACA,iBACA,UACA,kBACA,UACA,sBACA,aACA,YACA,qBACA,mBACA,qBACA,QACA,gBACA,kBACA,QACA,uBACA,iBACA,mBACA,gBACA,WACA,kBACA,kBACA,YACA,6BACA,SACA,SACA,aACA,oBACA,YACA,WACA,0BACA,4BACA,4BACA,4BACA,eACA,oBACA,iBACA,cACA,eACA,oBACA,sBACA,6BACA,oBACA,yBACA,2BACA,kBACA,gBACA,qBACA,aACA,kBACA,gBACA,aACA,eACA,eACA,UACA,cACA,UACA,cACA,gBACA,cACA,cACA,MACA,WACA,UACA,mBACA,oBACA,mBACA,yBACA,sBACA,uBACA,6BACA,kBACA,wBACA,uBACA,YACA,iBACA,wBACA,eACA,kBACA,qBACA,iBACA,wBACA,oBACA,8BACA,yBACA,cACA,eACA,wBACA,eACA,eACA,uBACA,qBACA,oBACA,yBACA,iBACA,cACA,0BACA,iBACA,eACA,mBACA,aACA,gBACA,qBACA,0BACA,kBACA,UACA,0BACA,gBACA,cACA,sBACA,aACA,cACA,2BACA,yBACA,eACA,uBACA,WACA,cACA,eACA,gBACA,oBACA,iBACA,gBACA,QACA,eACA,eACA,cACA,gBACA,qBACA,iBACA,gBACA,iBACA,cACA,iBACA,YACA,WACA,eACA,qBACA,eACA,aACA,YACA,SACA,cACA,eACA,qBACA,aACA,YACA,cACA,eACA,mBACA,sBACA,iBACA,oBACA,YACA,YACA,aACA,aACA,YACA,4BACA,WACA,iBACA,YACA,aACA,eACA,mBACA,UACA,cACA,iBACA,oBACA,cACA,SACA,uBACA,cACA,UACA,uBACA,WACA,YACA,qBACA,sCACA,yBACA,wBACA,kBACA,sBACA,oBACA,iCACA,mBACA,4BACA,mBACA,kBACA,oBACA,oBACA,aACA,aACA,eACA,mBACA,mBACA,mBACA,4BACA,iCACA,wBACA,mBACA,cACA,sBACA,iBACA,YACA,mBACA,SACA,aACA,WACA,iBACA,UACA,yBACA,SACA,YACA,mBACA,cACA,kBACA,QACA,YACA,sBACA,gBACA,gBACA,gBACA,kBACA,kBACA,kBACA,yBACA,0BACA,0BACA,0BACA,yBACA,yBACA,wBACA,eACA,oBACA,mBACA,kBACA,yBACA,0BACA,eACA,iBACA,UACA,cACA,aACA,YACA,QACA,QACA,QACA,oBACA,aACA,aACA,sBACA,aACA,aACA,uBACA,eACA,gBACA,UACA,+BACA,eACA,iBACA,gBACA,kBACA,SACA,aACA,oBACA,eACA,iBACA,oBACA,iBACA,iBACA,cACA,sBACA,gBACA,gBACA,gBACA,yBACA,iBACA,aACA,mBACA,cACA,iBACA,cACA,gBACA,iBACA,iBACA,qBACA,4BACA,OACA,cACA,WACA,eACA,mBACA,uBACA,qBACA,uBACA,sBACA,OACA,eACA,gBACA,YACA,YACA,aACA,WACA,iBACA,gBACA,oBACA,WACA,kBACA,aACA,wBACA,iBACA,eACA,WACA,kBACA,mBACA,aACA,QACA,YACA,cACA,YACA,aACA,YACA,cACA,OACA,MACA,WACA,SACA,YACA,oBACA,WACA,gBACA,WACA,iBACA,OACA,WACA,cACA,mBACA,aACA,aACA,QACA,aACA,WACA,qBACA,iBACA,4BACA,mBACA,oBACA,iCACA,iBACA,kBACA,eACA,oBACA,iBACA,iBACA,qBACA,sBACA,iBACA,wBACA,cACA,eACA,kBACA,YACA,gBACA,sBACA,YACA,eACA,qBACA,sBACA,oBACA,aACA,kBACA,mBACA,yBACA,mBACA,uBACA,yBACA,sBACA,sBACA,mBACA,eACA,iBACA,gBACA,sBACA,mCACA,eACA,qBACA,uBACA,iBACA,qBACA,WACA,kBACA,eACA,wBACA,WACA,eACA,gBACA,mCACA,eACA,eACA,qBACA,kBACA,oBACA,2BACA,4BACA,eACA,mBACA,wBACA,kBACA,oBACA,sBACA,kBACA,2BACA,eACA,qBACA,2CACA,uBACA,gCACA,WACA,mBACA,uBACA,qBACA,QACA,yBACA,sBACA,gBACA,UACA,uBACA,yBACA,yBACA,iBACA,2BACA,uBACA,UACA,uBACA,gBACA,cACA,YACA,mBACA,0BACA,kBACA,eACA,mBACA,sBACA,wBACA,qBACA,iBACA,iBACA,mBACA,eACA,eACA,aACA,wBACA,mBACA,iBACA,kBACA,iBACA,wBACA,oBACA,kBACA,0BACA,SACA,iBACA,sBACA,aACA,oBACA,yBACA,wBACA,oBACA,kBACA,eACA,YACA,YACA,mBACA,eACA,yBACA,aACA,oBACA,iBACA,uBACA,eACA,QACA,UACA,iBACA,eACA,aACA,mBACA,oBACA,iBACA,kBACA,kBACA,aACA,eACA,oBACA,eACA,wBACA,qBACA,uBACA,0BACA,oBACA,aACA,qBACA,gBACA,iBACA,iBACA,eACA,mBACA,YACA,oBACA,aACA,sBACA,gBACA,eACA,gBACA,oBACA,qBACA,kBACA,cACA,aACA,8BACA,aACA,WACA,eACA,OACA,mBACA,UACA,eACA,mBACA,uBACA,YACA,cACA,mBACA,gBACA,gBACA,QACA,qBACA,mBACA,eACA,wBACA,mBACA,mBACA,iBACA,aACA,QACA,OACA,wBACA,qBACA,YACA,WACA,cACA,gBACA,uBACA,aACA,kBACA,iBACA,sBACA,eACA,qBACA,eACA,wBACA,eACA,kBACA,2BACA,sBACA,iBACA,oBACA,wBACA,0BACA,sBACA,wBACA,sBACA,sBACA,iBACA,iBACA,qBACA,qBACA,kCACA,2BACA,YACA,aACA,iBACA,mBACA,mBACA,gBACA,wBACA,cACA,qBACA,oBACA,oBACA,2BACA,0BACA,yBACA,iBACA,UACA,2BACA,yBACA,YACA,gBACA,eACA,kBACA,oBACA,iBACA,gBACA,sBACA,mBACA,gBACA,aACA,YACA,YACA,YACA,kBACA,gBACA,YACA,WACA,gBACA,mBACA,kBACA,cACA,UACA,uBACA,sBACA,oBACA,iBACA,4BACA,mBACA,oBACA,qBACA,4BACA,0BACA,YACA,YACA,eACA,WACA,iBACA,iBACA,iBACA,eACA,6BACA,aACA,gBA6HF1xP,EAAO59F,QAhHP,SAAqB33D,GACnB,MAAMllE,EAAQklE,EAAKllE,MAQbosd,EAAiBpsd,EAAMspc,OAAOtpc,EAAM1C,OAH1B,+BACO,2BACL,2BAKZ+ud,EAAwBrsd,EAAMspc,OAFhB,iCACC,oCAWfkN,EAAU,CACdj5d,UAAW,SACX4sd,UAAW,EACX14a,MAT4BzxB,EAAM1C,OAClC8ud,EACApsd,EAAMojc,SAASipB,GACfrsd,EAAMojc,SALuB,kBAczByX,EAAY,yBACZyR,EAAqB,IAAIrud,IAAIkud,GAE7BjK,EAAU,CAAEhpe,SAAU,CAC1B,CACEqE,UAAW,iBACXk0C,MAAOopb,EAEP,WAAYxP,CAAC1vc,EAAO3nB,KACbs4e,EAAmB5td,IAAI/C,EAAM,KAAK3nB,EAAS6zd,aAAa,GAGjE,CACEtqd,UAAW,SACX4sd,UAAW,EACX14a,MAAOopb,KAgCL0R,EAAW,CACfhve,UAAW,eACX4sd,UAAW,EACX14a,MAAOzxB,EAAM1C,OAAO,KAAMu9c,IAG5B,MAAO,CACLr9e,KAAM,cACNs/B,QAAS,CACP,MACA,MAEF2yc,iBAAkB,CAChB+c,MAAO,cACPr7b,QAAS,OACT/2C,KAAM,OACNs0O,OAAQ,WACR,kBAAmB,WACnB,iBAAkB,WAClB,eAAgB,UAElBxoM,SAAU,CACRg/C,EAAKr0C,QAAQ,OAAQ,OAAQ,CAAE3K,SAAU,CAAE,UAxC9B,C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pE,EAAK4kY,uBAGTvyb,MAAO,CACL,EAAG,UACH,EAAG,mBAGDsic,EAAmB,CACvB3ge,SAAU,CACR,CAAEyiB,MAAO,CACP,uCACA,MACAupE,EAAK4kY,uBAGTvyb,MAAO,CACL,EAAG,UACH,EAAG,gBAiGP,MAAO,CACL/5C,KAAM,SACNixe,kBAAkB,EAClBztZ,SAAU,CACRksZ,QArDa,CACf,SACA,UACA,WACA,WACA,OACA,SACA,MACA,MACA,QACA,SACA,MACA,WACA,QACA,SACA,OACA,UACA,QACA,QACA,SACA,QACA,MACA,KACA,OACA,OACA,SACA,QACA,QACA,OACA,SACA,QACA,UACA,MACA,KACA,OACA,OACA,SACA,SACA,SACA,QACA,SAEA,MACA,KACA,MACA,MACA,OAQE0J,SAnGc,CAChB,WACA,YACA,QACA,QACA,OACA,QACA,OACA,QACA,OACA,QACA,SACA,QACA,MACA,MACA,OACA,QACA,QACA,MACA,OACA,MACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,OACA,OACA,KACA,SACA,SA8DE36L,QA5Da,CACf,OACA,QACA,SA2DAouL,QAAS,OACTnkb,SAAU,CACRg/C,EAAKr0C,QAAQ,OAAQ,QACrBq0C,EAAKr0C,QACH,IACA,IACA,CAAEs5a,UAAW,IAEfyiB,EACA/S,EACA,CACEt8d,UAAW,oBACXk0C,MAAO,oBAET,CACEl0C,UAAW,OACXk0C,MAAO,OACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QAAS,kCAEvB,CACEvxc,MAAO,CACL,OACA,YAEF4b,MAAO,CAAE,EAAG,SAEd,CACEy0b,cAAe,QACft6a,IAAK,IACLxL,SAAU,CAAEg/C,EAAK+lY,wBAEnB/lY,EAAKolY,kBACL4N,GAGN,aCzCAz9O,EAAO59F,QAnIP,SAAoB33D,GAClB,MAAM8yY,EAAW,CACf9K,QAEE,6IAEFjxL,QACE,iBACF26L,SACE,qRAKE8E,EAAc,2BACdvD,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,MACPC,IAAK,KACLsvB,SAAUg3Z,GAEN2C,EAAc,CAClBz1Y,EAAK6/C,QAAQ7/C,EAAK2lY,cAChB,CAAE0B,OAAQ,CACR76a,IAAK,WACLy4a,UAAW,KAEf,CACE5sd,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACLiO,MAKR,CACE56d,UAAW,WACXk0C,MAAO,MAAQyzC,EAAK2kY,UAEtB,CAAEp4a,MAAO,IAAMyzC,EAAK2kY,UAEpB,CAAEp4a,MAAOyzC,EAAK2kY,SAAW,OAAS3kY,EAAK2kY,WAGzCsO,EAAMjyb,SAAWy0b,EAEjB,MAAM5ve,EAAQm6F,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEv5a,MAAOiqb,IAC/CC,EAAqB,0BACrB7D,EAAS,CACbv6d,UAAW,SACXk0C,MAAO,YACPy8a,aAAa,EAGbhob,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,KACLsvB,SAAUg3Z,EACV9xb,SAAU,CAAE,QAAS5oB,OAAOq9c,MAKlC,MAAO,CACLn9e,KAAM,aACNs/B,QAAS,CAAE,QACXkkD,SAAUg3Z,EACV3N,QAAS,OACTnkb,SAAUy0b,EAAYr9c,OAAO,CAC3B4nE,EAAKr0C,QAAQ,KAAM,KACnB,CACEtzC,UAAW,WACXk0C,MAAO,QAAUiqb,EAAc,YAAcC,EAC7Cjqb,IAAK,QACLw8a,aAAa,EACbhob,SAAU,CACRn7C,EACA+se,IAGJ,CACErmb,MAAO,aACP04a,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,WACXk0C,MAAOkqb,EACPjqb,IAAK,QACLw8a,aAAa,EACbhob,SAAU,CAAE4xb,MAIlB,CACEv6d,UAAW,QACXyud,cAAe,QACft6a,IAAK,IACL24a,QAAS,YACTnkb,SAAU,CACR,CACE8lb,cAAe,UACfiE,gBAAgB,EAChB5F,QAAS,YACTnkb,SAAU,CAAEn7C,IAEdA,IAGJ,CACEwS,UAAW,OACXk0C,MAAOiqb,EAAc,IACrBhqb,IAAK,IACLw8a,aAAa,EACbG,WAAW,EACXlE,UAAW,KAInB,aCkOA1vO,EAAO59F,QAnWP,SAAc33D,GA0TZ,MAAO,CACL1nG,KAAM,OACNixe,kBAAkB,EAClBvob,SAAU,CACR,CACE8lb,cACE,+FACFt6a,IAAK,IACLsvB,SAAU,CACRksZ,QAjUS,CACf,MACA,QACA,UACA,MACA,MACA,QACA,KACA,MACA,QACA,UACA,SACA,UACA,QACA,SACA,QACA,KACA,OACA,OACA,OACA,UACA,UACA,aACA,SACA,UACA,WACA,YACA,QACA,SACA,WACA,UACA,YACA,UACA,YACA,SACA,UACA,OACA,WACA,WACA,KACA,OACA,OACA,UACA,OACA,MACA,QACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,MACA,QACA,OACA,WACA,QACA,QACA,MACA,SACA,KACA,SACA,QACA,KACA,UACA,YACA,QACA,QACA,SACA,QACA,SACA,YACA,OACA,KACA,OACA,MACA,OACA,WACA,QACA,OACA,OACA,MACA,UACA,OACA,QACA,MACA,MACA,UACA,UACA,eACA,QACA,QACA,YACA,OACA,MACA,SACA,SACA,SACA,KACA,SACA,KACA,QACA,QACA,OACA,QACA,YACA,WACA,OACA,OACA,UACA,UACA,UACA,YACA,YACA,SACA,MACA,QACA,SACA,SACA,SACA,YACA,SACA,QACA,OACA,WACA,YACA,SACA,SACA,OACA,OACA,MACA,OACA,OACA,QACA,aACA,SACA,SACA,OACA,KACA,cACA,UACA,WACA,QACA,QACA,SACA,UACA,SACA,QACA,SACA,SACA,MACA,OACA,QACA,WACA,QACA,SACA,SACA,MACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,OA2JMjxL,QAxJS,CACf,OACA,QACA,OACA,aAqJM26L,SAlJU,CAChB,YACA,eACA,eACA,iBACA,cACA,iBACA,eACA,eACA,YACA,YACA,iBACA,gBACA,YACA,cACA,eACA,eACA,gBACA,gBACA,aACA,YACA,MACA,QACA,MACA,MACA,MACA,WACA,QACA,YACA,kBACA,SACA,YACA,SACA,QACA,QACA,aACA,SACA,WACA,WACA,eACA,YACA,kBACA,eACA,mBACA,gBACA,mBACA,gBACA,oBACA,iBACA,kBACA,SACA,gBACA,gBACA,gBACA,sBACA,aACA,UACA,kBACA,aACA,mBACA,cACA,cACA,eACA,cACA,SACA,gBACA,gBACA,OACA,OACA,MACA,OACA,OACA,OACA,QACA,OACA,MACA,UACA,IACA,MACA,KACA,MACA,QACA,KACA,QACA,UACA,SACA,QACA,OACA,MACA,OACA,MACA,QACA,gBACA,eACA,eACA,qBACA,gBACA,sBACA,aACA,aACA,gBACA,gBACA,kBACA,cACA,kBACA,iBACA,WACA,UACA,SACA,QACA,QACA,WACA,SACA,UACA,QACA,QACA,SACA,QACA,OACA,QACA,UACA,SACA,YACA,WACA,WACA,WACA,OACA,UACA,SACA,YACA,WACA,WACA,aAgBI1wb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACE3sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACE3sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAEnBhlY,EAAK2lY,cACL3lY,EAAKwlY,uBAGTxlY,EAAKwlY,sBAGX,YCxRAjwO,EAAO59F,QA1EP,SAAoB33D,GA0DlB,MAAO,CACL1nG,KAAM,cACNs/B,QAAS,CAAE,MACXopB,SAAU,CACRg/C,EAAK6/C,QAAQ7/C,EAAKylY,kBAAmB,CACnCl5a,MAAO,YACP84a,cAAc,IAzBF,CAChBrxd,SAAU,CACR,CAAEyiB,MAAO,CACP,OACA,IACA,MACA,QAEF,CAAEA,MAAO,CACP,OACA,QAGJpe,UAAW,CACT,EAAG,SACH,EAAG,WA3BQ,CACboe,MAAO,CACL,OACA,IACA,MACA,OAEFpe,UAAW,CACT,EAAG,cACH,EAAG,WAnCQ,CACboe,MAAO,CACL,aACA,QACA,OACA,KAEFpe,UAAW,CACT,EAAG,YACH,EAAG,gBAGiB,CACtBoe,MAAO,CACL,aACA,aACA,QACA,MACA,OAEFpe,UAAW,CACT,EAAG,YACH,EAAG,cACH,EAAG,YAgDT,YCwEAk9O,EAAO59F,QA/IP,SAAe33D,GACb,MAAMllE,EAAQklE,EAAKllE,MACb85c,EAAM,CACVv8d,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAO,SACT,CAAEA,MAAO,aACT,CAAEA,MAAOzxB,EAAM1C,OAAO,OAAQ4nE,EAAK4kY,wBA6BjCud,EAAU,CACdpX,gBAAgB,EAChBjvZ,SAAU,CACR8uZ,SAAU,yBACV7zL,QA9Ba,CACf,KACA,MACA,MACA,KACA,OACA,QACA,OACA,UACA,QACA,OACA,SACA,OACA,QACA,OACA,SACA,QACA,OACA,YACA,WACA,SACA,QACA,QACA,OACA,cAQAkuL,UAAW,EACXE,QAAS,KACTnkb,SAAU,CACRg/C,EAAKylY,kBACL,CACEptd,UAAW,SACX2oC,SAAU,CACRg/C,EAAKglY,iBACL4P,GAEF5ge,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,IACPC,IAAK,OAKX,CACED,MAAO,aACPC,IAAK,MACLu+a,gBAAgB,EAChB7B,YAAY,EACZlob,SAAU,CAAE4zb,IAEd,CACEv8d,UAAW,SACX2oC,SAAU,CACRg/C,EAAKglY,iBACL4P,GAEF5ge,SAAU,CACR,CACEu4C,MAAO,SACPC,IAAK,YACL28a,WAAW,GAGb,CACE58a,MAAO,YACPC,IAAK,YACL28a,WAAW,GAGb,CAAE58a,MAAO,sBAET,CAAEA,MAAO,wBAIb,CACEl0C,UAAW,SACXk0C,MAAO,+DAGT,CACEl0C,UAAW,SACXk0C,MAAO,4BACP04a,UAAW,GAEb2P,IAIJ,MAAO,CACLt8e,KAAM,eACNs/B,QAAS,CAAE,aACXopB,SAAU,CACRg/C,EAAKylY,kBACL,CACEqB,cAAe,oBACft6a,IAAK,OACLxL,SAAUmhc,EAAQnhc,SAClB86B,SAAU,CAAE6ra,QAAS,sBAEvB,CACEtve,UAAW,UACXk0C,MAAOzxB,EAAM1C,OAAO4nE,EAAK4kY,oBAAsB9pc,EAAMopc,UAAU,UAC/De,UAAW,GAEb,CACE14a,MAAOzxB,EAAMopc,UAAUlkY,EAAK4kY,oBAAsB,OAClDp4a,IAAK,QACLxL,SAAU,CACR,CACE3oC,UAAW,YACXk0C,MAAOyzC,EAAK4kY,oBACZyC,OAAQ8a,IAGZld,UAAW,IAGfE,QAAS,eAEb,aCoCA5vO,EAAO59F,QAnLP,SAAa33D,GAoIX,MAAO,CACL1nG,KAAM,MACNwjF,SAAU,CACRksZ,QAtFa,CACf,OACA,MACA,KACA,MACA,OACA,QACA,QACA,OACA,OACA,UACA,QACA,WACA,YACA,QACA,UACA,WACA,MACA,KACA,OACA,OACA,MACA,OACA,SACA,SACA,UACA,MACA,OACA,OACA,UACA,UACA,KACA,SACA,KACA,UACA,YACA,KACA,QACA,WACA,MACA,QACA,SACA,QACA,MACA,MACA,MACA,QACA,SACA,KACA,KACA,MACA,OACA,MACA,QACA,MACA,SACA,SACA,MACA,MACA,SACA,WACA,MACA,QACA,OACA,QACA,MACA,OACA,QACA,OACA,UACA,MACA,SAgBEjxL,QARa,CACf,OACA,SAOEr5S,KAxIU,CACZ,MACA,OACA,QACA,QACA,QACA,OACA,QACA,SACA,SACA,SACA,QACA,UACA,UACA,OACA,OACA,SACA,UACA,UACA,OACA,OACA,OACA,OACA,MACA,QACA,QACA,YACA,UACA,MACA,MACA,QACA,SACA,QACA,SACA,SACA,OACA,QACA,YACA,SACA,UACA,cACA,SACA,UACA,QACA,aACA,eACA,cA2FEg0e,SAhBc,CAChB,QACA,SACA,SACA,WAcA1wb,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAO,OACPC,IAAK,OACLy4a,UAAW,IAEb,CACE5sd,UAAW,SACXk0C,MAAO,eACPC,IAAK,IACLxL,SAAU,CAAE,CAAEuL,MAAO,QAEvB,CACEl0C,UAAW,SACXk0C,MAAO,oBACPC,IAAK,OAEPwzC,EAAKolY,kBACL,CACE/sd,UAAW,OACXk0C,MAAO,eACP04a,UAAW,GAEb,CACE5sd,UAAW,SACX4sd,UAAW,EACXjxd,SAAU,CACR,CAAEu4C,MAAO,4DACT,CAAEA,MAAO,+CACT,CAAEA,MAAO,iDACT,CAAEA,MAAO,2CAGbyzC,EAAKylY,mBAGX,YC2LAlwO,EAAO59F,QA1WP,SAAa33D,GACX,MAAMllE,EAAQklE,EAAKllE,MACbg4c,EAAW,CACf9K,QAAS,CACP,SACA,OACA,KACA,KACA,UACA,MACA,KACA,MACA,OACA,QAEFjxL,QAAS,CACP,OACA,QACA,QAEF26L,SAAU,CAER,QACA,aACA,WACA,aACA,mBACA,QACA,WACA,iBACA,eACA,YACA,WACA,SACA,SACA,MACA,cACA,cACA,eACA,QACA,aAIEkW,EAAW,CACfv1c,MAAO,WACP5b,MAAOqE,EAAMspc,UAAU,CACrB,QACA,MACA,2BACA,kBACA,MACA,MACA,gBACA,YACA,aACA,aACA,SACA,QACA,SACA,QACA,WACA,WACA,OACA,kBACA,cACA,YACA,mBACA,cACA,gBACA,cACA,UACA,aACA,mBACA,QACA,MACA,OACA,SACA,QACA,WACA,iBACA,eACA,YACA,WACA,SACA,eACA,WACA,mBACA,QACA,SACA,WACA,WACA,eACA,UACA,iBACA,UACA,aACA,SACA,WACA,UACA,UACA,aACA,WACA,aACA,OACA,SACA,iBACA,UACA,SACA,UACA,aACA,QACA,SACA,SACA,SACA,WACA,cACA,SACA,WACA,cACA,MACA,WACA,QACA,MACA,UACA,aACA,OACA,eACA,gBACA,YACA,OACA,aACA,cACA,UACA,WACA,eACA,cACA,iBACA,eACA,MACA,OACA,QACA,eACA,WACA,YACA,eACA,MACA,YACA,OACA,QACA,SACA,SACA,SACA,WACA,QACA,QACA,eACA,OACA,UACA,SACA,gCACA,6BACA,mBACA,OACA,gBACApqe,KAAI2pC,GAAK,cAAcA,OACzBshc,UAAW,IAGP0Z,EAAmB,2BAEnBkJ,EAAc,CAClBx1c,MAAO,SACP5b,MAAO,IAAI8E,OAAO,IAAIojd,MAAqBA,SAGvCmJ,EAAa,uBACbC,EAAO,CACX11c,MAAO,SACP5b,MAAO,IAAI8E,OAAO,oBAAoBusd,QAAiBA,kBAGnDE,EAA+Bltd,EAAMspc,OACzC,KACA,IACA,SACA,MACA,KACA,OACA,IACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,SACA,OACA,MACA,MACA,MAGIiY,EAAW,CACfhqc,MAAO,WACP5b,MAAOqE,EAAM1C,OAAO4vd,EAA8B,SAClD/iB,UAAW,GAKP+N,EAAS,CACb3gc,MAAO,SACP5b,MAAO,IAAI8E,OAAO,GAAGykE,EAAK6kY,kBAC1BI,UAAW,GAEPgjB,EAAiB,CACrBj0e,SAAU,CACR,CACEq+B,MAAO,WACP+0b,YAAa,KAEb76a,MAAO,UAET,CACEA,MAAO,CACL,IAAIhxB,OAAO,GAAGykE,EAAK6kY,aACnB,IACA,SAEFgE,WAAY,CACV,EAAG,SACH,EAAG,aAGP,CACEt8a,MAAO,CACLy7b,EACA,IACA,SAEFnf,WAAY,CACV,EAAG,WACH,EAAG,cAIT5D,UAAW,GAGPijB,EAAQ,CACZ9gB,YAAa,cACb76a,MAAO,IAAIhxB,OAAO,GAAGojd,QAAuBA,iBAC5C3V,aAAa,EACb/D,UAAW,EACXjkb,SAAU,CACR,CACE3O,MAAO,OACP5b,MAAO,IAAI8E,OAAO,GAAGojd,QAAuBA,gBAC5C1Z,UAAW,MAaXkjB,EAAY,CAChB91c,MAAO,QACPka,MAAO,OACPC,IAAK,KACLsvB,SAAUg3Z,GAMNsV,EAAkB,CACtB/1c,MAAO,cACP5b,MAAO,aAEHk8c,EAAS,CACbtgc,MAAO,SACPr+B,SAAU,CACR,CACEu4C,MAAO,KACPC,IAAK,KACLxL,SAAU,CAxBgB,CAC9B3O,MAAO,cACP5b,MAAO,QAwBD0xd,EAhBoB,CAC1B91c,MAAO,cACP5b,MAAO,OAgBD2xd,IAGJ,CACE77b,MAAO,IACPC,IAAK,IACLxL,SAAU,CAtCc,CAC5B3O,MAAO,cACP5b,MAAO,QAsCD0xd,EACAC,MAMFC,EAAkB,CACtBh2c,MAAO,SACP5b,MAAO,IAAI8E,OAAO,GAAGojd,kBAGjBlJ,EAAc,CAClBzC,EACAhzY,EAAKylY,kBACLzlY,EAAKwlY,qBACLxlY,EAAKr0C,QACH,eACA,OACA,CACEyhb,YAAa,WACbnI,UAAW,IAGf2iB,EACAjV,EACAkV,EACAE,EACAM,EACAH,EACAD,EACA5L,GAkBF,OAfA8L,EAAUnnc,SAAWy0b,EAed,CACLn9e,KAAM,MACNs/B,QAAS,CAAE,SACXkkD,SAAUg3Z,EACV9xb,SAAUy0b,EAAYr9c,OAjBX,CACX,CACEia,MAAO,cACP5b,MAAO,mBACPwuc,UAAW,IAEb,CACE5yb,MAAO,OACP+0b,YAAa,MACb76a,MAAO,kBAUb,aCjVAgpM,EAAO59F,QAxBP,SAAkB33D,GAChB,MAAO,CACL1nG,KAAM,YACN0oD,SAAU,CACR,CACE3oC,UAAW,cACXgvd,OAAQ,CAGN76a,IAAK,MACL66a,OAAQ,CACN76a,IAAK,IACL4gb,YAAa,eAGjBp5d,SAAU,CACR,CAAEu4C,MAAO,eACT,CAAEA,MAAO,uBAKnB,aC8gBAgpM,EAAO59F,QAniBP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MA2Ibkld,EAAY,CAChB3ne,UAAW,oBACXk0C,MAAOzxB,EAAM1C,OAAO,KAAM0C,EAAMspc,OA3IhC,aACA,UACA,cACA,UACA,gBACA,gBACA,cACA,UACA,UACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,aACA,UACA,iBACA,WACA,eACA,QACA,UACA,SACA,WACA,aACA,YACA,UACA,iBACA,iBACA,eACA,cACA,SACA,sBACA,YACA,SACA,aACA,YACA,YACA,SACA,OACA,YACA,SACA,YAmGIkkB,EAAU,CAEdjwe,UAAW,WACXk0C,MAAO,qBAGHqzb,EAAY,CAEhBvne,UAAW,WACXk0C,MAAO,eACP44a,QAAS,YAGLojB,EAAY,CAEhBlwe,UAAW,WACXk0C,MAAO,qBAGHi8b,EAAa,CAEjBnwe,UAAW,SACXk0C,MAAOzxB,EAAMspc,OArHb,UACA,yBACA,wBACA,yBACA,0BACA,wBACA,2BACA,OACA,OACA,OACA,oBACA,sBACA,oBACA,gBACA,qBACA,wBACA,aACA,OACA,OACA,MACA,UACA,WACA,WACA,OACA,OACA,UACA,QACA,sBACA,gBACA,gBACA,gBACA,gBACA,qBACA,qBACA,kBACA,cACA,QACA,cACA,iBACA,WACA,gBACA,mBACA,aACA,cACA,WACA,SACA,UACA,WACA,QACA,gBACA,qBAsEIqkB,EAAW,CAEfpwe,UAAW,UACXk0C,MAAOzxB,EAAM1C,OACX,IACA0C,EAAMspc,OAvER,gBACA,eACA,aACA,SACA,KACA,SACA,UACA,OACA,OACA,QACA,QACA,UACA,WACA,gBACA,gBACA,KACA,QACA,aACA,cACA,SACA,UACA,cACA,QACA,WACA,WACA,UACA,cACA,gBACA,SACA,WACA,QACA,iBACA,UACA,aAsDIuO,EAAS,CACbt6d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,IACPC,IAAK,MAGT24a,QAAS,KACTnkb,SAAU,CA7BS,CAEnB3oC,UAAW,cACXk0C,MAAO,kBA4BLyzb,EACAsI,EACA1I,EACA2I,IAmRE5G,EAAsB,CAC1Blrd,MAAO,CACL,WACA,MACAqE,EAAM1C,OAAO,QAAS4nE,EAAK2kY,WAE7Btyb,MAAO,CACL,EAAG,UACH,EAAG,mBAODq2c,EAAsB,CAC1Bjyd,MAAO,CACL,MACA,MACA,mBALqB,kBAQvB4b,MAAO,CACL,EAAG,UACH,EAAG,SACH,EAAG,aAIP,MAAO,CACL/5C,KAAM,OACNixe,kBAAkB,EAClBztZ,SAAU,CACRksZ,QAhTa,CACf,QACA,mBACA,UACA,sBACA,iBACA,kBACA,SACA,aACA,eACA,eACA,OACA,cACA,UACA,WACA,cACA,cACA,gBACA,gBACA,YACA,WACA,kBACA,aACA,iBACA,SACA,eACA,eACA,eACA,iBACA,cACA,oBACA,UACA,SACA,YACA,eACA,aACA,eACA,OACA,OACA,YACA,gBACA,WACA,mBACA,OACA,cACA,YACA,gBACA,WACA,WACA,eACA,kBACA,eACA,mBACA,WACA,YACA,gBACA,gBACA,YACA,YACA,WACA,aACA,WACA,iBACA,oBACA,aACA,gBACA,qBACA,gBACA,cACA,mBACA,kBACA,qBACA,kBACA,qBACA,kBACA,kBACA,YACA,OACA,aACA,OACA,UACA,WACA,eACA,eACA,gBACA,uBACA,WACA,iBACA,oBACA,gBACA,aACA,mBACA,oBACA,WACA,kBACA,kBACA,WACA,YACA,WACA,SACA,UACA,SACA,QACA,YACA,aACA,WACA,WACA,aACA,iBACA,cACA,wBACA,oBACA,cACA,kBACA,mBACA,aACA,SACA,UACA,mBACA,wBACA,2BACA,sBACA,aACA,iBACA,SACA,MACA,UACA,OACA,gBACA,gBACA,uBACA,mBACA,cACA,MACA,OACA,OACA,aACA,aACA,eACA,aACA,SACA,SACA,SACA,wBACA,cACA,SACA,QACA,aACA,kBACA,sBACA,iBACA,iBACA,YACA,kBACA,sBACA,iBACA,iBACA,cACA,eACA,mBACA,cACA,gBACA,wBACA,eACA,iBACA,uBACA,cACA,kBACA,iBACA,gBACA,YACA,oBACA,UACA,aACA,eACA,gBACA,aACA,qBACA,YACA,kBACA,oBACA,aACA,gBACA,kBACA,QACA,aACA,SACA,UACA,SACA,SACA,aACA,UACA,sBACA,mBACA,gBACA,sBACA,gBACA,aACA,WACA,MACA,kBACA,gBACA,mBACA,aACA,cACA,cACA,gBACA,oBACA,mBACA,eACA,cACA,mBACA,WA6FEjxL,QA1Fa,CACf,QACA,MACA,OACA,OACA,SACA,QACA,UACA,aACA,UACA,SACA,YACA,QACA,QACA,OACA,UACA,SACA,UACA,YACA,WACA,QACA,OACA,UACA,WACA,OACA,YACA,OACA,SACA,SACA,MACA,KACA,OACA,QACA,QACA,OACA,SACA,YACA,SACA,WACA,MACA,OACA,MACA,gBACA,YACA,eACA,eACA,aACA,gBACA,OACA,QACA,OACA,OACA,WACA,SAuCA/1P,SAAU,CACRg/C,EAAKylY,kBACLzlY,EAAKwlY,qBACLxlY,EAAKr0C,QACH,IACA,IACA,CAAEs5a,UAAW,IAEfyjB,EACA/G,EACA,CAAE7a,cAAe,+DACjB6L,EACA8V,EACAH,EACA1I,EACA2I,EACAC,EAnWY,CAEdnwe,UAAW,iBACXk0C,MAAO,YAkWLyzC,EAAK0lY,aAGX,aC9SAnwO,EAAO59F,QApPP,SAAoB33D,GAClB,MAIM2oZ,EAAgB,yBAkKhBC,EAAiB,CACrBhe,SAAU+d,EACV3gB,QAAS,CACP,aACA,SACA,YACA,oBAGJ,MAAO,CACL1ve,KAAM,cACNs/B,QAAS,CACP,KACA,OACA,QACA,UACA,iBAEFkkD,SA7Be,CACf,oBAAqB,CACnB,OACA,SAEF8uZ,SAAU+d,EACV3gB,QA3IU,CACV,QACA,SACA,SACA,UACA,QACA,SACA,MACA,QACA,WACA,SACA,UACA,KACA,KACA,SACA,OACA,OACA,OACA,QACA,SACA,MACA,OACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,WACA,SACA,YACA,OACA,gBACA,KACA,SACA,YACA,WACA,WACA,SACA,OACA,OACA,KACA,MACA,QACA,SACA,QACA,SACA,WACA,SACA,UACA,kBACA,WACA,aACA,UACA,OACA,YACA,OACA,SACA,SACA,WACA,mBACA,cACA,WACA,YACA,YACA,YACA,UACA,WACA,UACA,QACA,uBACA,WACA,oBACA,oBACA,kBACA,cACA,kBACA,WACA,WACA,YACA,oBACA,eACA,sBACA,gBACA,SACA,SACA,SACA,oBACA,UACA,WACA,mBACA,kBACA,QACA,eACA,4BACA,iBACA,oBACA,2BACA,YACA,eACA,gBACA,UACA,aACA,uBACA,0BACA,wBACA,uBACA,gBACA,mBACA,YACA,aACA,gBACA,iBACA,iBA0BAjxL,QAxBe,CACf,QACA,OACA,QACA,OACA,MACA,MACA,KACA,QAiBA26L,SAfgB,CAChB,kBACA,mBACA,gBACA,iBACA,iBAWAh0e,KA/JY,CACZ,MACA,QACA,OACA,WACA,SACA,QACA,OACA,SACA,UACA,UACA,OACA,OA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W,SACXk0C,MAAO,MACPC,IAAK,MACLsvB,SAAUita,EACV/nc,SAAU,CACR2xb,EACA2C,IAGJ0T,EACAC,IAUJ,MAAO,CACL3wf,KAAM,UACNixe,kBAAkB,EAClBztZ,SAAUita,EACV5jB,QAAS,kCACTnkb,SAAU,CACRgoc,EACAC,EACAjpZ,EAAKulY,oBACLoN,EACA2C,EACAt1Y,EAAK0lY,YACLwP,EAlBc,CAChB7ic,MAAO,cACP5b,MAAO,IACPwuc,UAAW,IAmBf,aC9BA1vO,EAAO59F,QA9CP,SAAiB33D,GACf,MAAMkpZ,EAAmBlpZ,EAAKr0C,QAC5B,KACA,KACA,CAAE3K,SAAU,CAAE,UAEhB,MAAO,CACL1oD,KAAM,UACN80e,YAAa,MACbnI,UAAW,EACXjkb,SAAU,CACRg/C,EAAKr0C,QAAQ,KAAM,KACnBq0C,EAAKr0C,QACH,UACA,KACA,CACEs5a,UAAW,GACXjkb,SAAU,CAAEkoc,KAGhB,CACE7we,UAAW,OACXk0C,MAAO,gCACP04a,UAAW,IAEb,CACE5sd,UAAW,QACXk0C,MAAO,4DAET,CACEl0C,UAAW,WACXk0C,MAAO,qBAET,CACEl0C,UAAW,UACXk0C,MAAO,eAET,CACEl0C,UAAW,SACXk0C,MAAO,oBAETyzC,EAAK2lY,eAGX,aCmcApwO,EAAO59F,QA/eP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MA8Obqud,EAAkB,uBAClBC,EAAgB,CACpBxe,SAAU,SACV5C,QAhPe,CACf,MACA,SACA,QACA,MACA,QACA,OACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,MACA,SACA,QACA,QACA,WACA,UACA,WACA,MACA,QACA,WACA,UACA,UACA,SACA,MACA,KACA,OACA,OACA,OACA,QACA,WACA,aACA,YACA,cACA,WACA,aACA,MACA,OACA,OACA,SACA,OACA,MACA,QACA,QACA,SACA,QACA,MACA,UACA,OACA,SACA,WACA,OACA,WACA,WACA,WACA,gBACA,gBACA,aACA,WACA,eACA,eACA,YACA,cACA,UACA,cACA,iBACA,mBACA,cACA,WACA,WACA,WACA,gBACA,gBACA,aACA,cACA,aACA,QACA,OACA,SACA,OACA,OACA,KACA,MACA,KACA,QACA,MACA,QACA,OACA,OACA,OACA,OACA,KACA,UACA,SACA,OACA,SACA,QACA,YACA,MACA,QACA,KACA,KACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,KACA,KACA,OACA,KACA,MACA,MACA,OACA,UACA,KACA,MACA,MACA,OACA,UACA,OACA,MACA,MACA,QACA,SACA,YACA,OACA,MACA,KACA,YACA,KACA,KACA,OACA,OACA,UACA,WACA,WACA,WACA,OACA,OACA,MACA,SACA,UACA,QACA,SACA,UACA,YACA,SACA,QACA,MACA,SACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,WACA,aACA,YACA,UACA,cACA,cACA,WACA,aACA,aACA,QACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,SACA,aACA,OACA,SACA,QACA,UACA,OACA,QACA,OACA,QACA,QACA,MACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,OACA,UACA,MACA,OACA,OACA,QACA,KACA,WACA,KACA,UACA,QACA,QACA,SACA,SACA,SACA,UACA,QACA,QACA,MACA,QACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,QACA,QACA,MACA,MACA,OAOkBr8d,KAAK,MAEnBsne,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,UACPC,IAAK,MACLsvB,SAAUsta,GAENhO,EAAS,CACb7ub,MAAO,OACPC,IAAK,MAGD68b,EAAO,CACXh3c,MAAO,OACP5b,MAAO,2BAEHm+c,EAAM,CACVvic,MAAO,WACPr+B,SAAU,CACR,CAAEu4C,MAAO,QACT,CAAEA,MAAOzxB,EAAM1C,OACb,sDAGA,0BAGF,CAEEm0B,MAAO,0BACP04a,UAAW,IAGfjkb,SAAU,CAAEqoc,IAERrW,EAAS,CACb36d,UAAW,SACXrE,SAAU,CAIR,CAAEyiB,MAAO,sBAET,CAAEA,MAAO,mDAET,CAAEA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/C,EAAKolY,kBAAkBpkb,SAAS5oB,OAAO66c,GACjD,WAAY9M,CAAC1xd,EAAG6rF,KAAWA,EAAKrxF,KAAKm3d,YAAc3xd,EAAE,IAAMA,EAAE,EAAE,EAC/D,SAAU4xd,CAAC5xd,EAAG6rF,KAAeA,EAAKrxF,KAAKm3d,cAAgB3xd,EAAE,IAAI6rF,EAAKqiY,aAAa,GAGlE3iY,EAAKkmY,kBAAkB,CACpC35a,MAAO,qBACPC,IAAK,oBAaDwmb,EAAS,CACb3gc,MAAO,SACPr+B,SAAU,CACR,CAAEu4C,MAAO,+BACT,CAAEA,MAAO,iCACT,CAAEA,MAAO,6CAET,CAAEA,MAAO,+EAEX04a,UAAW,GAEPmR,EAAW,CACf,QACA,OACA,QAEIyD,EAAM,CAGV,YACA,UACA,WACA,eACA,2BACA,WACA,aACA,gBACA,YAGA,MACA,OACA,OACA,UACA,eACA,QACA,UACA,eAMA,QACA,WACA,MACA,KACA,SACA,OACA,UACA,QACA,WACA,OACA,QACA,QACA,QACA,QACA,WACA,UACA,UACA,KACA,SACA,OACA,SACA,QACA,aACA,SACA,aACA,QACA,YACA,WACA,OACA,OACA,UACA,QACA,UACA,QACA,MACA,UACA,OACA,SACA,OACA,KACA,aACA,aACA,YACA,MACA,UACA,YACA,QACA,WACA,OACA,UACA,QACA,MACA,QACA,SACA,KACA,UACA,YACA,SACA,WACA,OACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,MACA,OACA,QACA,MACA,SAGIxD,EAAY,CAGhB,UACA,iBACA,qBACA,kBACA,gBACA,cACA,iBACA,2BACA,yBACA,kBACA,yBACA,eACA,YACA,oBACA,sBACA,kBACA,gBACA,iBACA,YACA,qBACA,iBACA,eACA,mBACA,2BACA,mBACA,kBACA,gBACA,iBACA,mBACA,mBACA,uBACA,sBACA,gBACA,oBACA,iBACA,aACA,iBACA,yBACA,2BACA,kCACA,6BACA,0BACA,oBACA,4BACA,yBACA,wBACA,gBACA,mBACA,mBACA,sBACA,cACA,gBACA,gBACA,UACA,aACA,aACA,mBACA,cACA,mBACA,WACA,WACA,aACA,oBACA,YACA,qBACA,2BACA,sBAGA,cACA,aACA,UACA,QACA,YACA,WACA,oBACA,eACA,aACA,YACA,cACA,WACA,gBACA,UAGA,YACA,yBACA,SACA,kBACA,OACA,SACA,YAuBIvD,EAAW,CACf9K,QAAS6R,EACT9iM,QAhBgBv1S,KAEhB,MAAM80B,EAAS,GASf,OARA90B,EAAMs2B,SAAQ/xB,IACZuwB,EAAOnB,KAAKpvB,GACRA,EAAKytD,gBAAkBztD,EACzBuwB,EAAOnB,KAAKpvB,EAAKggB,eAEjBuQ,EAAOnB,KAAKpvB,EAAKytD,cACnB,IAEKl9B,CAAM,EAKJi0d,CAASnU,GAClB1E,SAAU2E,GAKNmU,EAAqBhpf,GAClBA,EAAMxH,KAAI+L,GACRA,EAAKoF,QAAQ,SAAU,MAI5Bs/e,EAAmB,CAAEz2e,SAAU,CACnC,CACEyiB,MAAO,CACL,MACAqE,EAAM1C,OAAOkyd,EAAY,KAEzBxvd,EAAM1C,OAAO,MAAOoyd,EAAkBnU,GAAW1qe,KAAK,QAAS,QAC/Dw+e,GAEF93c,MAAO,CACL,EAAG,UACH,EAAG,kBAKHq4c,EAAqB5vd,EAAM1C,OAAOusc,EAAU,cAE5CgmB,EAAsC,CAAE32e,SAAU,CACtD,CACEyiB,MAAO,CACLqE,EAAM1C,OACJ,KACA0C,EAAMopc,UAAU,gBAElBwmB,GAEFr4c,MAAO,CAAE,EAAG,sBAEd,CACE5b,MAAO,CACL,KACA,SAEF4b,MAAO,CAAE,EAAG,sBAEd,CACE5b,MAAO,CACL0zd,EACArvd,EAAM1C,OACJ,KACA0C,EAAMopc,UAAU,gBAElBwmB,GAEFr4c,MAAO,CACL,EAAG,cACH,EAAG,sBAGP,CACE5b,MAAO,CACL0zd,EACArvd,EAAM1C,OACJ,KACA0C,EAAMopc,UAAU,iBAGpB7xb,MAAO,CAAE,EAAG,gBAEd,CACE5b,MAAO,CACL0zd,EACA,KACA,SAEF93c,MAAO,CACL,EAAG,cACH,EAAG,wBAKHu4c,EAAiB,CACrBv4c,MAAO,OACP5b,MAAOqE,EAAM1C,OAAOusc,EAAU7pc,EAAMopc,UAAU,KAAMppc,EAAMopc,UAAU,YAEhE2mB,EAAc,CAClB5lB,UAAW,EACX14a,MAAO,KACPC,IAAK,KACLsvB,SAAUg3Z,EACV9xb,SAAU,CACR4pc,EACAlW,EACAiW,EACA3qZ,EAAKwlY,qBACLmN,EACAK,EACAyX,IAGEK,EAAkB,CACtB7lB,UAAW,EACXxuc,MAAO,CACL,KAEAqE,EAAM1C,OAAO,wBAAyBoyd,EAAkB3Q,GAAKlue,KAAK,QAAS,IAAK6+e,EAAkBnU,GAAW1qe,KAAK,QAAS,QAC3Hg5d,EACA7pc,EAAM1C,OAAOkyd,EAAY,KACzBxvd,EAAMopc,UAAU,WAElB7xb,MAAO,CAAE,EAAG,yBACZ2O,SAAU,CAAE6pc,IAEdA,EAAY7pc,SAAS7rB,KAAK21d,GAE1B,MAAMC,EAAqB,CACzBH,EACAD,EACA3qZ,EAAKwlY,qBACLmN,EACAK,EACAyX,GAGIpuD,EAAa,CACjB9vY,MAAOzxB,EAAM1C,OAAO,YAClB0C,EAAMspc,OACJ+lB,EACAC,IAGJvhB,WAAY,OACZr8a,IAAK,IACLs3a,SAAU,OACVhoZ,SAAU,CACRi7N,QAASq/L,EACTpO,QAAS,CACP,MACA,UAGJhnb,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,IACLsvB,SAAU,CACRi7N,QAASq/L,EACTpO,QAAS,CACP,MACA,UAGJhnb,SAAU,CACR,UACG+pc,OAGJA,EACH,CACE14c,MAAO,OACPr+B,SAAU,CACR,CAAEyiB,MAAO0zd,GACT,CAAE1zd,MAAO2zd,OAMjB,MAAO,CACL7gB,kBAAkB,EAClBztZ,SAAUg3Z,EACV9xb,SAAU,CACRq7Y,EACAr8V,EAAKylY,kBACLzlY,EAAKr0C,QAAQ,KAAM,KACnBq0C,EAAKr0C,QACH,OACA,OACA,CAAE3K,SAAU,CACV,CACE3O,MAAO,SACP5b,MAAO,iBAIb,CACEA,MAAO,uBACPqlD,SAAU,kBACVurZ,OAAQ,CACNh1b,MAAO,UACPma,IAAKwzC,EAAKsmY,iBACVtlb,SAAU,CACR,CACEvqB,MAAO,MACP4b,MAAO,OACPk1b,YAAY,MAreH,CACnBl1b,MAAO,OACPr+B,SAAU,CACR,CAAEu4C,MAAO,SAAU04a,UAAW,IAC9B,CAAE14a,MAAO,QAET,CAAEA,MAAO,MAAO04a,UAAW,IAC3B,CAAE14a,MAAO,SAoeT,CACEla,MAAO,oBACP5b,MAAO,YAETi+c,EACAoW,EACAH,EACA,CACEl0d,MAAO,CACL,QACA,KACAkuc,GAEFtyb,MAAO,CACL,EAAG,UACH,EAAG,sBAGPo4c,EACA,CACEp4c,MAAO,WACP4yb,UAAW,EACX6B,cAAe,cACft6a,IAAK,OACL08a,YAAY,EACZ/D,QAAS,UACTnkb,SAAU,CACR,CAAE8lb,cAAe,OACjB9mY,EAAK+lY,sBACL,CACEx5a,MAAO,KACPg7a,YAAY,GAEd,CACEl1b,MAAO,SACPka,MAAO,MACPC,IAAK,MACL64a,cAAc,EACd6D,YAAY,EACZptZ,SAAUg3Z,EACV9xb,SAAU,CACR,OACAq7Y,EACAq4C,EACAiW,EACA3qZ,EAAKwlY,qBACLmN,EACAK,MAKR,CACE3gc,MAAO,QACPr+B,SAAU,CACR,CACE8yd,cAAe,OACf3B,QAAS,SAEX,CACE2B,cAAe,wBACf3B,QAAS,WAGbF,UAAW,EACXz4a,IAAK,KACL08a,YAAY,EACZlob,SAAU,CACR,CAAE8lb,cAAe,sBACjB9mY,EAAK+lY,wBAMT,CACEe,cAAe,YACf7B,UAAW,EACXz4a,IAAK,IACL24a,QAAS,OACTnkb,SAAU,CAAEg/C,EAAK6/C,QAAQ7/C,EAAK+lY,sBAAuB,CAAE1zb,MAAO,kBAEhE,CACEy0b,cAAe,MACf7B,UAAW,EACXz4a,IAAK,IACLxL,SAAU,CAER,CACEvqB,MAAO,0BACP4b,MAAO,WAGT2tD,EAAK+lY,wBAGT4M,EACAK,GAGN,aC5lBAz9O,EAAO59F,QAXP,SAAmB33D,GACjB,MAAO,CACL1nG,KAAM,aACNs/B,QAAS,CACP,OACA,OAEFo0c,mBAAmB,EAEvB,aCyEAz2O,EAAO59F,QAhFP,SAAc33D,GAgEZ,MAAO,CACL1nG,KAAM,OACNwjF,SAjEe,CACfksZ,QACE,iTAKFxtS,KACE,0BACFu8G,QACE,mBAwDF/1P,SAAU,CA/BM,CAChB3oC,UAAW,OACXk0C,MAAO,mBACP04a,UAAW,GAzBoB,CAC/B5sd,UAAW,SACXk0C,MAAO,MACPC,IAAK,MACLy4a,UAAW,IAGa,CACxB5sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAGY,CAC7B3sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,kBACjBC,UAAW,GASO,CAClB14a,MAAOyzC,EAAK2kY,SAAW,IACvBM,UAAW,GAGO,CAClB5sd,UAAW,SACXk0C,MAAO,+FACP04a,UAAW,GAwBTjlY,EAAKulY,oBACLvlY,EAAKwlY,sBAGX,aCqOAjwO,EAAO59F,QAnTP,SAAoB33D,GAClB,MAwCM8yY,EAAW,CACflI,SAAU,iBACV5C,QACE,uLAIF0J,SACE,mqBAaE+C,EAAkB,CACtBlob,MAAO,YACP04a,UAAW,GAGP2P,EAAM,CACVv8d,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAO,QACT,CACEl0C,UAAW,UACXk0C,MAAO,UAET,CAAEA,MAAO,uBASPwob,EAAe,CACnB18d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,KACPC,IAAK,QAGTxL,SAAU,CACRyzb,EACAG,EACA,CACEv8d,UAAW,WACXk0C,MAAO,UACPC,IAAK,YAKLw+b,EAAc,CAClB3ye,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,KACPC,IAAK,SAeLy+b,EAAajrZ,EAAK6/C,QACtB7/C,EAAKr0C,QAAQ,KAAM,MACnB,CACE33C,SAAU,CAER,CACEu4C,MAAO,IACPC,IAAK,KAGP,CACED,MAAO,KACPC,IAAK,OAGTxL,SAAU,CAzBM,CAClB3oC,UAAW,SACXrE,SAAU,CAER,CAAEu4C,MAAO,2FAET,CAAEA,MAAO,sGAuBP2+b,EAAU,CACd7ye,UAAW,WACXrE,SAAU,CAAE,CAAEu4C,MAAO,IAAIn0B,OApIzB,2rBAoI6C,qBAGzC+yd,EAAW,CACf9ye,UAAW,QACXyud,cAAe,aACft6a,IAAK,SACL08a,YAAY,EACZjE,UAAW,EACXjkb,SAAU,CAAEg/C,EAAK8lY,aAGbslB,EAAc,CAClB/ye,UAAW,WACXk0C,MAAO,cACPC,IAAK,UACL08a,YAAY,EACZF,aAAa,EACb/D,UAAW,EACXjkb,SAAU,CACR,CACEuL,MAAO,WACP04a,UAAW,EACX5sd,UAAW,WAEb,CACEA,UAAW,QACXk0C,MAvHgB,yBAwHhB04a,UAAW,GAEb,CACE14a,MAAO,KACPC,IAAK,KACLn0C,UAAW,SACX4sd,UAAW,EACXjkb,SAAU,CAAE4zb,MAOZyW,EAAW,CACf9+b,MAAO,UACPC,IAAK,IACLw8a,aAAa,EACbhob,SAAU,CACR+zb,EACAiW,EACA,CACE3ye,UAAW,UACXk0C,MAAO,oDAMP++b,EAAe,CAAEt3e,SAAU,CAE/B,CACEqE,UAAW,WACXk0C,MAAO,IAAIn0B,OApLb,+bAoL0C,SAE1C,CACE/f,UAAW,UACXk0C,MAAO,mBACP04a,UAAW,KAYTsmB,EAAa,CACjBlze,UAAW,WACXk0C,MAAO,wBACPC,IAAK,IACLw8a,aAAa,EACb/D,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,UACXk0C,MAAO,IAAIn0B,OACT06c,EAAS9K,QAAQt8d,WAAWP,QAAQ,MAAO,KACxC,QACLo8d,YAAY,EACZtC,UAAW,GAEbjlY,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAAEyB,YAAY,MAI1CikB,EAAiB,CAErBD,EACAN,EACAxW,EACAz0Y,EAAK0lY,YACLqP,EACAiW,EAEAE,EACAtW,EApLc,CACdv8d,UAAW,UACXk0C,MAAO,yBA6IU,CACjBl0C,UAAW,eACXk0C,MAAO,MACP04a,UAAW,IAuCPwmB,EAAU,CACdl/b,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZjE,UAAW,EACXjkb,SAAU,GAAG5oB,OACX,OACAozd,EACA,CACEj/b,MAAO,IAjRC,CACZ,SACA,OACA,OACA,MACA,OACA,OACA,UACA,SACA,SACA,WACA,MACA,QACA,YACA,QAmQuB5gD,KAAK,KAAO,IAC/B0M,UAAW,WACX4sd,UAAW,GAEb,CACE5sd,UAAW,OACXk0C,MAAO,YACP04a,UAAW,KAOjB,OAFAsmB,EAAWvqc,SAASvZ,QAAQgkd,GAErB,CACLnzf,KAAM,aACNs/B,QAAS,CACP,OACA,KACA,OAEF2xc,kBAAkB,EAClBztZ,SAAUg3Z,EACV9xb,SAAUwqc,EAAepzd,OACvB+yd,EACAC,EACAC,EACAC,EACAG,GAGN,aCuHAl2P,EAAO59F,QAzaP,SAAoB33D,GAClB,MAAMllE,EAAQklE,EAAKllE,MACbu7c,EAAY,CAChB,gBACA,eACA,SACA,SACA,eACA,UACA,UACA,MACA,UACA,SACA,UACA,aACA,YACA,SACA,QACA,OACA,iBACA,YACA,cACA,YACA,SACA,MACA,UACA,OACA,QACA,OACA,OACA,WACA,SACA,eACA,cACA,gBACA,QACA,cACA,aACA,eACA,iBACA,QACA,YACA,eACA,aACA,eACA,cACA,aACA,WACA,kBACA,SACA,cACA,WACA,WACA,SACA,YACA,aACA,eACA,eACA,eACA,aACA,eACA,gBACA,aACA,aACA,wBACA,WACA,QACA,UACA,OACA,YACA,MACA,OACA,SACA,SACA,QACA,SACA,OACA,aACA,QACA,YACA,OACA,SACA,WACA,SACA,QACA,OACA,aACA,QACA,QACA,MACA,YACA,MACA,aACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,WACA,YACA,WACA,MACA,cACA,cACA,SACA,YACA,UACA,QACA,cACA,cACA,kBACA,SACA,YACA,WACA,OACA,OACA,SACA,WACA,YACA,SACA,SACA,UACA,OACA,OACA,QACA,MACA,MACA,MACA,WACA,QACA,OACA,QACA,WACA,KACA,MACA,MACA,MACA,QACA,cACA,OACA,SACA,YACA,SACA,SACA,UACA,UACA,OACA,SACA,SACA,MACA,SACA,eACA,cACA,eACA,YACA,gBACA,iBACA,cACA,YACA,UACA,OACA,WACA,YACA,eACA,cACA,WACA,cACA,eACA,eACA,SACA,YACA,uBACA,gBACA,iBACA,aACA,cACA,UACA,eACA,YACA,cACA,aACA,cACA,SACA,UACA,UACA,UACA,QACA,SACA,SACA,YACA,eACA,mBACA,eACA,SACA,gBACA,WACA,SACA,aACA,YACA,QACA,YACA,YACA,SACA,eACA,OACA,UACA,cACA,cACA,QACA,OACA,SACA,MACA,aACA,MACA,eACA,YACA,aACA,qBACA,SACA,aACA,WACA,OACA,WACA,YACA,cACA,WACA,WACA,YACA,aACA,cACA,MACA,OACA,YACA,OACA,MACA,QACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,QACA,KACA,OACA,OACA,OACA,OACA,QACA,MACA,UACA,UACA,MACA,MACA,QACA,cACA,YACA,SACA,iBACA,cAEIoO,EAAQzkZ,EAAK2kY,SACb+mB,EAAY,CAAE13e,SAAU,CAC5B,CACEyiB,MAAOqE,EAAM1C,OAAO0C,EAAMspc,UAAUiS,GAAYv7c,EAAMopc,UAAU,UAChE7rd,UAAW,YAEb,CACE4sd,UAAW,EACXxuc,MAAOqE,EAAM1C,OACX,qBACAqsd,EAAO3pd,EAAMopc,UAAU,UACzB7rd,UAAW,oBAGTsze,EAAY,CAChBl1d,MAAO,CACL,SACAgud,GAEFpse,UAAW,CACT,EAAG,UACH,EAAG,gBAGDuze,EAAW,CACf3mB,UAAW,EACXxuc,MAAO,CACL,KACAgud,GAEFpse,UAAW,CAAE,EAAG,aAEZmhe,EAAQ,CACZxle,SAAU,CACR,CAAEyiB,MAAO,CACP,QACA,MACAgud,EACA,MACA,UACA,MACAA,IAEF,CAAEhud,MAAO,CACP,QACA,MACAgud,KAGJpse,UAAW,CACT,EAAG,UACH,EAAG,cACH,EAAG,UACH,EAAG,0BA+EP,MAAO,CACL/f,KAAM,aACNs/B,QAAS,CAAE,OACXkkD,SAAU,CACRksZ,QAAS,CA5CX,WACA,SACA,QACA,OACA,QACA,QACA,WACA,UACA,OACA,OACA,QACA,UACA,MACA,KACA,SACA,aACA,OACA,SACA,MACA,UACA,UACA,UACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,SACA,eACA,QACA,SACA,YACA,MACA,OACA,WACA,SAQEjxL,QAAS,2DACTv+S,MAAO,aACPw2D,SAAU,aACV0ib,SAAU,IACL2E,EAxEP,iBACA,UACA,QACA,SACA,YACA,UACA,SACA,QACA,YACA,YACA,YACA,UACA,UACA,YACA,aACA,SACA,aACA,aACA,QACA,WACA,OAuDE34e,KAvFU,CACZ,UACA,OACA,OACA,QACA,SACA,QACA,MACA,OACA,UAgFAsjD,SAAU,CACRw4b,EACAmS,EACAD,EACAE,EACA5rZ,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK2lY,eAGX,aCrYApwO,EAAO59F,QApCP,SAAiB33D,GACf,MAAO,CACL1nG,KAAM,kBACN0oD,SAAU,CACRg/C,EAAK2lY,cACL,CACEp5a,MAAO,6CACPC,IAAK,IACL08a,YAAY,GAEd,CACE38a,MAAO,2BACPC,IAAK,IACLsvB,SAAU,wCACVmpZ,UAAW,IAEb,CACE14a,MAAO,iBACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAK2lY,eACjBV,UAAW,IAEbjlY,EAAKklY,iBACLllY,EAAKolY,kBACL,CACE/sd,UAAW,SACXk0C,MAAO,MACPC,IAAK,OACL64a,cAAc,EACd6D,YAAY,EACZjE,UAAW,IAInB,aCwDA1vO,EAAO59F,QAxFP,SAAgB33D,GACd,MAgBM6rZ,EAAW,CAEft/b,MAAO,KACPC,IAAK,KACLy4a,UAAW,GAGPgR,EAAO,CAEX1pb,MAAO,KACPC,IAAK,MAGDs/b,EAAe,CAEnBzze,UAAW,UACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKumY,qBAGbwlB,EAAkB,CAEtB1ze,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAEg/C,EAAKglY,mBAgBb3wT,EAAQ,CA1DD,CAEX9nH,MAAO,qBACP04a,UAAW,GAGD,CAEV5sd,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,sBACT,CAAEA,MAAO,m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GAEbyP,KAINzP,UAAW,IAInB,aC5CA1vO,EAAO59F,QAxFP,SAAmB33D,GAajB,MAAO,CACL1nG,KAAM,YACNs/B,QAAS,CACP,KACA,OAEFkkD,SAEE,6iCAeF96B,SAAU,CAERg/C,EAAKr0C,QAAQ,IAAK,IAAK,CAAEs5a,UAAW,IAEpC,CACE5sd,UAAW,WACXk0C,MAAO,yCACPC,IAAK,MACL08a,YAAY,EACZF,aAAa,EACbhob,SAAU,CACR,CACE3oC,UAAW,UACXk0C,MAAO,mCACP28a,YAAY,GAEd,CACE7wd,UAAW,OACXk0C,MAAO,WAGTyzC,EAAK+lY,wBAxDG,CACd1td,UAAW,SACXk0C,MAAO,QACPC,IAAK,IACL24a,QAAS,OAEO,CAEhB9sd,UAAW,SACXk0C,MAAO,uBAsDX,aC5CAgpM,EAAO59F,QAxBP,SAAoB33D,GAClB,MAAO,CACLpoE,QAAS,CAAE,SACXopB,SAAU,CACR,CACE3oC,UAAW,cACXgvd,OAAQ,CAGN76a,IAAK,MACL66a,OAAQ,CACN76a,IAAK,IACL4gb,YAAa,WAGjBp5d,SAAU,CACR,CAAEu4C,MAAO,iBACT,CAAEA,MAAO,uBAKnB,aCsZAgpM,EAAO59F,QA5aP,SAAgB33D,GACd,MAAMllE,EAAQklE,EAAKllE,MACb6pc,EAAW,qCACXynB,EAAiB,CACrB,MACA,KACA,SACA,QACA,QACA,QACA,OACA,QACA,WACA,MACA,MACA,OACA,OACA,SACA,UACA,MACA,OACA,SACA,KACA,SACA,KACA,KACA,SACA,QACA,cACA,MACA,KACA,OACA,QACA,SACA,MACA,QACA,OACA,SAuGItZ,EAAW,CACflI,SAAU,sBACV5C,QAASokB,EACT1a,SAvGgB,CAChB,aACA,MACA,MACA,MACA,QACA,MACA,OACA,aACA,YACA,QACA,WACA,MACA,cACA,UACA,UACA,UACA,OACA,MACA,SACA,YACA,OACA,OACA,SACA,QACA,SACA,YACA,UACA,UACA,UACA,OACA,OACA,MACA,KACA,QACA,MACA,aACA,aACA,OACA,MACA,OACA,SACA,MACA,MACA,aACA,MACA,OACA,SACA,MACA,OACA,MACA,MACA,QACA,WACA,QACA,OACA,WACA,QACA,MACA,UACA,QACA,SACA,eACA,MACA,MACA,QACA,QACA,OACA,OACA,OAmCA36L,QAhCe,CACf,YACA,WACA,QACA,OACA,iBACA,QA2BAr5S,KArBY,CACZ,MACA,WACA,YACA,OACA,OACA,UACA,UACA,WACA,WACA,MACA,QACA,OACA,UAWI2uf,EAAS,CACbh0e,UAAW,OACXk0C,MAAO,kBAGH0mb,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,KACPC,IAAK,KACLsvB,SAAUg3Z,EACV3N,QAAS,KAGLmnB,EAAkB,CACtB//b,MAAO,OACP04a,UAAW,GAGP0N,EAAS,CACbt6d,UAAW,SACX2oC,SAAU,CAAEg/C,EAAKglY,kBACjBhxd,SAAU,CACR,CACEu4C,MAAO,yCACPC,IAAK,MACLxL,SAAU,CACRg/C,EAAKglY,iBACLqnB,GAEFpnB,UAAW,IAEb,CACE14a,MAAO,yCACPC,IAAK,MACLxL,SAAU,CACRg/C,EAAKglY,iBACLqnB,GAEFpnB,UAAW,IAEb,CACE14a,MAAO,8BACPC,IAAK,MACLxL,SAAU,CACRg/C,EAAKglY,iBACLqnB,EACAC,EACArZ,IAGJ,CACE1mb,MAAO,8BACPC,IAAK,MACLxL,SAAU,CACRg/C,EAAKglY,iBACLqnB,EACAC,EACArZ,IAGJ,CACE1mb,MAAO,eACPC,IAAK,IACLy4a,UAAW,IAEb,CACE14a,MAAO,eACPC,IAAK,IACLy4a,UAAW,IAEb,CACE14a,MAAO,4BACPC,IAAK,KAEP,CACED,MAAO,4BACPC,IAAK,KAEP,CACED,MAAO,4BACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACLsnB,EACArZ,IAGJ,CACE1mb,MAAO,4BACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACLsnB,EACArZ,IAGJjzY,EAAKklY,iBACLllY,EAAKolY,oBAKHmnB,EAAY,kBACZC,EAAa,QAAQD,WAAmBA,UAAkBA,QAM1DroB,EAAY,OAAOkoB,EAAezgf,KAAK,OACvC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S,CACP,MACA,KACA,MACA,SACA,QACA,QACA,aACA,KACA,OACA,SACA,OACA,MACA,QACA,YACA,WACA,MACA,MACA,WACA,UACA,KACA,KACA,UACA,UACA,cACA,OACA,OACA,MACA,MACA,MACA,MACA,OACA,MACA,SACA,UACA,MACA,SACA,SACA,KACA,OACA,KACA,MACA,MACA,MACA,MACA,SACA,SACA,OACA,KACA,MACA,OACA,MACA,UACA,OACA,QACA,QAEF0J,SA/EmB,CACrB,QACA,OACA,QACA,OACA,QACA,QACA,MACA,QACA,QACA,OACA,WACA,cACA,MACA,SACA,QAiEE36L,QAAS,CAAC,OAAQ,UAEpBouL,QAAS,mBACTnkb,SAAU,CACR,CACE3O,MAAO,UACP5b,MAAO,mBACPwuc,UAAW,GAEbjlY,EAAKulY,oBACLvlY,EAAKr0C,QAAQ,OAAQ,OAAQ,CAAEw5a,QAAS,cACxC,CACE9yb,MAAO,SACP5b,MAAO,4BAGT,CACE4b,MAAO,OACP5b,MAAO,iBAET,CACE4b,MAAO,OACP5b,MAAO,iBACPwuc,UAAW,GAEb,CACAxuc,MAAO,qBACLwuc,UAAW,GAEb,CACE5yb,MAAO,WACP5b,MAAO,gEACPwuc,UAAW,GAEbjlY,EAAK6/C,QAAQ7/C,EAAKklY,iBAAkB,CAClC7yb,MAAO,SACP4yb,UAAW,IAEbjlY,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAED,QAAS,OAChD,CACE9yb,MAAO,SACPr+B,SAAU,CACR,CAAEyiB,MAAO,8BACT,CAAEA,MAAO,wBACT,CAAEA,MAAO,uBACT,CAAEA,MAAO,0DAEXwuc,UAAW,IAInB,aCvGA1vO,EAAO59F,QA5BP,SAAa33D,GACX,MAAO,CACL1nG,KAAM,gBACNwjF,SACE,klCAcFqpZ,QAAS,KACTnkb,SAAU,CACRg/C,EAAKylY,kBACLzlY,EAAK2lY,cACL3lY,EAAKklY,iBACLllY,EAAKolY,mBAGX,aC+CA7vO,EAAO59F,QAzEP,SAAkB33D,GAChB,MAAMitZ,EAAa,wBAEbrB,EAAW,CACfvze,UAAW,YACXk0C,MAAO,cACPC,IAAK,OACL08a,YAAY,EACZ7B,OAAQ,CACN76a,IAAK,IACLy4a,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,WACXk0C,MAAO,iBAET,CACEl0C,UAAW,UACXk0C,MAAO,mBAMf,MAAO,CACLj0D,KAAM,WACNs/B,QAAS,CACP,QACA,aAEF2xc,kBAAkB,EAClBztZ,SAAU,SACV96B,SAAU,CAER,CACEuL,MAAO,UAAY0gc,EACnBzgc,IAAK,KACLsvB,SAAU,QACV96B,SAAU,CACR4qc,EACA5rZ,EAAKylY,oBAKT,CACEl5a,MAAO,oBAAsB0gc,EAC7Bzgc,IAAK,KACLsvB,SAAU,+DACVqpZ,QAAS,KACTnkb,SAAU,CACR,OACA4qc,EACA5rZ,EAAKylY,oBAKT,CACEl5a,MAAO,IAAM0gc,EACbzgc,IAAK,KACLxL,SAAU,CACR4qc,EACA5rZ,EAAKylY,oBAKTzlY,EAAKylY,mBAGX,aCoFAlwO,EAAO59F,QArJP,SAAkB33D,GAChB,MAAMktZ,EAAa,mEAQb9W,EAAW,qCAIXxB,EAAM,CACVv8d,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAO,sBACT,CAAEA,MAAO,iBAIPwob,EAAe,CACnB18d,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,iBACL4P,EACA,CACEv8d,UAAW,WACXk0C,MAAO,OACPC,IAAK,KACLxL,SAAU,CAAEg/C,EAAKglY,qBAKjBgmB,EAAc,CAClB3ye,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAGP,MAAO,CACLl0D,KAAM,2BACNs/B,QAAS,CAAE,YACX2xc,kBAAkB,EAClBztZ,SAAU,CACR8uZ,SAAU,WACV7zL,QAASq/L,EACTpO,QAASklB,EAAa,KAAOA,EAAWhif,MAAM,KAAKS,KAAK,MAAQ,KA9C5C,mKA8CmET,MAAM,KAAKS,KAAK,OAEzGq1C,SAAU,CACR,CACEhtC,SAAU,CACR,CACEu4C,MAAO,OACPC,IAAK,QAEP,CACED,MAAO,OACPC,IAAK,KAEP,CACED,MAAO,MACPC,IAAK,MAGT24a,QAAS,KAEXnlY,EAAKr0C,QAAQ,KAAM,KACnBopb,EACAiW,EACApW,EAEA,CAEErob,MAAO,0BACP04a,UAAW,EACX+D,aAAa,EACbhob,SAAU,CACR,CACE3oC,UAAW,YACXk0C,MAAO,SAET,CACEA,MAAO,IACPw+a,gBAAgB,EAChB9F,UAAW,EACXjkb,SAAU,CACR+zb,EACAiW,EACApW,EACA,CACEv8d,UAAW,UACXk0C,MAAO,OAAS6pb,EAASlre,MAAM,KAAKS,KAAK,KAAO,QAElD,CAEE4gD,MAAO,6BAqBjB,CAEEl0C,UAAW,SACXk0C,MAAO,kBAET,CACEA,MAAO,OAvHW,wFAuHcrhD,MAAM,KAAKS,KAAK,KAAO,iBACvDq9d,aAAa,EACbhob,SAAU,CACR,CACE3oC,UAAW,WACXk0C,MAAO,SAIb,CACEl0C,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAO,oBA/HD,26BA+H+BrhD,MAAM,KAAKS,KAAK,KAAO,YAC9D,CACE4gD,MAAO,OACP04a,UAAW,MAMvB,aCbA1vO,EAAO59F,QA5IP,SAAa33D,GACX,MAmGM20Y,EAAmB,CACvBl+c,MAAO,CACL,6CACA,MACAupE,EAAK2kY,UAEPtyb,MAAO,CACL,EAAG,UACH,EAAG,gBAIP,MAAO,CACL/5C,KAAM,gBACNwjF,SAAU,CACRksZ,QA3Ba,CACf,QACA,MACA,KACA,KACA,SACA,OACA,QACA,SACA,YAmBE0J,SAnHc,CAChB,MACA,OACA,UACA,OACA,OACA,OACA,aACA,YACA,kBACA,OACA,YACA,QACA,OACA,SACA,MACA,UACA,QACA,QACA,UACA,WACA,KACA,KACA,cACA,MACA,cACA,aACA,QACA,SACA,UACA,WACA,SACA,cACA,MACA,QACA,MACA,MACA,MACA,QACA,YACA,aACA,WACA,SACA,QACA,SACA,MACA,SACA,UACA,UACA,SACA,UACA,UACA,aACA,QACA,UACA,WACA,WACA,WACA,SACA,OACA,MACA,aACA,WACA,eACA,SACA,OACA,OACA,MACA,UACA,cACA,QACA,YACA,aACA,QACA,QACA,SAyCEh0e,KAtCU,CACZ,SACA,QACA,QACA,QACA,SACA,WAkCAyne,QAAS,KACTnkb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKolY,kBACLplY,EAAKklY,iBACLllY,EAAK2lY,cACL,CACEttd,UAAW,OACXk0C,MAAO,IACPC,IAAK,KAEPmob,EACA,CACE7N,cAAe,gCACft6a,IAAK,QAIb,aC6SA+oM,EAAO59F,QAtbP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MACbqyd,EAAiB,qFAEjBC,EAAgBtyd,EAAMspc,OAC1B,uBAEA,8BAGIipB,EAA+Bvyd,EAAM1C,OAAOg1d,EAAe,YAa3DE,EAAgB,CACpB,oBAAqB,CACnB,WACA,WACA,gBAEF,oBAAqB,CACnB,OACA,SAEFtlB,QAAS,CACP,QACA,MACA,QACA,QACA,QACA,OACA,QACA,UACA,KACA,OACA,QACA,MACA,MACA,SACA,MACA,KACA,KACA,SACA,OACA,MACA,KACA,OACA,UACA,SACA,QACA,SACA,OACA,QACA,SACA,QACA,OACA,QACA,QApDF,UACA,SACA,UACA,SACA,UACA,YACA,QACA,SAgDA0J,SAAU,CACR,OACA,SACA,gBACA,cACA,cACA,gBACA,mBACA,mBAEF36L,QAAS,CACP,OACA,QACA,QAGEw2M,EAAY,CAChBl1e,UAAW,SACXk0C,MAAO,cAEHihc,EAAa,CACjBjhc,MAAO,KACPC,IAAK,KAED6ob,EAAgB,CACpBr1Y,EAAKr0C,QACH,IACA,IACA,CAAE3K,SAAU,CAAEusc,KAEhBvtZ,EAAKr0C,QACH,UACA,QACA,CACE3K,SAAU,CAAEusc,GACZtoB,UAAW,KAGfjlY,EAAKr0C,QAAQ,WAAYq0C,EAAKsmY,mBAE1B2M,EAAQ,CACZ56d,UAAW,QACXk0C,MAAO,MACPC,IAAK,KACLsvB,SAAUwxa,GAEN3a,EAAS,CACbt6d,UAAW,SACX2oC,SAAU,CACRg/C,EAAKglY,iBACLiO,GAEFj/d,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,IA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,SAAuB33D,GACrB,MAAO,CACL1nG,KAAM,wBACNwjF,SAAU,CACRksZ,QACE,y/FAmCF0J,SACE,ocAMJ1wb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKklY,iBACLllY,EAAKolY,kBACLplY,EAAK2lY,cACL,CACEttd,UAAW,UACXrE,SAAU,CACR,CACEu4C,MAAO,QACP04a,UAAW,GAEb,CAAE14a,MAAO,mBAKnB,aC4PAgpM,EAAO59F,QA3TP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MAGb8yd,EAAiB,QACjBhpB,EAAsB9pc,EAAM1C,OAAOw1d,EAAgB5tZ,EAAK4kY,qBACxDD,EAAW7pc,EAAM1C,OAAOw1d,EAAgB5tZ,EAAK2kY,UAE7CmmB,EAAkB,CACtBzye,UAAW,wBACX4sd,UAAW,EACX14a,MAAOzxB,EAAM1C,OACX,KACA,oCACAusc,EACA7pc,EAAMopc,UAAU,WAEd2pB,EAAgB,wCA+DhBjG,EAAW,CAEf,QAEA,OACA,OACA,QACA,OACA,OACA,KACA,QACA,SACA,UACA,QACA,QACA,YACA,aACA,KACA,MACA,QACA,QACA,OACA,OACA,UACA,WACA,SACA,eACA,sBACA,oBACA,iBACA,WAEA,UACA,aACA,YACA,SACA,OACA,OACA,UACA,iBACA,gBACA,mBACA,OACA,YACA,SACA,QACA,UACA,eACA,iBACA,eACA,QACA,kBACA,eACA,cACA,SACA,WACA,UACA,aACA,OACA,iBACA,eACA,OACA,SACA,WACA,eACA,aACA,oBAEIzS,EAAQ,CACZ,KACA,MACA,MACA,MACA,OACA,QACA,KACA,MACA,MACA,MACA,OACA,QACA,MACA,MACA,MACA,OACA,OACA,MACA,SACA,SACA,SACA,OAEF,MAAO,CACL78e,KAAM,OACNs/B,QAAS,CAAE,MACXkkD,SAAU,CACR8uZ,SAAU5qY,EAAK2kY,SAAW,KAC1Bjne,KAAMy3e,EACNnN,QAhKa,CACf,WACA,KACA,QACA,QACA,SACA,MACA,QACA,QACA,WACA,QACA,KACA,MACA,OACA,OACA,SACA,QACA,QACA,KACA,MACA,KACA,OACA,KACA,MACA,OACA,QACA,QACA,MACA,OACA,MACA,WACA,OACA,MACA,MACA,SACA,OACA,OACA,SACA,SACA,QACA,QACA,OACA,MACA,OACA,SACA,QACA,SACA,UACA,MACA,UACA,QACA,QACA,SA6GEjxL,QA3Ga,CACf,OACA,QACA,OACA,OACA,KACA,OAsGE26L,SAAUkW,GAEZziB,QAAS,KACTnkb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKr0C,QAAQ,OAAQ,OAAQ,CAAE3K,SAAU,CAAE,UAC3Cg/C,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CACnC74a,MAAO,MACP44a,QAAS,OAEX,CACE9sd,UAAW,SAEXk0C,MAAO,gCAET,CACEla,MAAO,SACPr+B,SAAU,CACR,CAAEu4C,MAAO,4BACT,CACEA,MAAO,MACPC,IAAK,IACLxL,SAAU,CACR,CACE3O,MAAO,cACP5b,MAAO,qCAMjB,CACEpe,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,gBAAkBshc,GAC3B,CAAEthc,MAAO,iBAAmBshc,GAC5B,CAAEthc,MAAO,uBAAyBshc,GAClC,CAAEthc,MAAO,kDACEshc,IAEb5oB,UAAW,GAEb,CACE14a,MAAO,CACL,KACA,MACAq4a,GAEFvsd,UAAW,CACT,EAAG,UACH,EAAG,mBAGP,CACEA,UAAW,OACXk0C,MAAO,SACPC,IAAK,MACLxL,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRg/C,EAAKglY,qBAKb,CACEz4a,MAAO,CACL,MACA,MACA,cACAq4a,GAEFvsd,UAAW,CACT,EAAG,UACH,EAAG,UACH,EAAG,aAIP,CACEk0C,MAAO,CACL,MACA,MACAq4a,EACA,MACA,MAEFvsd,UAAW,CACT,EAAG,UACH,EAAG,WACH,EAAG,YAGP,CACEk0C,MAAO,CACL,OACA,MACAq4a,GAEFvsd,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CACEk0C,MAAO,CACL,uCACA,MACAq4a,GAEFvsd,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CACEk0C,MAAOyzC,EAAK2kY,SAAW,KACvB7oZ,SAAU,CACRksZ,QAAS,OACT0J,SAAUkW,EACVlqf,KAAMy3e,IAGV,CACE98d,UAAW,cACXk0C,MAAO,MAETu+b,GAGN,YCyOAv1P,EAAO59F,QApiBP,SAAa33D,GACX,MAAMllE,EAAQklE,EAAKllE,MA6dnB,MAAO,CACLxiC,KAAM,MACNixe,kBAAkB,EAClBztZ,SAAU,CACRi7N,QAnBa,CACf,OACA,UACA,QACA,cACA,cACA,WACA,MACA,SACA,SACA,YACA,SACA,YAQEixL,QAheiB,CACnB,KACA,KACA,OACA,OACA,MACA,QACA,QACA,QACA,QACA,SACA,KACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,SACA,QACA,YACA,UACA,KACA,OACA,SACA,QACA,OACA,WACA,WACA,SACA,OACA,KACA,SACA,WACA,QACA,OACA,QACA,QACA,SACA,UACA,OACA,OACA,WACA,QACA,UACA,SACA,UACA,SACA,MACA,OACA,MACA,WACA,SACA,SACA,UACA,SACA,SACA,SACA,MACA,OACA,WACA,OACA,QACA,SACA,UACA,QACA,SACA,MACA,UACA,MACA,MACA,QACA,KACA,UACA,QACA,SACA,SACA,WACA,WACA,OACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,KACA,MACA,OACA,UACA,SACA,UACA,MACA,OACA,KACA,KACA,QACA,UACA,aACA,QACA,WACA,SACA,MACA,QACA,SACA,SACA,WACA,OACA,UAoXAhnb,SAAU,CACR,CAEE3oC,UAAW,UACXk0C,MAAO,0CAET,CAEEl0C,UAAW,WACXk0C,MAAO,+BAET,CACEA,MAAO,CACL,OACA,oBACA,YACA,aAEFl0C,UAAW,CACT,EAAG,UACH,EAAG,WAGP,CACEk0C,MAAO,CACL,eACA,MACA,2BAEFl0C,UAAW,CACT,EAAG,WACH,EAAG,mBAGP,CACEA,UAAW,WACXk0C,MAAO,IAAMzxB,EAAMspc,OAxHvB,SACA,WACA,SACA,UACA,WACA,UACA,UACA,KACA,OACA,MACA,OACA,SACA,OACA,KACA,QACA,QACA,SACA,QACA,OACA,SACA,MACA,QACA,UACA,QACA,OACA,WACA,UACA,QACA,MACA,UACA,QACA,WACA,QACA,UACA,WACA,QACA,QACA,UACA,OACA,MACA,SACA,SACA,UACA,WACA,UACA,UACA,SACA,UACA,UACA,QACA,UACA,OACA,KACA,OACA,UACA,QACA,SACA,SACA,QACA,WA+DE,CAEE/rd,UAAW,iBACXk0C,MAAO,2BAET,CAIEl0C,UAAW,OACXk0C,MAAOzxB,EAAMspc,OA/ZjB,MACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,OACA,UACA,UACA,OACA,MACA,UACA,OACA,OACA,MACA,OACA,SACA,OACA,QACA,SACA,UACA,SACA,WACA,WACA,MACA,OACA,MACA,SACA,KACA,SACA,WACA,SACA,UACA,UACA,QACA,OACA,UACA,WACA,WACA,MACA,SACA,QACA,UACA,UACA,QACA,QACA,SACA,SACA,SACA,SACA,UACA,OACA,MACA,UACA,MACA,QACA,OACA,QACA,WACA,UACA,QACA,WACA,SACA,MACA,OACA,QACA,MACA,UACA,SACA,OACA,UACA,QACA,WACA,SACA,OACA,YACA,WACA,UACA,QACA,OACA,UACA,WACA,WACA,QACA,SACA,QACA,QACA,WACA,UACA,SACA,OACA,OACA,QACA,UACA,QACA,OACA,OACA,SACA,SACA,QACA,YACA,UACA,UACA,SACA,MACA,WACA,OACA,UACA,QACA,SACA,SACA,QACA,SACA,SACA,MACA,QACA,QACA,QACA,MACA,UACA,UACA,WACA,MACA,SACA,OACA,SACA,SACA,UACA,SACA,MACA,QACA,OACA,SACA,SACA,SACA,UACA,MACA,MACA,OACA,MACA,SACA,MACA,QACA,QACA,OACA,IACA,QACA,QACA,SACA,OACA,MACA,OACA,UACA,WACA,MACA,OACA,QACA,MACA,QACA,UACA,OACA,WACA,WACA,UACA,QACA,UACA,WACA,SACA,WACA,WACA,QACA,MACA,OACA,OACA,MACA,QACA,SACA,SACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,UACA,SACA,QACA,QACA,SACA,OACA,MACA,SACA,OACA,MACA,OACA,WACA,UACA,SACA,OACA,MACA,SACA,SACA,SACA,UACA,SACA,MACA,SACA,SACA,SACA,UACA,QACA,SACA,MACA,OACA,OACA,WACA,OACA,SACA,QACA,YACA,UACA,WACA,OACA,QACA,QACA,UACA,SACA,MACA,MACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,UACA,WACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,aACA,cACA,aACA,cACA,aACA,cACA,aACA,SACA,UACA,UACA,WACA,QACA,SACA,QACA,SACA,UACA,OACA,MACA,UACA,UACA,WACA,YAyIwC,WAEtC,CACE/rd,UAAW,SACXrE,SAAU,CACRgsF,EAAKklY,iBACLllY,EAAKolY,oBAGTplY,EAAKr0C,QAAQ,MAAO,KACpBq0C,EAAKwlY,sBAGX,YCrVAjwO,EAAO59F,QA7MP,SAAe33D,GACb,MAAMllE,EAAQklE,EAAKllE,MAObm4c,EAAQ,CACZ56d,UAAW,QACXrE,SAAU,CACR,CAAEu4C,MAAO,oBACT,CACEA,MAAO,OACPC,IAAK,QAKLmmb,EAAS,CACbt6d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,MACPC,IAAK,OAEP,CACED,MAAO,IACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACEz4a,MAAO,UACPC,IAAK,IACL24a,QAAS,MACTnkb,SAAU,CACRg/C,EAAKglY,iBACLiO,IAGJ,CACE56d,UAAW,SACXk0C,MAAO,YACPC,IAAK,MACLxL,SAAU,CAAEiyb,GACZhO,UAAW,MAMX50d,EAAO,CACXgI,UAAW,OACXk0C,MAAO,wBACP04a,UAAW,GAGPt/d,EAAO,CACX0S,UAAW,QACXk0C,MAAO,iFACP04a,UAAW,GAGPuU,EAAQ,CACZnhe,UAAW,QACXyud,cAAe,0BACft6a,IAAK,aACL08a,YAAY,EACZlob,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACL,CACEsB,cAAe,eACf7B,UAAW,IAEb,CACE14a,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZjE,UAAW,EACXjkb,SAAU,CACR3wC,EACA2vF,EAAKulY,oBACLvlY,EAAKwlY,uBAGT,CACEntd,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZjE,UAAW,EACXjkb,SAAU,CACR3wC,EACA2vF,EAAKulY,oBACLvlY,EAAKwlY,uBAGT7/d,IAIEy1e,EAAS,CACb/ie,UAAW,WACXyud,cAAe,MACft6a,IAAK1xB,EAAMopc,UAAU,eACrBljb,SAAU,CAAEr7C,IAwEd,MAAO,CACLrN,KAAM,QACNwjF,SAAU,CACRi7N,QAAS,kBACTixL,QAAS,+RAEXhnb,SAAU,CAzBY,CACtBuL,MAAO,CACL,MACA,MACA,QACA,MACA,OAEFs8a,WAAY,CACV,EAAG,UACH,EAAG,UACH,EAAG,QAELr8a,IAAK,IACLxL,SAAU,CArBY,CACtB3oC,UAAW,SACXk0C,MAAO,SAgCLyzC,EAAKulY,oBACLvlY,EAAKwlY,qBACLmN,EACAtie,EACA+qe,EACA5B,EACAx5Y,EAAK2lY,cAnFS,CAChBp5a,MAAO,CACL,OACA,YACA,eAEFs8a,WAAY,CAAE,EAAG,YAGP,CACVt8a,MAAO,CACL,OACA,MACA,MACA,kBAEFs8a,WAAY,CACV,EAAG,UACH,EAAG,YAOL,CAAEpyc,MAAO,cACT,CACE81B,MAAO,iBACPuvB,SAAU,UAIa,CACzBvvB,MAAO,CACL,QACA,QACA,aAEFs8a,WAAY,CAAE,EAAG,YApJA,CACjBxwd,UAAW,OACXk0C,MAAO,eAuMX,aChBAgpM,EAAO59F,QAxLP,SAAgB33D,GACd,MAAM8tZ,EAAkB,wCAClBC,EAA0B,0BAE1Bjb,EAAW,CACflI,SAAUkjB,EACVpc,SACE,ooEAmCEL,EAAU,CACdh5d,UAAW,UACXk0C,MAAO,eAAiBuhc,EAAkB,YAGtC9a,EAAS,CACb36d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAOwhc,EACP9oB,UAAW,GAEb,CACE14a,MApD2Bwhc,EAA0B,SAAWA,EAA0B,IAqD1F9oB,UAAW,GAEb,CAAE14a,MAAO,sBACT,CAAEA,MAAO,sBACT,CAAEA,MAAO,8BAIPomb,EAAS3yY,EAAKolY,kBAEdiQ,EAAgB,CACpBr1Y,EAAKr0C,QACH,IACA,IACA,CAAEs5a,UAAW,IAEfjlY,EAAKr0C,QAAQ,OAAQ,SAGjB84b,EAAQ,CACZl4b,MAAOuhc,EACP7oB,UAAW,GAGP+oB,EAAe,CACnB31e,UAAW,SACXk0C,MAAO,IAAOuhc,GAGVzyC,EAAO,CACX0vB,gBAAgB,EAChB9F,UAAW,GAGPgpB,EAAc,CAClBj6e,SAAU,CACR,CAAEu4C,MAAO,KACT,CAAEA,MAAO,MAEXvL,SAAU,CACR,CACEuL,MAAO,MACPC,IAAK,MACLxL,SAAU,CACR,OACAqwb,EACAsB,EACAK,EACAyR,EACAuJ,MAMFrof,EAAO,CACX0S,UAAW,OACX4sd,UAAW,EACX14a,MAAOuhc,EACPhya,SAAUg3Z,GA0BNmD,EAAO,CACXjie,SAAU,CACR,CACEu4C,MAAO,MACPC,IAAK,OAEP,CACED,MAAO,MACPC,IAAK,QAGTxL,SAAU,CAlCG,CACbuL,MAAO,SACPw+a,gBAAgB,EAChB/B,aAAa,EACbhob,SAAU,CACRr7C,EACA,CACE4he,YAAY,EACZvzd,SAAU,CACR,CACEu4C,MAAO,KACPC,IAAK,MAEP,CACED,MAAO,KACPC,IAAK,OAGTxL,SAAU,CAAEyjc,MAkBd9+e,EACA01c,IAcJ,OAVAA,EAAKr6Z,SAAW,CACdqwb,EACA2B,EACAL,EACA8R,EACAuJ,EACAC,EACAhY,GACA79c,OAAOi9c,GAEF,CACL/8e,KAAM,SACNs/B,QAAS,CAAC,OACVutc,QAAS,KACTnkb,SAAU,CACRg/C,EAAKymY,UACLuM,EACAL,EACAqb,EACAC,EACAhY,GACA79c,OAAOi9c,GAEb,aCzHA9/O,EAAO59F,QA/DP,SAAgB33D,GACd,MAAMkuZ,EAAkB,CACtBluZ,EAAK2lY,cACL,CACEttd,UAAW,SACXk0C,MAAO,OACPC,IAAK,OACLxL,SAAU,CACRg/C,EAAKglY,iBACL,CAAEz4a,MAAO,SAKf,MAAO,CACLj0D,KAAM,SACNs/B,QAAS,CAAE,OACXkkD,SAAU,CACR8uZ,SAAU,QACV5C,QAAS,wIAETjxL,QACE,6CACF26L,SACC,4bAOHvM,QAAS,uBACTnkb,SAAU,CACR,CACE3oC,UAAW,WACXyud,cAAe,WACft6a,IAAK,IACLxL,SAAU,CACRg/C,EAAK+lY,sBACL,CACE1td,UAAW,SACXk0C,MAAO,MACPC,IAAK,SAMX,CACED,MAAO,gCACP04a,UAAW,GAEb,CACE14a,MAAO,MACPC,IAAK,aACLy4a,UAAW,EACXjkb,SAAUktc,GAEZluZ,EAAKr0C,QAAQ,KAAM,MACnBvzB,OAAO81d,GAEb,aCtEA,MAyKMrW,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACAr0c,OAAOisC,UAGHqoa,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACAt0c,OAAOisC,UAGHsoa,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACAv0c,OAAOisC,UAEH2sX,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA54Z,OAAOisC,UAgIT6lL,EAAO59F,QApHP,SAAc33D,GACZ,MAAMqsD,EAvzBOrsD,KACN,CACLi4Y,UAAW,CACT5lc,MAAO,OACPka,MAAO,cAET2rb,cAAel4Y,EAAKwlY,qBACpB2S,SAAU,CACR9lc,MAAO,SACPka,MAAO,mDAETwnb,kBAAmB,CACjB17d,UAAW,WACXk0C,MAAO,gBAET6rb,wBAAyB,CACvB/lc,MAAO,gBACPka,MAAO,KACPC,IAAK,KACL24a,QAAS,IACTnkb,SAAU,CACRg/C,EAAKklY,iBACLllY,EAAKolY,oBAGTiT,gBAAiB,CACfhmc,MAAO,SACPka,MAAOyzC,EAAK6kY,UAAL7kY,kGASPilY,UAAW,GAEbqT,aAAc,CACZjge,UAAW,OACXk0C,MAAO,+BA+wBG05a,CAAMjmY,GACdmuZ,EAAoBnW,EACpBoW,EAAmBrW,EAEnBH,EAAgB,WAGhBlD,EAAW,CACfr8d,UAAW,WACXk0C,MAAO,kCACP04a,UAAW,GAGb,MAAO,CACL3se,KAAM,OACNixe,kBAAkB,EAClBpE,QAAS,SACTnkb,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBAGLn5U,EAAMgsV,gBACN,CACEhge,UAAW,cACXk0C,MAAO,kBACP04a,UAAW,GAEb,CACE5sd,UAAW,iBACXk0C,MAAO,oBACP04a,UAAW,GAEb54U,EAAM+rV,wBACN,CACE//d,UAAW,eACXk0C,MAAO,OAASsrb,EAAKlse,KAAK,KAAO,OAEjCs5d,UAAW,GAEb,CACE5sd,UAAW,kBACXk0C,MAAO,KAAO6hc,EAAiBzif,KAAK,KAAO,KAE7C,CACE0M,UAAW,kBACXk0C,MAAO,SAAW4hc,EAAkBxif,KAAK,KAAO,KAElD+oe,EACA,CACEnob,MAAO,KACPC,IAAK,KACLxL,SAAU,CAAEqrG,EAAMgsV,kBAEpBhsV,EAAMisV,aACN,CACEjge,UAAW,YACXk0C,MAAO,OAAS8vY,EAAW1wb,KAAK,KAAO,QAEzC,CAAE4gD,MAAO,8oCACT,CACEA,MAAO,IACPC,IAAK,QACLy4a,UAAW,EACXjkb,SAAU,CACRqrG,EAAM6rV,cACNxD,EACAroV,EAAM8rV,SACN9rV,EAAMgsV,gBACNr4Y,EAAKolY,kBACLplY,EAAKklY,iBACL74U,EAAM4rV,UACN5rV,EAAM0nV,oBAMV,CACExnb,MAAO,oBACPuvB,SAAU,CACR8uZ,SAAUgN,EACV5P,QAAS,qBAGb,CACEz7a,MAAO,IACPC,IAAK,OACLw8a,aAAa,EACbltZ,SAAU,CACR8uZ,SAAU,UACV5C,QAtFa,kBAuFbvgb,UAAWqwb,EAAense,KAAK,MAEjCq1C,SAAU,CACR,CACEuL,MAAOqrb,EACPv/d,UAAW,WAEb,CACEk0C,MAAO,eACPl0C,UAAW,aAEbq8d,EACA10Y,EAAKolY,kBACLplY,EAAKklY,iBACL74U,EAAM8rV,SACN9rV,EAAMgsV,kBAGVhsV,EAAM0nV,mBAGZ,aCx4BAx+O,EAAO59F,QAvBP,SAAe33D,GACb,MAAO,CACL1nG,KAAM,gBACNs/B,QAAS,CACP,UACA,gBAEFopB,SAAU,CACR,CACE3oC,UAAW,cAIXk0C,MAAO,qCACP86a,OAAQ,CACN76a,IAAK,gBACL4gb,YAAa,UAKvB,aC+FA73O,EAAO59F,QArHP,SAAe33D,GACb,MAAMquZ,EAAuB,CAC3B,MACA,MACA,MACA,OACA,OACA,QACA,MACA,SACA,QACA,OACA,KACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,SACA,MACA,MACA,OACA,MACA,QACA,OACA,OAkCF,MAAO,CACL/1f,KAAM,QACN0oD,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACLy4a,UAAW,GAEbjlY,EAAKr0C,QACH,IACA,IACA,CAAEs5a,UAAW,IAEf,CACE5sd,UAAW,UACXrE,SAAU,CACR,CAAEu4C,MAAO,6BACT,CACEA,MAAO,oBACP04a,UAAW,GAEb,CACE14a,MAAO,oBACP04a,UAAW,GAEb,CAAE14a,MAAO,OAvCM,CACrB,YACA,cACA,WACA,QACA,YACA,SACA,UACA,YACA,SACA,SACA,UA4BuC5gD,KAAK,KAAO,OAGjD,CACE0M,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAO,OAAS8hc,EAAqB1if,KAAK,KAAO,QACnD,CACE4gD,MAAO,OAAS8hc,EAAqB1if,KAAK,KAAO,2BACjDs5d,UAAW,IAEb,CACE14a,MAAO,OAtEa,CAC5B,OACA,OACA,QACA,QACA,UACA,OACA,SACA,UACA,UACA,OACA,WACA,SACA,OACA,UACA,SACA,OACA,UAqD8C5gD,KAAK,KAAO,2BAClDs5d,UAAW,MAIjB,CACE5sd,UAAW,QACXk0C,MAAO,cACP04a,UAAW,GAEb,CAAE14a,MAAO,eAGf,aCvDAgpM,EAAO59F,QA5DP,SAAmB33D,GACjB,MAAMsuZ,EAAe,qBACfC,EAAO,CACXl2e,UAAW,SACXk0C,MAAO,WAEHwmb,EAAS,CACb16d,UAAW,SACXk0C,MAAO,IAAMyzC,EAAK4kY,qBAEpB,MAAO,CACLtse,KAAM,YACNs/B,QAAS,CAAE,MACXkkD,SAAU,CACR,OACA,QACA,MACA,OACA,QACA,eAEF96B,SAAU,CACRg/C,EAAKr0C,QAAQ,IAAK,KAClBq0C,EAAKklY,iBACL,CACE7sd,UAAW,OACXk0C,MAAO,wBACP04a,UAAW,GAEb,CACE14a,MAAO+hc,EAAe,IACtBrpB,UAAW,GAEbjlY,EAAK2lY,cACLoN,EACAwb,EACA,CAIEhic,MAAO,UAAY+hc,EAAe,QAAUA,EAAe,YAC3DtlB,aAAa,EACbx8a,IAAK,KACL24a,QAAS,KACTnkb,SAAU,CAAE,CAAEuL,MAAO,aAAe+hc,KAEtC,CACE/hc,MAAO,OACPC,IAAK,MACLxL,SAAU,CACRg/C,EAAKklY,iBACLqpB,EACAvuZ,EAAK2lY,cACLoN,KAKV,aCQAx9O,EAAO59F,QAlEP,SAAa33D,GACX,MAAO,CACL1nG,KAAM,oBACNs/B,QAAS,CAAE,MACXkkD,SAAU,CACR8uZ,SAAU,eACV5C,QAEE,iPAIF0J,SAEE,uFACF36L,QACE,+CAEJouL,QAAS,UACTnkb,SAAU,CACR,CACE3oC,UAAW,UACXk0C,MAAO,mBACP04a,UAAW,GAEbjlY,EAAKr0C,QACH,SACA,SACA,CAAE3K,SAAU,CAAE,UAEhB,CACE3oC,UAAW,SACXk0C,MAAO,0BAGT,CACEl0C,UAAW,OACXk0C,MAAO,iBAET,CACEl0C,UAAW,OACXk0C,MAAO,kBACP04a,UAAW,GAEb,CACE14a,MAAO,sBACTyzC,EAAK6/C,QAAQ7/C,EAAKklY,iBAAkB,CAClC7sd,UAAW,SACX4sd,UAAW,IAEbjlY,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAED,QAAS,OAChD,CACE9sd,UAAW,SACXk0C,MACE,2HAIF04a,UAAW,GAEb,CAAE14a,MAAO,UAIf,aC6hFAgpM,EAAO59F,QA7jFP,SAAa33D,GAEX,MAcMuxY,EAAU,CACdl5d,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,KACP04a,UAAW,KAIjB,CACE14a,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,KACP04a,UAAW,OAo+Ef0O,EAAe,CACnBt7d,UAAW,OACXk0C,MAAO,eACPC,IAAK,IACLsvB,SAAU,kDACV96B,SAAU,CACR,CACEuL,MAAO,OACP04a,UAAW,GAEbjlY,EAAK6/C,QAAQ0xV,EAAS,CAAEl5d,UAAW,WACnC,CACEk0C,MAAO,YACPC,IAAK,IACL24a,QAAS,OAEXnlY,EAAKulY,oBACLvlY,EAAKwlY,uBAIT,MAAO,CACLlte,KAAM,MACNixe,kBAAkB,EAClBztZ,SAAU,CACRksZ,QAt/Ea,CACf,QACA,YACA,WACA,UACA,OACA,QACA,WACA,eACA,UACA,KACA,OACA,OACA,WACA,MACA,UACA,OACA,KACA,QACA,UACA,SACA,OACA,OACA,QACA,KACA,MACA,YACA,QACA,QA29EE0J,SAx7Ea,CACf,MACA,UACA,OACA,SACA,YACA,aACA,eACA,mBACA,kBACA,uBACA,aACA,eACA,iBACA,kBACA,cACA,0BACA,oBACA,sBACA,eACA,YACA,cACA,mBACA,yBACA,oBACA,mBACA,cACA,mBACA,uBACA,4BACA,wBACA,mBACA,kBACA,kBACA,WACA,uBACA,aACA,eACA,iBACA,cACA,UACA,eACA,qBACA,cACA,oBACA,mBACA,gBACA,eACA,cACA,uBACA,mBACA,yBACA,oBACA,kBACA,eACA,oBACA,UACA,cACA,yBACA,oBACA,uBACA,aACA,eACA,kBACA,uBACA,gCACA,YACA,eACA,WACA,eACA,yBACA,oBACA,gBACA,wBACA,YACA,aACA,4BACA,aACA,UACA,cACA,YACA,iBACA,uBACA,kBACA,gBACA,gBACA,kBACA,gCACA,sCACA,QACA,QACA,SACA,WACA,gBACA,SACA,qBACA,gBACA,mBACA,cACA,gBACA,QACA,kBACA,wBACA,gBACA,cACA,cACA,cACA,eACA,UACA,aACA,kBACA,mBACA,cACA,uBACA,YACA,UACA,gBACA,WACA,oBACA,aACA,cACA,sBACA,+BACA,cACA,eACA,iBACA,sBACA,eACA,aACA,eACA,cACA,aACA,mBACA,WACA,aACA,WACA,cACA,WACA,eACA,qBACA,OACA,cACA,MACA,UACA,aACA,cACA,eACA,gBACA,iBACA,iBACA,uBACA,iBACA,iBACA,SACA,QACA,eACA,iBACA,OACA,WACA,WACA,SACA,gBACA,qBACA,oBACA,iBACA,iBACA,iBACA,gBACA,gBACA,oBACA,iBACA,gBACA,iBACA,gBACA,iBACA,eACA,kBACA,sBACA,mBACA,aACA,aACA,kBACA,OACA,QACA,MACA,WACA,iBACA,kBACA,aACA,eACA,WACA,gBACA,QACA,WACA,gBACA,oBACA,gBACA,oBACA,mBACA,YACA,YACA,sBACA,YACA,iBACA,oBACA,cACA,kBACA,iBACA,iBACA,eACA,eACA,cACA,0BACA,6BACA,wBACA,yBACA,eACA,kBACA,YACA,gBACA,sCACA,OACA,gBACA,aACA,YACA,oBACA,eACA,0BACA,YACA,aACA,eACA,wBACA,iBACA,WACA,aACA,qBACA,aACA,eACA,iBACA,gBACA,iBACA,kBACA,gBACA,qBACA,gBACA,mBACA,mBACA,aACA,YACA,aACA,cACA,YACA,iBACA,YACA,eACA,eACA,YACA,YACA,SACA,uBACA,sBACA,mBACA,8BACA,kBACA,UACA,UACA,eACA,WACA,aACA,8BACA,oBACA,kBACA,UACA,aACA,YACA,eACA,OACA,iBACA,gBACA,iBACA,kBACA,YACA,qBACA,qBACA,4BACA,qBACA,2BACA,iBACA,kBACA,iBACA,uBACA,gBACA,qBACA,2BACA,oBACA,eACA,aACA,mBACA,yBACA,kBACA,cACA,cACA,eACA,eACA,qBACA,qBACA,gBACA,wBACA,kBACA,aACA,uBACA,cACA,YACA,cACA,gBACA,aACA,gBACA,iBACA,cACA,eACA,cACA,yBACA,gBACA,eACA,UACA,gBACA,kBACA,sBACA,UACA,eACA,gBACA,eACA,cACA,gBACA,aACA,kBACA,aACA,WACA,mBACA,wBACA,kBACA,sBACA,sBACA,uBACA,kBACA,oBACA,uBACA,oBACA,kBACA,gBACA,MACA,QACA,aACA,gBACA,YACA,YACA,eACA,wBACA,mBACA,cACA,eACA,eACA,kBACA,oBACA,qBACA,gBACA,mBACA,cACA,qBACA,gBACA,yBACA,iBACA,eACA,oBACA,aACA,aACA,uBACA,0BACA,qBACA,mBACA,aACA,oBACA,aACA,aACA,gBACA,aACA,gBACA,oBACA,qBACA,OACA,cACA,WACA,UACA,WACA,SACA,mBACA,kBACA,mBACA,gBACA,kBACA,eACA,eACA,sBACA,YACA,mBACA,0BACA,SACA,sBACA,uBACA,sBACA,sBACA,cACA,gBACA,aACA,gBACA,aACA,aACA,aACA,cACA,WACA,iBACA,sBACA,iBACA,UACA,UACA,iBACA,mBACA,oBACA,kBACA,gBACA,mBACA,kBACA,eACA,uBACA,qBACA,uBACA,YACA,oBACA,iBACA,oBACA,aACA,0BACA,eACA,6BACA,yBACA,YACA,mBACA,qBACA,eACA,yBACA,0BACA,yBACA,yBACA,iBACA,uBACA,sBACA,cACA,eACA,cACA,gBACA,iBACA,gBACA,iBACA,gBACA,iBACA,gBACA,iBACA,gBACA,iBACA,gBACA,iBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,6BACA,eACA,gBACA,uBACA,yBACA,eACA,uBACA,oBACA,uBACA,wBACA,kBACA,mBACA,mBACA,mBACA,mBACA,eACA,sBACA,gBACA,wBACA,cACA,mBACA,4BACA,uBACA,uBACA,iBACA,yBACA,2BACA,0BACA,yBACA,aACA,wBACA,aACA,WACA,YACA,YACA,WACA,gBACA,iBACA,oBACA,oBACA,gBACA,cACA,WACA,UACA,qBACA,cACA,gBACA,aACA,cACA,YACA,sBACA,mBACA,aACA,UACA,gBACA,gBACA,oBACA,2BACA,cACA,yBACA,qBACA,yBACA,mBACA,gBACA,2BACA,kBACA,sBACA,uBACA,iBACA,iBACA,kBACA,wBACA,8BACA,wBACA,gBACA,mBACA,eACA,cACA,eACA,mBACA,oBACA,kBACA,gBACA,oBACA,sBACA,iBACA,eACA,eACA,aACA,cACA,yBACA,aACA,SACA,SACA,UACA,SACA,OACA,eACA,UACA,gBACA,iBACA,WACA,WACA,mBACA,MACA,qBACA,WACA,eACA,mBACA,qBACA,cACA,uBACA,iBACA,iBACA,eACA,oBACA,cACA,kBACA,aACA,eACA,aACA,gBACA,oBACA,iBACA,SACA,gBACA,yBACA,qBACA,wBACA,wBACA,+BACA,oBACA,0BACA,wBACA,uBACA,iBACA,gBACA,0BACA,0BACA,wBACA,4BACA,cACA,eACA,oBACA,wBACA,WACA,cACA,eACA,+BACA,oBACA,YACA,iBACA,WACA,oBACA,uBACA,0BACA,gBACA,mBACA,aACA,mBACA,kBACA,gBACA,cACA,SACA,qBACA,SACA,cACA,aACA,oBACA,uBACA,mBACA,YACA,gCACA,YACA,YACA,gBACA,uBACA,sBACA,yBACA,uBACA,sBACA,uBACA,uBACA,qBACA,2BACA,mBACA,yBACA,eACA,cACA,gBACA,gCACA,4BACA,yBACA,oBACA,gBACA,eACA,WACA,aACA,cACA,qBACA,eACA,kBACA,SACA,WACA,QACA,WACA,SACA,YACA,SACA,oBACA,WACA,UACA,YACA,cACA,WACA,aACA,YACA,WACA,aACA,WACA,eACA,cACA,gBACA,eACA,SACA,OACA,4BACA,gCACA,2BACA,iCACA,OACA,4BACA,aACA,wBACA,qBACA,mBACA,iBACA,WACA,kBACA,qBACA,eACA,qBACA,uBACA,oBACA,iBACA,iBACA,gBACA,sBACA,gBACA,wBACA,mBACA,+BACA,0BACA,gCACA,kBACA,wBACA,oBACA,gBACA,kBACA,2BACA,iBACA,eACA,qBACA,cACA,eACA,mBACA,0BACA,eACA,kBACA,mBACA,yBACA,gBACA,qBACA,mBACA,gBACA,0BACA,qBACA,qBACA,sBACA,0BACA,mBACA,aACA,WACA,iBACA,kBACA,gBACA,mBACA,WACA,qBACA,oBACA,oBACA,yBACA,oBACA,qBACA,gBACA,iBACA,OACA,mBACA,UACA,SACA,MACA,sBACA,oBACA,eACA,SACA,OACA,UACA,kBACA,YACA,YACA,YACA,aACA,cACA,aACA,sBACA,OACA,UACA,YACA,cACA,mBACA,oBACA,yBACA,SACA,mBACA,oBACA,SACA,OACA,eACA,gBACA,OACA,qBACA,YACA,WACA,cACA,UACA,UACA,QACA,cACA,iBACA,cACA,MACA,cACA,YACA,kBACA,qBACA,uBACA,YACA,WACA,mBACA,kBACA,oBACA,WACA,eACA,aACA,eACA,YACA,kBACA,qBACA,gBACA,qBACA,oBACA,eACA,SACA,YACA,qBACA,kBACA,mBACA,oBACA,gBACA,aACA,aACA,gBACA,WACA,aACA,OACA,WACA,mBACA,oBACA,eACA,eACA,MACA,qBACA,mBACA,gBACA,qBACA,gBACA,kBACA,cACA,sBACA,uBACA,sBACA,0BACA,mBACA,kBACA,gBACA,8BACA,4BACA,wBACA,mBACA,mBACA,yBACA,mBACA,eACA,sBACA,mBACA,WACA,mBACA,+BACA,kBACA,kBACA,0BACA,yBACA,kBACA,wBACA,mBACA,uBACA,kBACA,yCACA,yBACA,gBACA,kBACA,iBACA,uBACA,8BACA,kBACA,sBACA,sBACA,YACA,mBACA,wBACA,mBACA,2BACA,gCACA,aACA,oBACA,iBACA,SACA,eACA,gBACA,oBACA,0BACA,UACA,kBACA,kBACA,gBACA,uBACA,qBACA,wBACA,0BACA,wBACA,sBACA,aACA,0BACA,uBACA,iBACA,YACA,iBACA,eACA,iBACA,eACA,qBACA,gBACA,cACA,SACA,cACA,oBACA,eACA,cACA,gBACA,oBACA,mBACA,iBACA,eACA,gBACA,gBACA,UACA,mBACA,wBACA,iBACA,0BACA,mBACA,iBACA,eACA,mBACA,qBACA,YACA,oBACA,oBACA,eACA,eACA,cACA,qBACA,iBACA,iBACA,oBACA,gBACA,wBACA,gBACA,eACA,mBACA,qBACA,oBACA,0BACA,yBACA,yBACA,uBACA,qBACA,iBACA,mBACA,cACA,kBACA,eACA,qBACA,SACA,YACA,kBACA,aACA,YACA,kBACA,eACA,cACA,oBACA,oBACA,YACA,YACA,2BACA,iBACA,gBACA,cACA,mBACA,mBACA,mBACA,oBACA,iBACA,eACA,qBACA,2BACA,WACA,aACA,eACA,yBACA,qBACA,iBACA,iBACA,mBACA,sBACA,iBACA,UACA,aACA,iBACA,eACA,kBACA,uBACA,mBACA,kBACA,sBACA,sBACA,iBACA,eACA,oBACA,cACA,iBACA,kBACA,cACA,kBACA,mBACA,iBACA,gBACA,yBACA,sBACA,WACA,WACA,aACA,cACA,UACA,OACA,QACA,YACA,iBACA,sBACA,oBACA,UACA,aACA,aACA,SACA,qBACA,kBACA,SACA,QACA,OACA,eACA,kBACA,gBACA,WACA,YACA,eACA,iBACA,YACA,cACA,gBACA,WACA,oBACA,gBACA,aACA,gBACA,aACA,YACA,aACA,WACA,WACA,aACA,mBACA,gBACA,OACA,QACA,YACA,aACA,MACA,cACA,WACA,oBACA,WACA,QACA,kBACA,aACA,KACA,SACA,cACA,qBACA,UACA,WACA,YACA,4BACA,sBACA,aACA,0BACA,eACA,kBACA,YACA,cACA,kBACA,aACA,qBACA,SACA,qBACA,YACA,SACA,oBACA,gBACA,kBACA,sBACA,UACA,wBACA,0BACA,UACA,gBACA,eACA,0BACA,aACA,kBACA,UACA,aACA,YACA,UACA,qBACA,mBACA,kBACA,cACA,iBACA,aACA,aACA,YACA,cACA,iBACA,iBACA,mBACA,oBACA,wBACA,UACA,iBACA,cACA,eACA,oBACA,gBACA,eACA,0BACA,WACA,uBACA,4BACA,cACA,cACA,WACA,YACA,YACA,cACA,eACA,wBACA,kCACA,gBACA,oBACA,QACA,gBACA,eACA,SACA,WACA,iBACA,cACA,WACA,eACA,WACA,aACA,mBACA,sBACA,WACA,0BACA,WACA,mBACA,iBACA,kBACA,mBACA,iBACA,wBACA,4BACA,wBACA,SACA,mBACA,cACA,oBACA,mBACA,iBACA,cACA,mBACA,iBACA,mBACA,yBACA,YACA,mBACA,iBACA,YACA,QACA,qBACA,OACA,SACA,eACA,aACA,aACA,gBACA,uBACA,aACA,aACA,UACA,gBACA,SACA,YACA,WACA,UACA,OACA,aACA,OACA,SACA,aACA,WACA,cACA,QACA,UACA,UACA,eACA,WACA,SACA,WACA,eACA,YACA,iBACA,cACA,aACA,kBACA,cACA,YACA,eACA,oBACA,4BACA,4BACA,oBACA,yBACA,iCACA,iCACA,mBACA,wBACA,gBACA,YACA,iBACA,eACA,aACA,SACA,SACA,WACA,gBACA,SACA,cACA,YACA,UACA,SACA,oBACA,qBACA,kBACA,gCACA,+BACA,yCACA,iCACA,yCACA,mBACA,eACA,iBACA,qBACA,YACA,oBACA,oBACA,YACA,aACA,aACA,mBACA,iBACA,qBACA,yBACA,qBACA,WACA,OACA,cACA,oBACA,qBACA,KACA,cACA,eACA,YACA,WACA,WACA,gBACA,eACA,UACA,kBACA,eACA,wBACA,aACA,kBACA,cACA,mBACA,mBACA,kBACA,aACA,gBACA,qBACA,0BACA,6BACA,kCACA,qBACA,aACA,kBACA,gBACA,cACA,UACA,UACA,YACA,iBACA,UACA,eACA,WACA,OACA,UACA,eACA,aACA,WACA,WACA,eACA,eACA,cACA,aACA,cACA,WACA,WACA,iBACA,mBACA,OACA,eACA,YACA,aACA,SACA,iBACA,cACA,eACA,kBACA,eACA,eACA,gBACA,aACA,SACA,MACA,cACA,aACA,sBACA,SACA,YACA,gBACA,YACA,sBACA,gBACA,qBACA,oBACA,kBACA,0BACA,yBACA,sBACA,kBACA,qBACA,aACA,eACA,gBACA,cACA,oBACA,kBACA,wBACA,cACA,cACA,gBACA,cACA,YACA,iBACA,YACA,eACA,cACA,aACA,aACA,aACA,iBACA,kBACA,MACA,UACA,UACA,aACA,UACA,cACA,YACA,eACA,WACA,aACA,aACA,cACA,aACA,YACA,cACA,gBACA,eACA,cACA,iBACA,kBACA,cACA,aACA,eACA,eACA,mBACA,WACA,WACA,WACA,UACA,YACA,QACA,MACA,aACA,iBACA,gBACA,mBACA,oBACA,oBACA,aACA,cACA,oBACA,mBACA,0BACA,eACA,iBACA,MACA,eACA,qBACA,0BACA,oBACA,YACA,gBACA,YACA,SACA,OACA,iBACA,YACA,cACA,kBACA,eACA,eACA,eACA,kBACA,UACA,WACA,SACA,kBACA,eACA,cACA,OACA,kBACA,YACA,eACA,kBACA,kBACA,mBACA,6BACA,eACA,gBACA,iBACA,wBACA,cACA,mBACA,YACA,eACA,cACA,aACA,cACA,QACA,aACA,aACA,oBACA,oBACA,aACA,MACA,qBACA,eACA,iBACA,kBACA,eACA,YACA,kBACA,kBACA,iBACA,uBACA,uBACA,gBACA,cACA,mBACA,uBACA,uBACA,4BACA,mBACA,oBACA,uBACA,oBACA,mBACA,kBACA,eACA,uBACA,cACA,UACA,UACA,eACA,mBACA,KACA,aACA,WACA,mBACA,QACA,QACA,SACA,cACA,mBACA,YACA,mBACA,mBACA,qBACA,iBACA,QACA,YACA,gBACA,qBACA,SACA,SACA,sBACA,gBACA,aACA,gBACA,SACA,oBACA,aACA,gBACA,cACA,cACA,WACA,cACA,YACA,sBACA,YACA,cACA,cACA,OACA,WACA,wBACA,mBACA,mBACA,iBACA,iBACA,oBACA,iBACA,kBACA,iBACA,kBACA,qBACA,YACA,gBACA,gBACA,eACA,kBACA,kBACA,iBACA,4BACA,gBACA,qBACA,wBACA,WACA,mBACA,iBACA,cACA,mBACA,mBACA,wBACA,mBACA,sBACA,iBACA,uBACA,uBACA,WACA,iBACA,gBACA,iBACA,oBACA,kBACA,MACA,kBACA,qBACA,mBACA,qBACA,0BACA,uBACA,eACA,cACA,OACA,UACA,aACA,SACA,OACA,SACA,SACA,cACA,YACA,aACA,eACA,kBACA,eACA,SACA,gBACA,gBACA,aACA,iBACA,sBACA,uBACA,yBACA,kBACA,eACA,6BACA,mBACA,yBACA,0BACA,sBACA,yBACA,8BACA,+BACA,yBACA,wBACA,iBACA,8BACA,gCACA,2BACA,8BACA,sBACA,8BACA,gCACA,mCACA,mBACA,iBACA,uBACA,sBACA,sBACA,0BACA,+BACA,2BACA,oBACA,qBACA,iBACA,kBACA,qBACA,6BACA,gBACA,kBACA,oBACA,iBACA,aACA,yBACA,wBACA,qBACA,cACA,iBACA,uBACA,kBACA,wBACA,uBACA,iBACA,4BACA,uBACA,0BACA,kBACA,0BACA,4BACA,mBACA,uBACA,mBACA,gBACA,+BACA,aACA,eACA,8BACA,oBACA,qBACA,qBACA,qBACA,kBACA,gBACA,yBACA,SACA,YACA,iBACA,sBACA,SACA,aACA,UACA,iBACA,SACA,mBACA,kBACA,sBACA,iBACA,oBACA,eACA,aACA,UACA,cACA,aACA,kBACA,aACA,QACA,kBACA,eACA,aACA,cACA,kBACA,eACA,QACA,gBACA,YACA,YACA,eACA,YACA,eACA,YACA,oBACA,WACA,eACA,gBACA,8BACA,cACA,uBACA,aACA,UACA,gBACA,MACA,QACA,QACA,YACA,QACA,YACA,aACA,gBACA,aACA,aACA,YACA,kBACA,uBACA,0BACA,SACA,mBACA,qBACA,wBACA,qBACA,iBACA,oBACA,0BACA,eACA,YACA,YACA,iBACA,eACA,eACA,uBACA,eACA,qBACA,gBACA,oBACA,WACA,iBACA,iBACA,mBACA,gBACA,yBACA,0BACA,aACA,kBACA,aACA,MACA,mBACA,oBACA,cACA,sBACA,eACA,sBACA,mBACA,0BACA,2BACA,uBACA,oBACA,kBACA,aACA,yBACA,sBACA,iBACA,UACA,eACA,iBACA,mBACA,cACA,iBACA,kBACA,gBACA,gBACA,eACA,qBACA,uBACA,eACA,oBACA,uBACA,oBACA,cACA,aACA,kBACA,oBACA,qBACA,gBACA,wBACA,sBACA,mBACA,8BACA,iBACA,4BACA,yBACA,oBACA,iBACA,qBACA,mBACA,uBACA,2BACA,qBACA,YACA,aACA,UACA,oBACA,mBACA,iBACA,wBACA,qBACA,yBACA,SACA,eACA,cACA,iBACA,kBACA,+BACA,mCACA,gBACA,uBACA,qBACA,wBACA,kBACA,UACA,mBACA,aACA,iBACA,wBACA,eACA,cACA,iBACA,SACA,uBACA,eACA,mBACA,aACA,YACA,gBACA,iBACA,UACA,eACA,eACA,qBACA,0BACA,uBACA,aACA,mBACA,gBACA,WACA,gBACA,SACA,cACA,oBACA,yBACA,uBACA,cACA,cACA,gBACA,eACA,YACA,kBACA,sBACA,qBACA,gBACA,mBACA,mBACA,2BACA,oBACA,oBACA,aACA,gBACA,mBACA,sBACA,qBACA,wBACA,iBACA,sBACA,iBACA,sBACA,iBACA,sBACA,eACA,oBACA,oBACA,yBACA,eACA,oBACA,kBACA,uBACA,iBACA,sBACA,gBACA,qBACA,gBACA,qBACA,gBACA,qBACA,UACA,aACA,WACA,mBACA,sBACA,mBACA,iBACA,uBACA,UACA,eACA,qBACA,oBACA,0BACA,iBACA,iBACA,mBACA,yBACA,wBACA,gBACA,cACA,WACA,qBACA,oBACA,mBACA,kBACA,oBACA,oBACA,0BACA,yBACA,uBACA,gBACA,eACA,qBACA,WACA,iBACA,cACA,uBACA,qBACA,SACA,YACA,aACA,aACA,YACA,cACA,cACA,kBACA,oBACA,cACA,UACA,aACA,eACA,UACA,iBACA,iBACA,mBACA,oBACA,iBACA,UACA,6BACA,0BACA,2BACA,2BACA,sBACA,oBACA,wBACA,UACA,WACA,eACA,iBACA,aACA,YACA,eACA,aACA,mBACA,eACA,iBACA,mBACA,eACA,sBACA,gBACA,eACA,iBACA,mBACA,UACA,oBACA,iBACA,iBACA,eACA,oBACA,qBACA,gBACA,kBACA,uBACA,iBACA,qBACA,uBACA,iBACA,oBACA,iBACA,kBACA,sBACA,UACA,iBACA,iBACA,oBACA,wBACA,iBACA,aACA,iBACA,cACA,2BACA,eACA,oBACA,oBACA,iBACA,kBACA,cACA,eACA,oBACA,cACA,iBACA,oBACA,kBACA,kBACA,eACA,iBACA,qBACA,kBACA,iCACA,8BACA,gCACA,mBACA,oBACA,cACA,wBACA,4BACA,kBACA,4BACA,kBACA,WACA,uBACA,wBACA,8BACA,yBACA,4BACA,uBACA,2BACA,4BACA,0BACA,wBACA,kBACA,sBACA,oBACA,mBACA,wBACA,qBACA,kBACA,qBACA,yBACA,mBACA,UACA,aACA,eACA,aACA,uBACA,WACA,cACA,WACA,mBACA,qBACA,cACA,qBACA,UACA,UACA,aACA,UACA,yBACA,YACA,eACA,sBACA,sBACA,WACA,WACA,WACA,WACA,aACA,kBACA,iBACA,eACA,eACA,aACA,UACA,YACA,iBACA,gBACA,cACA,cACA,YACA,eACA,gBACA,OACA,WACA,YACA,cACA,oBACA,oBACA,sBACA,gBACA,mBACA,MACA,OACA,SACA,QACA,aACA,WACA,QACA,iBACA,cACA,oBACA,iBACA,iBACA,cACA,0BACA,mBACA,WACA,OACA,cACA,QACA,UACA,eACA,QACA,YACA,cACA,OACA,cACA,SACA,qBACA,OACA,gBACA,UACA,MACA,YACA,cACA,cACA,iBACA,gBACA,iBACA,cACA,cACA,kBACA,eACA,eACA,gBACA,cACA,aACA,sBACA,uBACA,wBACA,wBACA,2BACA,qBACA,sBACA,aACA,gBACA,aACA,gBACA,MACA,kBACA,UACA,mBACA,eACA,oBACA,eACA,gBACA,iBACA,kBACA,kBACA,WACA,mBACA,WACA,aACA,aACA,YACA,WACA,aACA,WACA,QACA,aACA,oBACA,WACA,YACA,mBACA,sBACA,wBACA,OACA,UACA,gBACA,KACA,OACA,iBACA,WACA,eACA,WACA,WACA,YACA,UACA,UACA,UACA,cACA,WACA,UACA,cACA,mBACA,oBACA,cACA,cACA,yBACA,sBACA,uBACA,2BACA,kBACA,oBACA,cACA,iBACA,wBACA,cACA,OACA,cACA,cACA,aACA,QACA,UACA,aACA,gBACA,UACA,WACA,SACA,WACA,WACA,cACA,eACA,YACA,iBACA,cACA,aACA,cACA,YACA,eACA,oBACA,4BACA,4BACA,oBACA,yBACA,iCACA,iCACA,mBACA,gBACA,YACA,eACA,aACA,SACA,YACA,gBACA,mBACA,SACA,YACA,UACA,OACA,WACA,SACA,aACA,cACA,UACA,kBACA,eACA,eACA,kBACA,aACA,UACA,mBACA,eACA,mBACA,kBACA,aACA,kBACA,wBACA,eACA,iBACA,YACA,UACA,YACA,wBACA,QACA,mBACA,aACA,aACA,oBACA,iBACA,iBACA,iBACA,mBACA,8BACA,yBACA,uBACA,oBACA,SACA,YACA,YACA,qBACA,aACA,YACA,kBACA,iBACA,oBACA,mBACA,eACA,yBACA,kBACA,qBACA,qBACA,2BACA,iBACA,mBACA,WACA,iBACA,qBACA,2BACA,UACA,sBACA,cACA,kBACA,eACA,8BACA,2BACA,6BACA,WACA,iBACA,WACA,qBACA,kBACA,OACA,gBACA,YACA,gBACA,eACA,iBACA,aACA,aACA,kBACA,qBACA,oBACA,eACA,QACA,yBACA,0BACA,uBACA,wBACA,oBACA,qBACA,2BACA,sBACA,yBACA,oBACA,wBACA,yBACA,uBACA,qBACA,eACA,mBACA,YACA,iBACA,sBACA,eACA,gBACA,qBACA,kBACA,yBACA,eACA,kBACA,oBACA,yBACA,cACA,kBACA,gBACA,gBACA,sBACA,UACA,cACA,eACA,oBACA,cACA,gBACA,YACA,aACA,OACA,UACA,UACA,UACA,iBACA,YACA,YACA,eACA,qBACA,iBAgCE36L,QAz9EY,CACd,SACA,WACA,aACA,cACA,cACA,kBACA,OACA,OACA,QACA,UACA,cACA,YACA,eACA,MACA,UACA,QACA,KACA,aACA,aACA,kBACA,YACA,YACA,eACA,YACA,cACA,WACA,iBACA,OACA,SA87EA/1P,SAAU,CACRg/C,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAK0lY,YAriFQ,CACfrtd,UAAW,WACXk0C,MAAO,mBAKQ,CACfl0C,UAAW,QACXk0C,MAAO,2CA+hFLglb,EACAoC,GAEFxO,QAAS,CAEP,iBACA,OACA,KACA,IAEA,OAEA,cACA,OACA,QAGN,aC/6DA5vO,EAAO59F,QA9pBP,SAAa33D,GACX,MAAMllE,EAAQklE,EAAKllE,MACb8ud,EAAe5pZ,EAAKr0C,QAAQ,KAAM,KA8blC6ic,EAAqB,CACzB,MACA,OACA,YACA,OACA,OACA,MACA,OACA,OACA,UACA,WACA,OACA,MACA,OACA,QACA,YACA,aACA,YACA,aACA,QACA,UACA,MACA,UACA,cACA,QACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,aACA,OACA,UACA,KACA,MACA,QACA,QACA,MACA,MACA,MACA,YACA,QACA,SACA,eACA,kBACA,kBACA,WACA,iBACA,QACA,OACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,aACA,MACA,OACA,OACA,aACA,cACA,YACA,kBACA,MACA,MACA,OACA,YACA,kBACA,QACA,OACA,aACA,SACA,QACA,WACA,UACA,WACA,gBA2CI1F,EAAY0F,EAEZ1b,EAAW,CArff,MACA,OACA,MACA,WACA,QACA,MACA,MACA,MACA,QACA,YACA,wBACA,KACA,aACA,OACA,aACA,KACA,OACA,SACA,gBACA,MACA,QACA,cACA,kBACA,UACA,SACA,SACA,OACA,UACA,OACA,KACA,OACA,SACA,cACA,WACA,OACA,OACA,OACA,UACA,OACA,cACA,YACA,mBACA,QACA,aACA,OACA,QACA,WACA,UACA,UACA,SACA,SACA,YACA,UACA,aACA,WACA,UACA,OACA,OACA,gBACA,MACA,OACA,QACA,YACA,aACA,SACA,QACA,OACA,YACA,UACA,kBACA,eACA,kCACA,eACA,eACA,cACA,iBACA,eACA,oBACA,eACA,eACA,mCACA,eACA,SACA,QACA,OACA,MACA,aACA,MACA,UACA,WACA,UACA,UACA,SACA,SACA,aACA,QACA,WACA,gBACA,aACA,WACA,SACA,OACA,UACA,OACA,UACA,OACA,QACA,MACA,YACA,gBACA,WACA,SACA,SACA,QACA,SACA,OACA,UACA,SACA,MACA,WACA,UACA,QACA,QACA,SACA,cACA,QACA,QACA,MACA,UACA,YACA,OACA,OACA,OACA,WACA,SACA,MACA,SACA,QACA,QACA,WACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,UACA,QACA,QACA,cACA,SACA,MACA,UACA,YACA,eACA,WACA,OACA,KACA,OACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,WACA,QACA,aACA,UACA,OACA,UACA,OACA,OACA,aACA,UACA,KACA,QACA,YACA,iBACA,MACA,QACA,QACA,QACA,eACA,kBACA,UACA,MACA,SACA,QACA,SACA,MACA,SACA,MACA,WACA,SACA,QACA,WACA,WACA,UACA,QACA,QACA,MACA,KACA,OACA,YACA,MACA,YACA,QACA,OACA,SACA,UACA,eACA,oBACA,KACA,SACA,MACA,OACA,KACA,MACA,OACA,OACA,KACA,QACA,MACA,QACA,OACA,WACA,UACA,YACA,YACA,UACA,MACA,UACA,eACA,kBACA,kBACA,SACA,UACA,WACA,iBACA,QACA,WACA,YACA,UACA,UACA,YACA,MACA,QACA,OACA,QACA,OACA,YACA,MACA,aACA,cACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,SACA,QACA,WACA,SACA,MACA,aACA,OACA,UACA,YACA,QACA,SACA,SACA,SACA,OACA,SACA,YACA,eACA,MACA,OACA,UACA,MACA,OACA,OACA,WACA,OACA,WACA,eACA,MACA,eACA,WACA,aACA,OACA,QACA,SACA,aACA,cACA,cACA,SACA,YACA,kBACA,WACA,MACA,YACA,SACA,cACA,cACA,QACA,cACA,MACA,OACA,OACA,OACA,YACA,gBACA,kBACA,KACA,WACA,YACA,kBACA,cACA,QACA,UACA,OACA,aACA,OACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YACA,UACA,UACA,aACA,OACA,WACA,QACA,eACA,SACA,OACA,SACA,UACA,OAzXA,MACA,MACA,YACA,OACA,QACA,QACA,OACA,QA6fAp1d,QAAQsqd,IACAwmB,EAAmBhqf,SAASwje,KAchC0S,EAAgB,CACpBjkd,MAAOqE,EAAM1C,OAAO,KAAM0C,EAAMspc,UAAU0kB,GAAY,SACtD7jB,UAAW,EACXnpZ,SAAU,CAAE41Z,SAAUoX,IAOxB,SAAS2F,EAAa1wd,GACpB,OAAOjD,EAAM1C,OACX,KACA0C,EAAMspc,UAAUrmc,EAAK/jC,KAAKu8e,GACjBA,EAAGpre,QAAQ,MAAO,WAE3B,KAEJ,CAEA,MAAMujf,EAAsB,CAC1Br8c,MAAO,UACP5b,MAAOg4d,EA7DM,CACb,eACA,cACA,cACA,cACA,WACA,cACA,iBACA,gBACA,cACA,gBACA,gBACA,eACA,cACA,aACA,cACA,kBA8CAxpB,UAAW,GAoBb,MAAO,CACL3se,KAAM,MACNixe,kBAAkB,EAElBpE,QAAS,WACTrpZ,SAAU,CACR8uZ,SAAU,YACV5C,QAvBJ,SAAyBjqc,GAEjB,IAFuB,WAC7B4wd,EAAU,KAAE/wB,GACb/ne,UAAAsR,OAAA,QAAAuT,IAAA7kB,UAAA,GAAAA,UAAA,GAAG,CAAC,EACH,MAAM+4f,EAAYhxB,EAElB,OADA+wB,EAAaA,GAAc,GACpB5wd,EAAK/jC,KAAK+L,GACXA,EAAK0wB,MAAM,WAAak4d,EAAWnqf,SAASuB,GACvCA,EACE6of,EAAU7of,GACZ,GAAGA,MAEHA,GAGb,CAUM8of,CAAgB/b,EAAU,CAAElV,KAAOh0d,GAAMA,EAAEzC,OAAS,IACtD4vS,QArnBa,CACf,OACA,QAGA,WAinBEr5S,KAvmBU,CACZ,SACA,SACA,OACA,UACA,OACA,YACA,OACA,OACA,MACA,WACA,UACA,QACA,MACA,UACA,WACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,OACA,YACA,UACA,UACA,aA6kBEg0e,SAjH4B,CAC9B,kBACA,eACA,kCACA,eACA,eACA,iBACA,mCACA,eACA,eACA,cACA,cACA,eACA,YACA,oBACA,mBAoGA1wb,SAAU,CACR,CACE3O,MAAO,OACP5b,MAAOg4d,EApnBY,CACvB,mBACA,eACA,gBACA,sBAknBEC,EACAhU,EAzEa,CACfroc,MAAO,WACP5b,MAAO,uBAxkBM,CACb4b,MAAO,SACPr+B,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAE,CAAEvqB,MAAO,UAID,CACxB81B,MAAO,IACPC,IAAK,IACLxL,SAAU,CAAE,CAAEvqB,MAAO,QAsoBnBupE,EAAK2lY,cACL3lY,EAAKwlY,qBACLokB,EA1Ea,CACfv3c,MAAO,WACP5b,MAAO,gDACPwuc,UAAW,IA2Ef,aC1KA1vO,EAAO59F,QAhgBP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MAoTbg0d,EAAgB,CACpB,YACA,kBACA,sBACA,OACA,gBACA,kBACA,WACA,iBACA,cACA,oBACA,wBACA,SACA,aACA,YACA,iBACA,qBACA,iBACA,cACA,UACA,QACA,mBACA,SACA,aACA,iBACA,iBACA,YACA,cACA,uBACA,WACA,oBACA,WACA,cACA,YACA,WACA,oBACA,cACA,oBACA,eACA,wBACA,oBACA,2BACA,kBACA,2BACA,eACA,iBACA,qBACA,yBACA,SACA,gBACA,mBACA,uBACA,iBACA,SACA,gBACA,UACA,cACA,kBACA,WACA,wBACA,0BACA,cACA,aACA,iBACA,YACA,UACA,YACA,UACA,SACA,UACA,oBAGI5W,EAAgBl4Y,EAAKr0C,QACzB,OACA,OACA,CACEs5a,UAAW,EACXjkb,SAAU,CACR,CACE3O,MAAO,SACP5b,MAAO,sBAMTs4d,EAAU,CACd18c,MAAO,OACPka,MAAO,aACPC,IAAK,IACLxL,SAAU,CACR,CACEvqB,MAAO,iBACP4b,MAAO,UAET2tD,EAAKulY,sBAIHypB,EAAoB,CACxB,QACA,QACA,SACA,cAGF,MAAO,CACL12f,KAAM,OACNs/B,QAAS,CAAE,aACXkkD,SAAU,CACR8uZ,SAAU5qY,EAAK2kY,SACfnse,MAlaW,CACb,YACA,QACA,OACA,aACA,aACA,cACA,aA4ZEkF,KA9YU,CACZ,QACA,QACA,UACA,MACA,OACA,SACA,iBACA,UACA,mBACA,UACA,cACA,aACA,qBACA,SACA,iBACA,0BACA,yBACA,iBACA,gBACA,QA2XEsqe,QA1Ze,CACjB,MACA,KACA,KACA,OACA,QACA,QACA,WACA,UAmZE0J,SAjXc,CAChB,MACA,OACA,QACA,WACA,iBACA,wBACA,eACA,aACA,aACA,OACA,QACA,OACA,QACA,QACA,oBACA,qBACA,kBACA,QACA,OACA,OACA,WACA,qBACA,SACA,MACA,OACA,sBACA,mBACA,0BACA,4BACA,4BACA,OACA,MACA,OACA,eACA,YACA,cACA,gBACA,gBACA,gBACA,0BACA,sBACA,iBACA,MACA,UACA,cACA,cACA,WACA,qBACA,oBACA,UACA,OACA,WACA,cACA,WACA,iBACA,qBACA,cACA,kBACA,eACA,mBACA,MACA,OACA,MACA,OACA,QACA,oBACA,OACA,MACA,OACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,sBACA,WACA,WACA,OACA,wBACA,eACA,QACA,kBACA,WACA,eACA,gBACA,sBACA,oBACA,qBACA,WACA,MACA,cACA,WACA,UACA,cACA,UACA,WACA,eACA,YACA,UACA,WACA,aACA,SACA,SACA,aACA,cACA,QACA,UACA,QACA,SACA,kBACA,sBACA,uBACA,mBACA,UACA,YACA,MACA,QACA,YACA,kBACA,QACA,YACA,kBACA,eACA,wBACA,gBACA,qBACA,QACA,UACA,iCACA,uBACA,cACA,cACA,oBACA,WACA,aACA,sBACA,eACA,MACA,mBACA,uBACA,oBACA,wBACA,OACA,MACA,6BACA,8BACA,oCACA,oBACA,OACA,QACA,QACA,eACA,eACA,YACA,gBACA,sBACA,UACA,cACA,WACA,eACA,WACA,eACA,gBACA,oBACA,qBACA,iBACA,aACA,iBACA,kBACA,cACA,UACA,MACA,aACA,QACA,oBACA,MACA,QACA,OACA,OACA,KACA,OACA,OACA,UACA,YACA,YACA,YACA,iBACA,gBACA,WACA,OACA,aACA,SACA,YACA,aACA,iBACA,aACA,UACA,mBACA,QACA,MACA,OACA,mBACA,gBACA,4BACA,KACA,UACA,MACA,kBACA,OACA,OACA,UACA,WACA,YACA,mBACA,oBACA,OACA,SACA,mBACA,OACA,UACA,UACA,MACA,MACA,QACA,QACA,4BACA,OACA,MACA,OACA,SACA,aACA,SACA,cACA,cACA,aACA,SACA,YACA,gBACA,YACA,QACA,sBACA,kBACA,WACA,QACA,kBACA,WACA,cACA,kBACA,qBAwHA1wb,SAAU,CACRg/C,EAAKulY,oBACLwpB,EACA/uZ,EAAKylY,kBACLyS,EACA,CACE7lc,MAAO,WACP5b,MAAO,kCACPwuc,UAAW,GAEb,CACExuc,MAAOqE,EAAM1C,OAAO,UAAW0C,EAAMspc,UAAU4qB,GAAoB,QACnElza,SAAUkza,GAEZ,CACE38c,MAAO,UACP5b,MAAO,sBAET,CAEEA,MAAO,CACL,OACAqE,EAAMspc,UAAU0qB,GAChB,WACA,iBAEFz8c,MAAO,CACL,EAAG,WACH,EAAG,YAGP,CAEEA,MAAO,WACPypC,SAAUgza,EACVvic,MAAOzxB,EAAM1C,OAAO,MAAO0C,EAAMspc,UAAU0qB,GAAgB,8DAE7D,CAEEvic,MAAO,CACL,IACA,MACAzxB,EAAM1C,OAAO0C,EAAMspc,UAAU0qB,GAAgB,oBAE/Cz8c,MAAO,CAAE,EAAG,aAEd,CAEEka,MAAO,CACL,IACA,wBACA,YAAczxB,EAAMspc,UAAU0qB,GAAiB,QAEjDz8c,MAAO,CAAE,EAAG,mBAEd,CAEEA,MAAO,iBACPka,MAAO,gEAET,CACEla,MAAO,SACP5b,MAAOqE,EAAM1C,OAQX,8DAGA,sCAEF6sc,UAAW,GAEb,CACE5yb,MAAO,SACPka,MAAO,IACPC,IAAK,MAIb,aCldA+oM,EAAO59F,QAvCP,SAAe33D,GACb,MAAO,CACL1nG,KAAM,QACNs/B,QAAS,CACP,KACA,OAEF2xc,kBAAkB,EAClBztZ,SAAU,4/cACV96B,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,mBAET,CACEl0C,UAAW,WACXk0C,MAAO,wBACP04a,UAAW,GAEb,CACE5sd,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,kBACT,CAAEA,MAAO,iBAIb,CACEl0C,UAAW,WACXrE,SAAU,CAAE,CAAEu4C,MAAO,q5CAGvByzC,EAAKr0C,QAAQ,iBAAiB,GAC9Bq0C,EAAKulY,oBACLvlY,EAAKwlY,sBAGX,aCgBAjwO,EAAO59F,QA1DP,SAAgB33D,GAqBd,MAAO,CACL1nG,KAAM,eACNs/B,QAAS,CACP,MACA,OACA,OAEF2xc,kBAAkB,EAClBztZ,SA3BsB,CACtB8uZ,SAFsB,oBAGtB5C,QAAS,CACP,SACA,SACA,SAuBFhnb,SAAU,CApBS,CACnB3oC,UAAW,OACXk0C,MAAO,gBACP04a,UAAW,IAEQ,CACnB5sd,UAAW,OACXk0C,MAAO,oBACP04a,UAAW,IAeTjlY,EAAKulY,oBACLvlY,EAAKwlY,qBACLxlY,EAAKr0C,QAAQ,WAAY,QACzBq0C,EAAK2lY,cACL3lY,EAAK6/C,QAAQ7/C,EAAKklY,iBAAkB,CAAEC,QAAS,OAC/CnlY,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAED,QAAS,OAChD,CACE9sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEP,CACEn0C,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,OACL24a,QAAS,UAMrB,aChEA,MAyKM0S,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACAr0c,OAAOisC,UAGHqoa,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACAt0c,OAAOisC,UAGHsoa,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACAv0c,OAAOisC,UAEH2sX,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA54Z,OAAOisC,UA4LT6lL,EAAO59F,QAhLP,SAAgB33D,GACd,MAAMqsD,EAvzBOrsD,KACN,CACLi4Y,UAAW,CACT5lc,MAAO,OACPka,MAAO,cAET2rb,cAAel4Y,EAAKwlY,qBACpB2S,SAAU,CACR9lc,MAAO,SACPka,MAAO,mDAETwnb,kBAAmB,CACjB17d,UAAW,WACXk0C,MAAO,gBAET6rb,wBAAyB,CACvB/lc,MAAO,gBACPka,MAAO,KACPC,IAAK,KACL24a,QAAS,IACTnkb,SAAU,CACRg/C,EAAKklY,iBACLllY,EAAKolY,oBAGTiT,gBAAiB,CACfhmc,MAAO,SACPka,MAAOyzC,EAAK6kY,UAAL7kY,kGASPilY,UAAW,GAEbqT,aAAc,CACZjge,UAAW,OACXk0C,MAAO,+BA+wBG05a,CAAMjmY,GAGd00Y,EAAW,CACfr8d,UAAW,WACXk0C,MAAO,MAAQyzC,EAAK2kY,UAoBhBsqB,EAAoB,oBAiB1B,MAAO,CACL32f,KAAM,SACNs/B,QAAS,CAAE,QACX2xc,kBAAkB,EAClBztZ,SAAU,iBACVqpZ,QAAS,IAnBK,CACd,MACA,iBACA,cACA,cACA,cACA,IACA,OACA,SACA,SACA,MACA,KAQuBx5d,KAAK,KAAO,IACnCq1C,SAAU,CAGRg/C,EAAKolY,kBACLplY,EAAKklY,iBAGLllY,EAAKulY,oBACLvlY,EAAKwlY,qBAGLn5U,EAAM8rV,SAGN,CACE5rb,MAAO,4BAA8B0ic,EACrC52e,UAAW,kBAIb,CACEk0C,MAAO,0BAA4B0ic,EACnC52e,UAAW,eAIb,CACEk0C,MAAO,OAASsrb,EAAKlse,KAAK,KAAO,IAAMsjf,EACvC52e,UAAW,gBAIb,CACEA,UAAW,kBACXk0C,MAAO,OAASwrb,EAAepse,KAAK,KAAO,IAAMsjf,GAEnD,CACE52e,UAAW,kBACXk0C,MAAO,WAAayrb,EAAgBrse,KAAK,KAAO,IAAMsjf,GAGxD5iW,EAAM+rV,wBAEN,CACE//d,UAAW,UACXk0C,MAAO,SACP86a,OAAQ,CACN76a,IAAK,QACLsvB,SAAU,CACR8uZ,SAAU,UACV5C,QAhGW,kBAiGXvgb,UAAWqwb,EAAense,KAAK,MAEjCq1C,SAAU,CAAEqrG,EAAMgsV,mBAKtB,CACEhge,UAAW,UACXk0C,MAAO,4BApGO,CAClB,UACA,MACA,QACA,SACA,YACA,MACA,SACA,UACA,YACA,QACA,QACA,OACA,OACA,SAsFsD5gD,KAAK,KAAO,SAIhE+oe,EAGAroV,EAAMgsV,gBAIN,CACEhge,UAAW,WACXk0C,MAAO,kCACP44a,QAAS,QACT6D,aAAa,EACbhob,SAAU,CACR,CACE3oC,UAAW,QACXk0C,MAAO,6BAET,CACEl0C,UAAW,SACXk0C,MAAO,KACPC,IAAK,KACLxL,SAAU,CACRqrG,EAAM8rV,SACNzD,EACA10Y,EAAKklY,iBACL74U,EAAMgsV,gBACNr4Y,EAAKolY,sBAOb/4U,EAAMisV,aAKN,CACEjge,UAAW,YACXk0C,MAAO,OAAS8vY,EAAW1wb,KAAK,KAAO,OACvC07d,OAAQ,CAEN76a,IAAK,MACLxL,SAAU,CACRqrG,EAAM8rV,SACNzD,EACA10Y,EAAKklY,iBACLllY,EAAKolY,kBACL/4U,EAAMgsV,gBACNr4Y,EAAKwlY,qBACLn5U,EAAM4rV,UACN5rV,EAAM0nV,mBAER5O,QAAS,KACTF,UAAW,IAGf54U,EAAM0nV,mBAGZ,aCz7BAx+O,EAAO59F,QApCP,SAAiB33D,GAwBf,MAAO,CACL1nG,KAAM,UACNixe,kBAAkB,EAClBvob,SAAU,CA1BI,CACd3oC,UAAW,SACXk0C,MAAO,oBACPC,IAAK,SAEM,CACXn0C,UAAW,SACXk0C,MAAO,wDAEa,CACpBl0C,UAAW,SACXk0C,MAAO,eAEQ,CACfl0C,UAAW,UACX4sd,UAAW,GACXjxd,SAAU,CACR,CAAEu4C,MAAO,wFACT,CAAEA,MAAO,mCACT,CAAEA,MAAO,UACT,CAAEA,MAAO,aAaf,YChCA,SAAS5wB,EAAOy8H,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGz8H,OAHM,IAIlB,CAMA,SAASuoc,EAAU9rU,GACjB,OAAOhgI,EAAO,MAAOggI,EAAI,IAC3B,CAMA,SAAShgI,IAAgB,QAAAggC,EAAAviE,UAAAsR,OAANkxD,EAAI,IAAA39D,MAAA09D,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAziE,UAAAyiE,GAErB,OADeD,EAAKr+D,KAAK4P,GAAM+xB,EAAO/xB,KAAI+B,KAAK,GAEjD,CA0BA,SAASy4d,IAAgB,QAAA79Z,EAAA1wE,UAAAsR,OAANkxD,EAAI,IAAA39D,MAAA6rE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJnO,EAAImO,GAAA3wE,UAAA2wE,GAErB,MAAMnJ,EAtBR,SAA8BhF,GAC5B,MAAMgF,EAAOhF,EAAKA,EAAKlxD,OAAS,GAEhC,MAAoB,kBAATk2D,GAAqBA,EAAKn0B,cAAgBtmB,QACnDy1C,EAAKthB,OAAOshB,EAAKlxD,OAAS,EAAG,GACtBk2D,GAEA,CAAC,CAEZ,CAaegna,CAAqBhsa,GAIlC,MAHe,KACVgF,EAAKnb,QAAU,GAAK,MACrBmW,EAAKr+D,KAAK4P,GAAM+xB,EAAO/xB,KAAI+B,KAAK,KAAO,GAE7C,CAEA,MAAMujf,EAAiBlnB,GAAW5vc,EAChC,KACA4vc,EACA,MAAMttc,KAAKstc,GAAW,KAAO,MAIzBmnB,EAAc,CAClB,WACA,QACAn1f,IAAIk1f,GAGAE,EAAsB,CAC1B,OACA,QACAp1f,IAAIk1f,GAGAG,EAAe,CACnB,MACA,QAIIvza,EAAW,CAIf,QACA,MACA,iBACA,QACA,QACA,OACA,MACA,KACA,YACA,QACA,OACA,QACA,QACA,UACA,YACA,WACA,cACA,OACA,UACA,QACA,SACA,SACA,cACA,KACA,UACA,OACA,OACA,OACA,YACA,cACA,qBACA,cACA,QACA,MACA,OACA,MACA,QACA,KACA,SACA,WACA,QACA,SACA,QACA,QACA,kBACA,WACA,KACA,KACA,WACA,cACA,OACA,MACA,QACA,WACA,cACA,cACA,OACA,WACA,WACA,WACA,UACA,UACA,kBACA,SACA,iBACA,UACA,WACA,gBACA,SACA,SACA,WACA,WACA,SACA,MACA,OACA,SACA,SACA,YACA,QACA,SACA,SACA,QACA,QACA,OACA,MACA,YACA,kBACA,oBACA,UACA,MACA,OACA,QACA,QACA,WAOIwza,EAAW,CACf,QACA,MACA,QAIIC,EAA0B,CAC9B,aACA,gBACA,aACA,OACA,YACA,OACA,SAKIC,EAAqB,CACzB,gBACA,UACA,aACA,QACA,UACA,SACA,SACA,QACA,UACA,eACA,YACA,YACA,MACA,gBACA,WACA,QACA,YACA,kBACA,YAIIC,EAAW,CACf,MACA,MACA,MACA,SACA,mBACA,aACA,OACA,aACA,YACA,4BACA,MACA,MACA,cACA,eACA,eACA,eACA,sBACA,QACA,WACA,gBACA,WACA,SACA,OACA,oCACA,YACA,OACA,gBACA,iBACA,uBACA,2BACA,oBACA,aACA,0BACA,OAIIC,EAAetrB,EACnB,oBACA,kBACA,iBACA,iBACA,iBACA,mCACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,YAIIurB,EAAoBvrB,E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sb,EACAsqe,GAGN,YC/4BAplP,EAAO59F,QAnDP,SAAsB33D,GAuCpB,MAAO,CACL1nG,KAAM,gBACN0oD,SAAU,CAxCC,CACX3oC,UAAW,UACXk0C,MAAO,WACPC,IAAK,KACLxL,SAAU,CACR,CAAEuL,MAAO,UACT,CACEA,MAAO,KACPC,IAAK,KACLxL,SAAU,CACR,CAAEuL,MAAO,UACT,UAIN04a,UAAW,IAGI,CACf5sd,UAAW,UACXk0C,MAAO,yBAGQ,CACfl0C,UAAW,WACXk0C,MAAO,oBAQe,CACtBl0C,UAAW,SACXk0C,MAAO,iBAPuB,CAC9Bl0C,UAAW,SACXk0C,MAAO,sBAkBX,aCVAgpM,EAAO59F,QAtCP,SAAa33D,GACX,MAAO,CACL1nG,KAAM,yBACNixe,kBAAkB,EAClBvob,SAAU,CACRg/C,EAAKylY,kBAEL,CACEptd,UAAW,OACXrE,SAAU,CACR,CAAEu4C,MAAO,wBACT,CAAEA,MAAO,qBAIb,CACEA,MAAO,OACPC,IAAK,aACL4gb,YAAa,OACbnI,UAAW,GAGb,CACE5sd,UAAW,SACXk0C,MAAO,YAGT,CACEl0C,UAAW,SACXrE,SAAU,CACR,CAAEu4C,MAAO,OACT,CAAEA,MAAO,cAKnB,aCkJAgpM,EAAO59F,QAtLP,SAAa33D,GACX,MAAMllE,EAAQklE,EAAKllE,MACb02d,EAAY,yBAEZxe,EAAS,CACb36d,UAAW,SACXrE,SAAU,CACRgsF,EAAK4lY,mBACL5lY,EAAK2lY,gBA6HT,MAAO,CACLrte,KAAM,MACNs/B,QAAS,CAAE,MACXkkD,SA5He,CACf,QACA,SACA,QACA,QACA,cACA,cACA,YACA,eACA,mBACA,eACA,aACA,UACA,SACA,QACA,QACA,KACA,OACA,QACA,QACA,SACA,WACA,MACA,OACA,WACA,MACA,QACA,OACA,OACA,OACA,OACA,WACA,aACA,QACA,OACA,YACA,WACA,QACA,MACA,UACA,SACA,OACA,OACA,SACA,UACA,OACA,KACA,OACA,OACA,SACA,OACA,aACA,aACA,YACA,aACA,OACA,aACA,OACA,YACA,aACA,cACA,cACA,aACA,UACA,WACA,WACA,SACA,SACA,SACA,YACA,OACA,UACA,SACA,MACA,cACA,cACA,WACA,kBACA,OACA,OACA,MACA,OACA,UACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,OACA,MACA,SACA,SACA,QACA,SACA,QACA,SACA,gBACA,kBACA,sBACA,0BACA,qBACA,sBACA,UACA,UACA,OACA,OACA,KACA,QACA,UACA,SACA,QACA,SACA,UACA,QACA,WACA,QACA,SAOA96B,SAAU,CACRg/C,EAAKr0C,QAAQ,YAAa,KAC1Bq0C,EAAKr0C,QAAQ,YAAa,KAC1B,CACEm7a,cAAe,OACft6a,IAAK,QACL08a,YAAY,EACZlob,SAAU,CACR,CACE3oC,UAAW,QACXk0C,MAAO,kDACPC,IAAK,eACLu+a,gBAAgB,EAChB7B,YAAY,KAIlB,CACE7wd,UAAW,WACXrE,SAAU,CACR,CAAEu4C,MAAOzxB,EAAM1C,OACb,KACA0C,EAAMojc,SAAS,MACfszB,EACA,MACAA,EACA,OAEF,CACEjlc,MAAO,2CACPC,IAAK,MACLxL,SAAU,CAAEgyb,MAIlB,CACE36d,UAAW,SACX2oC,SAAU,CAAEg/C,EAAKglY,kBACjBhxd,SAAU,CAAEgsF,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAED,QAAS,SAE9D6N,GAGN,aChHAz9O,EAAO59F,QApEP,SAAgB33D,GACd,MAAMm1Y,EAAQ,CACZ,OACA,OACA,MACA,MACA,MACA,SACA,SACA,UAkBF,MAAO,CACL78e,KAAM,SACNwjF,SAAU,CACRksZ,QAnBa,CACf,YACA,QACA,UACA,SACA,OACA,UACA,YACA,OACA,SACA,MACA,OACA,MACA,WACA,YAMEtqe,KAAMy3e,EACNp+L,QAAS,cAEX/1P,SAAU,CACRg/C,EAAKolY,kBACLplY,EAAK0lY,YACL1lY,EAAKulY,oBACLvlY,EAAKwlY,qBACL,CACEntd,UAAW,QACXyud,cAAe,gCACft6a,IAAK,KACL24a,QAAS,KACTnkb,SAAU,CACRg/C,EAAK6/C,QAAQ7/C,EAAK8lY,WAAY,CAE5BuB,OAAQ,CACN0D,gBAAgB,EAChB7B,YAAY,OAIpB,CACE38a,MAAO,yBACPuvB,SAAU,CAAEp+E,KAAM,IACby3e,EACH,MACA,OACA,QAEF3ob,IAAK,IACLxL,SAAU,CAAE,UAIpB,aCiGAu0M,EAAO59F,QApKP,SAAY33D,GACV,MAAMyxZ,EAAO,CACXp5e,UAAW,SACXk0C,MAAO,cACP04a,UAAW,GAEPysB,EAAU,CACdr5e,UAAW,SACXk0C,MAAO,YA4GT,MAAO,CACLj0D,KAAM,KACNwjF,SAAU,CACRksZ,QAtFa,CACf,QACA,MACA,SACA,MACA,QACA,QACA,OACA,MACA,MACA,YACA,SACA,KACA,KACA,MACA,SACA,OACA,MACA,SACA,UACA,aACA,OACA,MACA,KACA,QACA,MACA,KACA,MACA,mBACA,OACA,MACA,UACA,SACA,SACA,KACA,WACA,QACA,OACA,MACA,QACA,MACA,SACA,OACA,OACA,KACA,KACA,KACA,cACA,cACA,KACA,KACA,aACA,YACA,SACA,OACA,IACA,IACA,IACA,IACA,IACA,IACA,SACA,SACA,UACA,UACA,OACA,OACA,KACA,OAmBEjxL,QAjBa,CACf,KACA,MACA,YACA,OACA,OACA,SACA,UACA,QACA,OACA,UASA/1P,SAAU,CAhHG,CACb3oC,UAAW,WACXk0C,MAAO,2HAEPC,IAAK,MACLxL,SAAU,CACR,OACAywc,EACAC,IAGS,CACXr5e,UAAW,WACXk0C,MAAO,6CACPC,IAAK,MACLxL,SAAU,CACR,OACAywc,EACAzxZ,EAAKolY,kBACLssB,IAgGA,CACEr5e,UAAW,UACXk0C,MAAO,8BAET,CAEEl0C,UAAW,UACXk0C,MAAO,iCAET,CAGEl0C,UAAW,UACXk0C,MAAO,yDAET,CAEEl0C,UAAW,SACXk0C,MAAO,6DACP04a,UAAW,GAEbjlY,EAAKr0C,QAAQ,KAAM,QACnBq0C,EAAKr0C,QAAQ,IAAK,QAClBq0C,EAAKr0C,QAAQ,QAAS,KACtBq0C,EAAKolY,kBACL,CACE/sd,UAAW,SACXk0C,MAAO,IACPC,IAAK,KAEPwzC,EAAK2lY,cACL,CACEttd,UAAW,WACXk0C,MAAO,qBAIf,aC0FAgpM,EAAO59F,QA1PP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MACb62d,EAAiB,CACrB,eACA,UACA,gBACA,YACA,QACA,WACA,eACA,oBACA,aACA,QACA,OACA,OACA,aACA,SACA,WACA,cACA,YACA,aACA,YACA,WACA,aACA,cACA,eACA,UACA,aACA,cACA,aACA,MACA,MACA,SACA,SACA,SACA,QACA,gBACA,SACA,aACA,SACA,uBACA,SA2EF,IAAIC,EAAY,CACd,QACA,aACA,QACA,QACA,aACA,KACA,QACA,UACA,SACA,QACA,MACA,aACA,OACA,KACA,SACA,UACA,QACA,UACA,MACA,YACA,QACA,uBACA,cACA,MACA,WACA,QAGFA,EAAYA,EAAUx5d,OAAOw5d,EAAU53f,KAAIkyC,GAAK,MAAMA,OAEtD,MAAMymc,EAAS,CACbtgc,MAAO,SACPr+B,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,KAEP,CACED,MAAO,IACPC,IAAK,OAKLwmb,EAAS,CACb3gc,MAAO,SACP5b,MAAO,OAGHm8c,EAAS,CACbrmb,MAAO,KACPC,IAAK,KACL64a,cAAc,EACd6D,YAAY,EACZlob,SAAU,CACR2xb,EACAK,IAKE8V,EAAY,CAChBhiB,cAAe6qB,EAAehmf,KAAK,KACnCmwE,SAAU,CAAExjF,KAAMq5f,GAClB1sB,UAAW,EACXjkb,SAAU,CAAE4xb,IAGR6G,EAAS,CACbhjd,MAAO,qBACPoyc,WAAY,cACZ5D,UAAW,EACXjkb,SAAU,CACR,CACEvqB,MAAO,eACPqlD,SApJU,CACd,MACA,aACA,cACA,QACA,aACA,SACA,mBACA,eACA,gBACA,kBACA,WACA,OACA,cACA,UACA,SACA,eACA,YACA,gBACA,SACA,QACA,SACA,cACA,sBACA,kBACA,cACA,kBACA,cACA,wBACA,gBACA,cACA,mBACA,WACA,eACA,aACA,OACA,cACA,OACA,gBACA,OACA,SACA,cACA,QACA,MACA,WACA,mBACA,QACA,QACA,gBACA,MACA,SACA,UACA,UACA,QACA,QACA,OACA,OACA,YACA,QACA,YACA,gBACA,QACA,QACA,cACA,OACA,MACA,QACA,aACA,YACA,kBAoFI+1a,EAAWA,CAACC,EAAQnpf,KAAoB,IAAlB,UAAEs8d,GAAWt8d,EACvC,MAAO,CACLkge,WAAY,CACV,EAAG,eACH,EAAG,QAEL5D,UAAWA,GAAa,EACxBnB,SAAU,eACVv3a,MAAO,CACL,MACA,MACAzxB,EAAMspc,UAAU0tB,IAElBtlc,IAAK,MACLsvB,SAAU,KACV96B,SAAU,CACRy4b,EACAqP,EACAnW,EACAK,GAEH,EAIG+e,EAAMF,EAASD,EAAW,CAAE3sB,UAAW,IACvC+sB,EAAaH,EAAS,CAFN,WAEyB,CAAE5sB,UAAW,IAE5D,MAAO,CACL3se,KAAM,OACNs/B,QAAS,CAAE,YACX2xc,kBAAkB,EAClB6D,YAAa,MACbpsb,SAAU,CACRg/C,EAAKr0C,QAAQ,MAAO,OACpBomc,EACAC,EACA,CACE35e,UAAW,oBACXk0C,MAAO,OACPC,IAAK,OACLxL,SAAU,CACR,OACAy4b,EACAqP,EACAnW,EACAK,KAKV,aCjQA,MAAMrO,EAAW,2BACXmO,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEIsD,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAIIjB,EAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGIuL,EAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC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Ce,CACjBtzC,UAAW,OAEXk0C,MAAO,2EACPC,IAAK,IACLsvB,SAAU,CAAEksZ,QACR,sEACJhnb,SAAU,CAAE2K,KA4ChB,aCnIA4pM,EAAO59F,QAdP,SAAsB33D,GACpB,MAAO,CACL1nG,KAAM,mBACN80e,YAAa,MACbpsb,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,KACL4gb,YAAa,aAIrB,YCsMA73O,EAAO59F,QAjNP,SAAkB33D,GAChB,MAAMllE,EAAQklE,EAAKllE,MACbi4d,EAAqB,CACzB,QACA,QACA,UACA,WACA,SACA,YACA,YACA,MACA,SACA,SACA,cACA,MACA,UACA,YACA,MACA,MACA,SACA,UACA,QACA,QACA,iBACA,cACA,OACA,YACA,SACA,OACA,QACA,MACA,OACA,aACA,OACA,MACA,MACA,UACA,QACA,aACA,MACA,QACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,WACA,iBACA,UACA,SACA,QACA,MACA,QACA,WACA,MACA,OACA,MACA,MACA,SACA,SACA,QACA,YACA,MACA,QACA,QACA,QACA,OACA,OACA,MACA,WACA,OACA,UACA,MACA,eACA,cACA,MACA,eACA,MACA,QACA,OACA,MACA,WACA,QACA,MACA,OACA,UACA,OACA,OACA,gBACA,MACA,WACA,OACA,OACA,OACA,SACA,OACA,OAwFF,MAAO,CACLz6f,KAAM,WACNs/B,QAAS,CAAE,OACX2xc,kBAAkB,EAClBztZ,SAAU,CACRksZ,QAjEa,CACf,OACA,QACA,QACA,MACA,KACA,OACA,QACA,UACA,gBACA,OACA,MACA,OACA,OACA,WACA,KACA,OACA,OACA,KACA,QACA,SACA,WACA,MACA,UACA,WACA,MACA,MACA,SACA,YACA,QACA,MACA,SACA,OACA,MACA,OACA,MACA,QACA,OACA,OACA,MACA,KACA,SACA,KACA,KACA,MACA,MACA,MACA,mBACA,kBACA,UACA,WACA,KACA,KACA,QACA,QACA,OACA,SACA,QASE0J,SA5FqB,CACvB,SACA,WACA,UAEA,eACA,2BACA,2BACA,4BAqFE36L,QA3Ea,CACf,OACA,QACA,OACA,UACA,UAwEAouL,QAAS,KACTnkb,SAAU,CArFU,CACpBuL,MAAOzxB,EAAM1C,OAAO0C,EAAMspc,UAAU2uB,GAAqB,WAEzD9tB,UAAW,EACXnpZ,SAAU,CAAE41Z,SAAUqhB,IAmFpB/yZ,EAAK6/C,QAAQ7/C,EAAKolY,kBAAmB,CAAEpkb,SAAU,CAAE,CAAEuL,MAAO,SAC5DyzC,EAAKr0C,QACH,IACA,IACA,CAAEs5a,UAAW,IAEfjlY,EAAK2lY,eAGX,aC4UApwO,EAAO59F,QA5hBP,SAAiB33D,GACf,MAAMllE,EAAQklE,EAAKllE,MA2cbk4d,EAAa,CACjB,iBACA,aACA,kBACA,qBACA,0BACA,SACA,yBACA,kBACA,kBACA,kBACA,OACA,QACA,eACA,gBACA,QACA,QACA,SACA,UACA,OACA,sBACA,SACA,WACA,YACA,oBACA,QACA,eAGF,MAAO,CACL16f,KAAM,UACNs/B,QAAS,CACP,IACA,KACA,OAEF2xc,kBAAkB,EAClBztZ,SA/ee,CACf8uZ,SAAU,qBACV5C,QAAS,CACP,YACA,QACA,SACA,cACA,YACA,eACA,MACA,SACA,SACA,SACA,YACA,SACA,QACA,OACA,OACA,SACA,MACA,QACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,OACA,UACA,UACA,QACA,WACA,OACA,SACA,QACA,aACA,UACA,WACA,QACA,aACA,aACA,QACA,WACA,UACA,WACA,SACA,UACA,OACA,KACA,OACA,OACA,MACA,UACA,aACA,WACA,cACA,YACA,cACA,cACA,WACA,eACA,YACA,aACA,eACA,aACA,cACA,aACA,cACA,WACA,UACA,OACA,QACA,aACA,SACA,SACA,UACA,SACA,QACA,cACA,MACA,QACA,UACA,UACA,OACA,WACA,WACA,aACA,SACA,SACA,SACA,SACA,KACA,MACA,SACA,cACA,eACA,aACA,UACA,SACA,SACA,UACA,UACA,QACA,QACA,SACA,WACA,MACA,UACA,eACA,YACA,YACA,OACA,WACA,YACA,QACA,MACA,UACA,UACA,QACA,aACA,QACA,UACA,cACA,UACA,SACA,UACA,SACA,OACA,UACA,UACA,MACA,WACA,OACA,MACA,kBACA,MACA,SACA,SACA,KACA,SACA,UACA,SACA,YACA,OACA,UACA,YACA,WACA,UACA,WACA,YACA,QACA,QACA,WACA,SACA,sBACA,qBACA,OACA,OACA,QACA,WACA,eACA,QACA,OACA,WACA,MACA,MACA,YACA,UACA,SACA,WACA,SACA,QACA,QACA,QACA,WACA,WACA,WACA,eACA,aACA,UACA,eACA,WACA,WACA,WACA,YACA,gBACA,SACA,QACA,OACA,QACA,UACA,YACA,SACA,SACA,SACA,UACA,UACA,SACA,QACA,UACA,UACA,iBACA,iBACA,QACA,SACA,OACA,OACA,aACA,OACA,gBACA,WACA,OACA,UACA,UACA,MACA,OACA,OACA,SACA,QACA,SACA,OACA,UACA,QACA,SACA,UACA,WACA,QACA,aACA,UACA,MACA,QACA,MACA,WACA,UACA,OACA,OACA,aACA,OACA,OACA,QACA,QACA,QACA,WACA,OACA,OACA,SACA,MACA,OACA,OAEFjxL,QAAS,CAAE,QACX26L,SAAU,CACR,UACA,QACA,QACA,SACA,SACA,WACA,QACA,YACA,QACA,kBACA,cACA,mBACA,QACA,UACA,QACA,QACA,SACA,cACA,cACA,mBACA,QACA,YACA,YACA,cACA,gBACA,gBACA,sBACA,aACA,iBACA,iBACA,iBACA,oBACA,eACA,WACA,QACA,WACA,aACA,aACA,gBACA,eACA,eACA,oBACA,gBACA,iBACA,wBACA,QACA,UACA,QACA,aACA,eACA,eACA,gBACA,iBACA,WACA,oBACA,kBACA,gBACA,oBACA,YACA,uBACA,QACA,OACA,aACA,SACA,MACA,SACA,OACA,QACA,OACA,SACA,QACA,OACA,OACA,OACA,aACA,UACA,aACA,SACA,WACA,cACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,QACA,SACA,SACA,SACA,aACA,WACA,SACA,QACA,UACA,mBACA,eACA,oBACA,eACA,gBACA,UACA,gBACA,gBACA,YACA,UACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,SACA,UACA,YACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,UACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,SACA,YACA,YACA,aACA,kBACA,YACA,UACA,aACA,aACA,eACA,kBACA,UACA,UACA,UACA,WACA,YACA,YACA,YACA,aACA,YACA,WACA,WACA,aACA,gBACA,gBACA,kBACA,UACA,YACA,aACA,aACA,aACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,QACA,SACA,UACA,WACA,WACA,WACA,YACA,aACA,aACA,aACA,WACA,YACA,SACA,UACA,SACA,UACA,UACA,SACA,YA6CF1wb,SAAU,CACRg/C,EAAKwlY,qBACLxlY,EAAKulY,oBACLvlY,EAAKolY,kBACL,CACE/yb,MAAO,SACP2O,SAAU,CAAEg/C,EAAKglY,kBACjBhxd,SAAU,CACR,CAAEu4C,MAAO,2CACT,CAAEA,MAAO,wCACT,CACEA,MAAO,iBACP04a,UAAW,KAKjB,CACE5yb,MAAO,WACPr+B,SAAU,CACR,CAAEu4C,MAAO,0BACT,CACEA,MAAO,UACP04a,UAAW,KAIjB,CACE5yb,MAAO,oBACP5b,MAAOqE,EAAM1C,OAAO,IAAK0C,EAAMspc,OAtEnC,WACA,cAuEE,CACE/xb,MAAO,OACPka,MAAOzxB,EAAM1C,OAAO,IAAK0C,EAAMspc,UAAU4uB,IACzCxmc,IAAK,cACL28a,WAAW,EACXrtZ,SAAUk3a,IAIlB,aC5UAz9P,EAAO59F,QA9MP,SAAc33D,GAIZ,MAAMkyY,EAAa,cACbC,EAAc,YAAcD,EAM5BrN,EAAY,QAFOqN,sBAAqFC,EAAc,MAE9E,KALnBD,EAAa,OAASA,EAAtBA,MAAgDC,EAAc,MAKhB,IAmKzE,MAAO,CACL75e,KAAM,OACNixe,kBAAkB,EAClBztZ,SAAU,CACRksZ,QArKa,CACf,MACA,SACA,QACA,QACA,MACA,MACA,eACA,QACA,SACA,SACA,mBACA,YACA,QACA,QACA,OACA,SACA,MACA,OACA,YACA,gBACA,WACA,UACA,QACA,aACA,SACA,UACA,OACA,QACA,MACA,SACA,OACA,WACA,OACA,MACA,QACA,WACA,WACA,UACA,QACA,UACA,KACA,SACA,KACA,WACA,QACA,KACA,QACA,UACA,UACA,UACA,OACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,OACA,KACA,KACA,OACA,KACA,SACA,MACA,UACA,YACA,OACA,YACA,YACA,UACA,WACA,YACA,OACA,QACA,SACA,WACA,SACA,UACA,MACA,SACA,WACA,qBACA,SACA,MACA,MACA,SACA,WACA,WACA,SACA,SACA,MACA,MACA,MACA,MACA,SACA,UACA,OACA,KACA,YACA,OACA,aACA,QACA,QACA,MACA,WACA,OACA,QACA,QACA,QACA,OACA,OACA,QACA,OACA,OACA,OAkDE0J,SAhDc,CAChB,UACA,MACA,YACA,UACA,OACA,eACA,UACA,WACA,SACA,aACA,iBACA,mBACA,YACA,mBACA,WACA,SACA,iBACA,iBACA,aACA,oBACA,sBACA,aACA,oBACA,WACA,cACA,eAuBE36L,QArBa,CAEf,QACA,OACA,OACA,UACA,QACA,UAEA,OACA,OACA,OACA,UAWAouL,QAAS,KACTnkb,SAAU,CACRg/C,EAAKwlY,qBACLxlY,EAAKr0C,QAAQ,KAAM,KACnBq0C,EAAKolY,kBACL,CACE/sd,UAAW,SACXk0C,MAAOs4a,EACPI,UAAW,GAEb,CACE5sd,UAAW,SACXk0C,MAAO,wBACPvL,SAAU,CAAEg/C,EAAKglY,mBAEnB,CACE3sd,UAAW,SACXk0C,MAAO,4BACPvL,SAAU,CAAEg/C,EAAKglY,oBAIzB,aCrFAzvO,EAAO59F,QAxHP,SAAa33D,GACX,MAAO,CACL1nG,KAAM,aACNwjF,SAAU,CACR8uZ,SAAU,WACV5C,QAEE,mwLAkBF0J,SACE,+nEAoCJvM,QAAS,IACTnkb,SAAU,CACRg/C,EAAK0lY,YACL,CACErtd,UAAW,SACXk0C,MAAO,IACPC,IAAK,IACL24a,QAAS,OAaX,CACE9sd,UAAW,SACXk0C,MAAO,wBAETyzC,EAAKr0C,QAAQ,IAAK,KAElB,CACEtzC,UAAW,WACXk0C,MAAO,uBAET,CACEA,MAAO,CACL,2BACA,MACAyzC,EAAK2kY,UAEPtsd,UAAW,CACT,EAAG,UACH,EAAG,SAELm0C,IAAK,IACLy4a,UAAW,EACXjkb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,MACPC,IAAK,SAIX,CACEn0C,UAAW,SACXk0C,MAAO,aAIf,YCYAgpM,EAAO59F,QAjIP,SAAc33D,GACZA,EAAKllE,MACL,MAAMo9c,EAAgBl4Y,EAAKr0C,QAAQ,MAAO,OA0G1C,OAzGAusb,EAAcl3b,SAAS7rB,KAAK,QAyGrB,CACL78B,KAAM,cACNwjF,SAAU,CACR8uZ,SAAU,SACV5C,QA1GQ,CACV,UACA,QACA,KACA,QACA,WACA,OACA,gBACA,OACA,OACA,OACA,OACA,MACA,SACA,OACA,aACA,aACA,YACA,YACA,YACA,aACA,YACA,SACA,KACA,SACA,QACA,OACA,SACA,cACA,cACA,SACA,MACA,MACA,SACA,QACA,SACA,SACA,SACA,aACA,YACA,QACA,QACA,YACA,OACA,OACA,gBA+DAhnb,SAAU,CA9GSg/C,EAAKr0C,QAAQ,KAAM,KAgHpCusb,EApBiB,CACnBzhd,MAAO,CACL,mBACA,MACA,KAEFpe,UAAW,CACT,EAAG,UACH,EAAG,aAtCU,CACfA,UAAW,WACXk0C,MAAO,YAGM,CACb91B,MAAO,gBACPpe,UAAW,cACX4sd,UAAW,GApBc,CACzB14a,MAAO,CACL,8BACA,MACA,aAEFl0C,UAAW,CACT,EAAG,UACH,EAAG,mBA2DH2nF,EAAKolY,kBArCI,CAEX3uc,MAAO,0BACPpe,UAAW,QAGW,CACtBA,UAAW,UAEXoe,MAAO,qZAhBM,CACbpe,UAAW,SACX4sd,UAAW,EAEXxuc,MAAO,oNA8CX,aCqKA8+N,EAAO59F,QAnSP,SAAc33D,GACZ,MAAMllE,EAAQklE,EAAKllE,MACb6pc,EAAW,cACXmO,EAAW,CACf,KACA,QACA,QACA,YACA,WACA,OACA,MACA,UACA,KACA,SACA,KACA,KACA,SACA,SACA,MACA,SAEIsD,EAAW,CACf,OACA,QACA,QAEI6c,EAAgB,CACpB,OACA,SAiBI3C,EAAY,CAChB,IACA,IACA,KACA,IACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,IACA,SACA,KACA,KACA,IACA,OACA,KACA,MACA,KAEIpb,EAAW,CACfjQ,UAAW,EACXxuc,MAAOqE,EAAM1C,OAAO,oCAAqCusc,EAAU,eACnEtsd,UAAW,kBAEPspe,EAAsB,CAC1Blrd,MAAOqE,EAAM1C,OACX0C,EAAMspc,OACJtpc,EAAM1C,OAAO,oCAAqCusc,GAClD7pc,EAAMspc,UAAUksB,IAElB,yBACFj4e,UAAW,iBACXgvd,OAAQ,CAAErmb,SAAU,CAClB,CACEuL,MAAO,KACPC,IAAK,KACLxL,SAAU,CACR,CACEikb,UAAW,EACX5yb,MAAO,SACP5b,MAAOkuc,QAMXgQ,EAAmB,CACvB3ge,SAAU,CACR,CAAEyiB,MAAO,CACP,WACAkuc,EACA,WACAA,IAEF,CAAEluc,MAAO,CACP,WACAkuc,KAGJtyb,MAAO,CACL,EAAG,cACH,EAAG,yBAELypC,SAAUg3Z,GAGNuJ,EAAW,CACfpX,UAAW,EACXxuc,MAAOqE,EAAMspc,UAAUksB,GACvBj4e,UAAW,YASPuze,EAAW,CACfvze,UAAW,WACXk0C,MAAOzxB,EAAM1C,OAAO,KAAM0C,EAAMopc,UAAUS,IAC1Cn4a,IAAKm4a,EACLU,cAAc,EACdJ,UAAW,GAGPiuB,EAAQ,CACZjuB,UAAW,EACXxuc,MAAOqE,EAAM1C,OAAO,MAAOusc,GAC3Btyb,MAAO,YAIHqvc,EAAkB,CACtBzc,UAAW,EACXxuc,MAAO,gCACP4b,MAAO,cACPypC,SAAU,CAAEnhF,EAvHO,CACnB,OACA,QACA,QACA,KACA,OACA,MACA,OACA,MACA,SACA,QACA,WACA,SACA,YA8GIq4e,EAAShzY,EAAK2lY,cAEdwtB,EAAS,CACb18d,MAAO,CACLkuc,EACA,MACA,IACA,MACA,KACAA,EACA,WAEFtyb,MAAO,CACL,EAAG,iBACH,EAAG,WACH,EAAG,WAID+gd,EAAepzZ,EAAKr0C,QACxB,SACA,OACA,CAAE3K,SAAU,CACV,CACEvqB,MAAO,UACP4b,MAAO,UAET,UAGE4gc,EAAQ,CACZ5gc,MAAO,QACPka,MAAO,MACPC,IAAK,KACLxL,SAAU,CACRgyb,EACA0O,EACAxM,EACAge,EACA7W,IAGE1J,EAAS,CACbtgc,MAAO,SACPka,MAAO,IACPC,IAAK,IACLxL,SAAU,CACRiyb,EACA,CACE5gc,MAAO,cACPr+B,SAAU,CACR,CAAEyiB,MAAO,wBACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,sBAKjBw8c,EAAMjyb,SAAS7rB,KAAKw9c,GAEpB,MAAM0gB,EAAU,IACXvgB,KACAmgB,KACA7c,GAEC1B,EAAW,CACfzP,UAAW,EACXxuc,MAAOqE,EAAM1C,OACX,SACAi7d,EAAQ1nf,KAAK,KACb,OACA,2BAEF0M,UAAW,YAoCb,MAAO,CACL/f,KAAM,OACNwjF,SAAU,CACRksZ,QAAS8K,EACT,oBAAqBmgB,EACrBl8M,QAASq/L,GAEXp1b,SAAU,CAvCM,CAEhB3O,MAAO,UACPr+B,SAAU,CACR,CACEu4C,MAAO,CACL,MACA,oBAEFs8a,WAAY,CACV,EAEF/sZ,SAAU,CAAEi7N,QAASq/L,GACrBp1b,SAAU,GAIVwL,IAAK,MAEP,CACED,MAAO,CACL,MACA,cAEFs8a,WAAY,CACV,EAEFr8a,IAAK,OAcPwmb,EACAL,EArJkB,CACpBt6d,UAAW,SACXk0C,MAAO,MACPC,IAAK,OAoJH4mc,EACApzZ,EAAKulY,oBACLvlY,EAAKwlY,qBACLkc,EACA/M,EACAwe,EACAxR,EACAzM,EACAmH,EACA6W,EACAtH,EACAlX,GAGN,aCnJAn/O,EAAO59F,QAhJP,SAAgB33D,GACd,MAAO,CACL1nG,KAAM,qBACNixe,kBAAkB,EAClBztZ,SAAU,CACR8uZ,SAAU,QAAU5qY,EAAK2kY,SACzBqD,QACE,qteAEF0J,SAEE,i5CAyCFl3S,KACE,0/BAcJx5I,SAAU,CACRg/C,EAAKr0C,QACH,IACA,IACA,CAAEs5a,UAAW,IAEf,CACE5sd,UAAW,SACXrE,SAAU,CAER,CACEu4C,MAAO,uHAEP04a,UAAW,GAIb,CACE14a,MAAO,uBACP04a,UAAW,GAIb,CAAE14a,MAAO,oGAGT,CAAEA,MAAO,+EAIbyzC,EAAKolY,kBACL,CACE/sd,UAAW,SACXrE,SAAU,CAER,CACEu4C,MAAO,IACPC,IAAK,YAGP,CACED,MAAO,IACPC,IAAK,aAGTy4a,UAAW,GAEb,CACE5sd,UAAW,SACXrE,SAAU,CAER,CAAEu4C,MAAO,oDAET,CAAEA,MAAO,gCAEX04a,UAAW,GAGb,CACE5sd,UAAW,QACXk0C,MAAO,UACP04a,UAAW,GAGb,CACE5sd,UAAW,QACXk0C,MAAO,OACP04a,UAAW,GAEb,CACE5sd,UAAW,OACXk0C,MAAO,kBAIf,aCsDAgpM,EAAO59F,QArMP,SAAY33D,GACV,MAoIM8yY,EAAW,CACflI,SAAU,yBACV5C,QAtIU,CACV,KACA,OACA,OACA,KACA,QACA,QACA,MACA,OACA,SACA,OACA,KACA,KACA,QACA,OACA,KACA,OACA,WACA,UACA,OACA,OACA,OACA,UACA,SACA,QACA,SACA,UACA,QACA,QA2GAjxL,QARe,CACf,OACA,QACA,OAMA26L,SA1GgB,CAChB,KACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,QACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,QACA,MACA,OACA,QACA,QACA,KACA,KACA,cACA,aACA,YACA,eACA,WACA,OACA,QACA,cACA,cACA,QACA,WACA,UACA,WACA,UACA,cACA,QACA,aACA,aACA,eACA,oBACA,UACA,WACA,WACA,YACA,eACA,eACA,gBACA,YACA,YACA,aACA,YACA,SACA,UACA,SACA,OACA,UACA,UACA,UACA,WACA,QACA,aACA,W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C,MAAOzxB,EAAM1C,OACX,IACA0C,EAAMopc,UAAUppc,EAAM1C,OACpBo7d,EAIA14d,EAAMspc,OAAO,MAAO,IAAK,SAG7B53a,IAAK,OACLxL,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAOinc,EACPvuB,UAAW,EACXoC,OAAQysB,KAKd,CACEz7e,UAAW,MACXk0C,MAAOzxB,EAAM1C,OACX,MACA0C,EAAMopc,UAAUppc,EAAM1C,OACpBo7d,EAAa,OAGjBxyc,SAAU,CACR,CACE3oC,UAAW,OACXk0C,MAAOinc,EACPvuB,UAAW,GAEb,CACE14a,MAAO,IACP04a,UAAW,EACXsC,YAAY,MAMxB,aCyHAhyO,EAAO59F,QA3VP,SAAgBo8V,GAwUd,MAAO,CACLz7f,KAAM,SACNs/B,QAAS,CACP,QACA,KACA,OAEF2xc,kBAAkB,EAClBpE,QAAS,0CACTrpZ,SAAU,CACR8uZ,SAAU,2BACV5C,QAjVa,CACf,SACA,SACA,YACA,iBACA,WACA,cACA,QACA,UACA,YACA,WACA,WACA,UACA,iBACA,oBACA,kBACA,iBACA,SACA,qBACA,WACA,qBACA,UACA,aACA,MACA,aACA,YACA,UACA,mBACA,iBACA,SACA,YACA,aACA,UACA,SACA,SACA,WACA,WACA,WACA,MACA,KACA,KACA,MACA,QACA,QACA,QACA,KACA,SACA,KACA,OACA,OACA,WACA,UACA,SACA,QACA,OACA,OACA,MACA,WACA,OACA,SACA,YACA,aACA,WACA,QACA,WACA,QACA,OACA,QACA,YACA,SACA,OACA,aACA,MACA,QACA,MACA,KACA,KACA,QACA,YACA,WACA,KACA,QACA,KACA,WACA,OACA,MACA,QACA,SACA,SACA,OACA,UACA,QACA,SACA,OACA,SACA,UAmPEtqe,KA9OU,CACZ,OACA,gBACA,OACA,YACA,WACA,UACA,UACA,YACA,iBACA,yBACA,OACA,eACA,mBACA,mBACA,cACA,UACA,aACA,WACA,YACA,gBACA,WACA,eACA,YACA,UACA,aACA,kBACA,eACA,YACA,WACA,cACA,cACA,mBACA,UACA,YACA,sBACA,WACA,cACA,aACA,UACA,YACA,QACA,WACA,YACA,aACA,wBACA,qBACA,UACA,SACA,WACA,UACA,wBACA,mBACA,iBACA,mBACA,kBACA,qBACA,uBACA,sBAqLEq5S,QAlLa,CACf,KACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,UACA,eACA,uBACA,cACA,cACA,sBACA,WACA,aACA,qBACA,cACA,sBACA,QAgKA/1P,SA3Be,CA/EL,CACV3oC,UAAW,WACXk0C,MAAO,eApDQ,CACfl0C,UAAW,WACXrE,SAAU,CACR,CACEu4C,MAAO,WACPC,IAAK,6IAEP,CACED,MAAO,SACPC,IAAK,qEAEP,CACED,MAAO,UACPC,IAAK,4EAEP,CACED,MAAO,QACPC,IAAK,KACL08a,YAAY,GAEd,CACE38a,MAAO,QACPC,IAAK,KACL08a,YAAY,GAGd,CAAE38a,MAAO,+2DACT,CACEA,MAAO,WACPC,IAAK,KACL08a,YAAY,GAEd,CACE38a,MAAO,SACPC,IAAK,sEAEP,CACED,MAAO,uCACPC,IAAK,KACL08a,YAAY,KAsBH,CACb7wd,UAAW,SACXrE,SAAU,CACR,CACEu4C,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,KACP04a,UAAW,KAIjB,CACE14a,MAAO,IACPC,IAAK,IACLxL,SAAU,CACR,CACEuL,MAAO,KACP04a,UAAW,OAzBN,CACb5sd,UAAW,SACXk0C,MAAO,uEACP04a,UAAW,GAkCG,CACd5sd,UAAW,UACXk0C,MAAO,MACPC,IAAK,MACLy4a,UAAW,GACXjkb,SAAU,CACR,CACE3oC,UAAW,SACXk0C,MAAO,UAbM,CACjBl0C,UAAW,OACXk0C,MAAO,aA7CK,CACZl0C,UAAW,QACXk0C,MAAO,qDACPC,IAAK,KA6DU,CACfs6a,cAAe,4DACft6a,IAAK,KACL08a,YAAY,GAIC,CACb38a,MAAO,sCACPC,IAAK,iBACL4gb,YAAa,MACbpsb,SAAU,CACR,CACEuL,MAAO,KACPC,IAAK,KACL4gb,YAAa,UAEf,UAiCN,aCjJA73O,EAA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","sources":["../node_modules/date-fns/esm/sub/index.js","../node_modules/date-fns/esm/subMonths/index.js","_mock/assets/email.js","_mock/assets/phoneNumber.js","_mock/assets/boolean.js","_mock/assets/role.js","_mock/assets/company.js","_mock/assets/address.js","_mock/assets/name.js","_mock/assets/number.js","_mock/assets/video.js","_mock/_mock.js","_mock/arrays/_app.js","_mock/arrays/_user.js","_mock/arrays/_files.js","_mock/arrays/_plans.js","_mock/arrays/_others.js","_mock/arrays/_banking.js","_mock/arrays/_booking.js","../node_modules/date-fns/esm/add/index.js","_mock/arrays/_invoice.js","_mock/arrays/_ecommerce.js","_mock/arrays/_analytics.js","_mock/arrays/_jobs.js","_mock/arrays/_tours.js","_mock/arrays/_reviews.js","_mock/arrays/_members.js","_mock/arrays/_courses.js","_mock/arrays/_products.js","_mock/arrays/_blogPosts.js","_mock/arrays/_caseStudies.js","_mock/assets/text.js","_mock/utils.js","assets/illustrations/BackgroundIllustration.js","assets/illustrations/UploadIllustration.js","assets/illustrations/BookingIllustration.js","assets/illustrations/ForbiddenIllustration.js","assets/illustrations/OrderCompleteIllustration.js","auth/utils.js","auth/JwtContext.js","auth/useAuthContext.js","components/animate/variants/path.js","components/animate/variants/transition.js","components/animate/variants/fade.js","components/animate/variants/bounce.js","components/animate/variants/actions.js","components/animate/variants/container.js","components/animate/DialogAnimate.js","../node_modules/@mui/material/Fab/fabClasses.js","../node_modules/@mui/material/Fab/Fab.js","components/animate/FabButtonAnimate.js","components/animate/IconButtonAnimate.js","components/animate/MotionContainer.js","../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs","components/animate/MotionLazyContainer.js","components/chart/styles.js","components/chart/useChart.js","components/chart/index.js","../node_modules/@mui/material/Badge/useBadge.js","../node_modules/@mui/material/Badge/badgeClasses.js","../node_modules/@mui/material/Badge/Badge.js","components/custom-avatar/CustomAvatar.js","components/editor/styles.js","components/editor/EditorToolbar.js","components/editor/Editor.js","components/file-thumbnail/DownloadButton.js","components/file-thumbnail/FileThumbnail.js","components/file-thumbnail/utils.js","components/hook-form/RHFUpload.js","components/hook-form/RHFSelect.js","components/hook-form/RHFCheckbox.js","components/hook-form/RHFAutocomplete.js","components/hook-form/FormProvider.js","hooks/useEventListener.js","components/hook-form/RHFCodes.js","components/hook-form/RHFSwitch.js","components/hook-form/RHFEditor.js","components/hook-form/RHFTextField.js","components/hook-form/RHFDatePicker.js","components/hook-form/RHFRadioGroup.js","components/hook-form/RHFAutocompleteCombo.js","../node_modules/@iconify/react/dist/iconify.mjs","components/iconify/Iconify.js","components/image/getRatio.js","components/image/Image.js","components/label/styles.js","components/label/Label.js","../node_modules/@mui/material/LinearProgress/linearProgressClasses.js","../node_modules/@mui/material/LinearProgress/LinearProgress.js","components/progress-bar/styles.js","components/progress-bar/ProgressBar.js","components/loading-screen/LoadingScreen.js","components/logo/Logo.js","components/menu-popover/styles.js","components/menu-popover/MenuPopover.js","components/menu-popover/getPosition.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../node_modules/simplebar/src/helpers.js","../node_modules/simplebar/src/scrollbar-width.js","../node_modules/simplebar/src/simplebar.js","../node_modules/simplebar-react/dist/simplebar-react.esm.js","components/scrollbar/styles.js","components/scrollbar/Scrollbar.js","components/search-not-found/SearchNotFound.js","components/settings/config-setting.js","components/settings/presets.js","components/settings/SettingsContext.js","hooks/useLocalStorage.js","components/settings/ThemeContrast.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Prefixer.js","../node_modules/stylis/src/Middleware.js","../node_modules/stylis/src/Parser.js","../../src/stylis-rtl.ts","components/settings/ThemeRtlLayout.js","components/settings/ThemeColorPresets.js","components/settings/drawer/Block.js","components/settings/drawer/BadgeDot.js","components/settings/styles.js","components/settings/drawer/ModeOptions.js","components/settings/drawer/LayoutOptions.js","components/settings/drawer/StretchOptions.js","components/settings/drawer/ContrastOptions.js","components/settings/drawer/DirectionOptions.js","components/settings/drawer/FullScreenOptions.js","components/settings/drawer/ColorPresetsOptions.js","components/settings/drawer/SettingsDrawer.js","components/settings/ThemeSettings.js","../node_modules/notistack/node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../node_modules/notistack/src/SnackbarContext.ts","../node_modules/notistack/src/utils/constants.ts","../node_modules/notistack/src/SnackbarContent/SnackbarContent.tsx","../node_modules/notistack/src/SnackbarItem/SnackbarItem.util.ts","../node_modules/notistack/src/utils/defaultIconVariants.tsx","../node_modules/notistack/src/utils/createChainedFunction.js","../node_modules/notistack/src/utils/useEventCallback.js","../node_modules/notistack/src/SnackbarItem/Snackbar.js","../node_modules/notistack/src/SnackbarItem/SnackbarItem.tsx","../node_modules/notistack/src/SnackbarContainer.tsx","../node_modules/notistack/src/SnackbarProvider.tsx","../node_modules/notistack/src/useSnackbar.ts","components/snackbar/styles.js","components/snackbar/SnackbarProvider.js","components/svg-color/SvgColor.js","components/upload/errors/RejectionFiles.js","components/upload/preview/AvatarPreview.js","components/upload/preview/MultiFilePreview.js","components/upload/preview/SingleFilePreview.js","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","components/upload/Upload.js","components/upload/UploadBox.js","components/upload/UploadAvatar.js","config-global.js","hooks/useResponsive.js","layouts/login/styles.js","layouts/login/LoginLayout.js","sections/auth/AuthLoginForm.js","sections/auth/Login.js","pages/auth/LoginPage.js","redux/slices/author.js","redux/slices/conference-event.js","redux/slices/form.js","redux/slices/journal.js","redux/slices/mail.js","redux/slices/manuscript.js","redux/slices/participant.js","redux/slices/profile.js","redux/slices/publisher.js","redux/slices/question.js","redux/globalSettings.js","redux/slices/survey.js","redux/slices/task.js","redux/slices/taskAssignment.js","redux/slices/user.js","../node_modules/redux-persist/es/constants.js","../node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","../node_modules/redux-persist/es/createPersistoid.js","../node_modules/redux-persist/es/getStoredState.js","../node_modules/redux-persist/es/purgeStoredState.js","../node_modules/redux-persist/es/persistReducer.js","../node_modules/redux-persist/es/persistStore.js","redux/rootReducer.js","redux/store.js","routes/paths.js","theme/overrides/CustomIcons.js","theme/palette.js","theme/typography.js","utils/axios.js","utils/cssStyles.js","utils/formatNumber.js","../node_modules/highlight.js/es/index.js","utils/highlight.js","utils/imgUploader.js","utils/localStorageAvailable.js","utils/serverConfig.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Utility.js","../node_modules/@emotion/cache/node_modules/stylis/src/Tokenizer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Enum.js","../node_modules/@emotion/cache/node_modules/stylis/src/Serializer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@mui/icons-material/esm/AccountBox.js","../node_modules/@mui/icons-material/esm/LibraryBooks.js","../node_modules/@mui/lab/LoadingButton/loadingButtonClasses.js","../node_modules/@mui/lab/LoadingButton/LoadingButton.js","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/Alert/Alert.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/material/internal/svg-icons/Person.js","../node_modules/@mui/material/Avatar/Avatar.js","../node_modules/@mui/material/Avatar/avatarClasses.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/material/Box/boxClasses.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/material/CardActionArea/cardActionAreaClasses.js","../node_modules/@mui/material/CardActionArea/CardActionArea.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/chipClasses.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/@mui/system/esm/Container/createContainer.js","../node_modules/@mui/material/Container/Container.js","../node_modules/@mui/material/CssBaseline/CssBaseline.js","../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","../node_modules/@mui/material/DialogContentText/DialogContentText.js","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/DialogTitle/DialogTitle.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/Drawer/drawerClasses.js","../node_modules/@mui/material/Drawer/Drawer.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormGroup/formGroupClasses.js","../node_modules/@mui/material/FormGroup/FormGroup.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/Grid/GridContext.js","../node_modules/@mui/material/Grid/gridClasses.js","../node_modules/@mui/material/Grid/Grid.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/getTextDecoration.js","../node_modules/@mui/material/Link/Link.js","../node_modules/@mui/material/ListItemButton/ListItemButton.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/@mui/material/Modal/ModalManager.js","../node_modules/@mui/material/Modal/useModal.js","../node_modules/@mui/material/Modal/modalClasses.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@mui/material/Popper/popperClasses.js","../node_modules/@mui/material/Popper/BasePopper.js","../node_modules/@mui/material/Popper/Popper.js","../node_modules/@mui/material/Portal/Portal.js","../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../node_modules/@mui/material/RadioGroup/RadioGroup.js","../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../node_modules/@mui/material/Radio/RadioButtonIcon.js","../node_modules/@mui/material/Radio/radioClasses.js","../node_modules/@mui/material/Radio/Radio.js","../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/Slide/Slide.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/Switch/switchClasses.js","../node_modules/@mui/material/Switch/Switch.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","../node_modules/@mui/material/Toolbar/toolbarClasses.js","../node_modules/@mui/material/Toolbar/Toolbar.js","../node_modules/@mui/material/Tooltip/tooltipClasses.js","../node_modules/@mui/material/Tooltip/Tooltip.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@mui/material/Unstable_TrapFocus/FocusTrap.js","../node_modules/@mui/material/internal/switchBaseClasses.js","../node_modules/@mui/material/internal/SwitchBase.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/@mui/material/styles/ThemeProvider.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/rootShouldForwardProp.js","../node_modules/@mui/material/styles/slotShouldForwardProp.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/useAutocomplete/useAutocomplete.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/material/utils/useSlot.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/colorManipulator.js","../node_modules/@mui/system/createStyled.js","../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/system/esm/RtlProvider/index.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/useThemeWithoutDefault.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/utils/esm/clamp/clamp.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../node_modules/@mui/utils/esm/debounce/debounce.js","../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/utils/esm/getDisplayName/getDisplayName.js","../node_modules/@mui/utils/esm/getReactElementRef/getReactElementRef.js","../node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","../node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../node_modules/@mui/utils/esm/setRef/setRef.js","../node_modules/@mui/utils/esm/useControlled/useControlled.js","../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/utils/esm/usePreviousProps/usePreviousProps.js","../node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../node_modules/@mui/x-date-pickers/internals/components/PickersModalDialog.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/MobileWrapper.js","../node_modules/@mui/x-date-pickers/internals/components/PureDateInput.js","../node_modules/@mui/x-date-pickers/MobileDatePicker/MobileDatePicker.js","../node_modules/@mui/x-date-pickers/DatePicker/DatePicker.js","../node_modules/@mui/x-date-pickers/DatePicker/datePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/DatePicker/DatePickerToolbar.js","../node_modules/@mui/x-date-pickers/DatePicker/shared.js","../node_modules/@mui/x-date-pickers/DesktopDatePicker/DesktopDatePicker.js","../node_modules/@mui/x-date-pickers/locales/utils/getPickersLocalization.js","../node_modules/@mui/x-date-pickers/locales/enUS.js","../node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.js","../node_modules/@mui/x-date-pickers/PickersActionBar/PickersActionBar.js","../node_modules/@mui/x-date-pickers/internals/hooks/useViews.js","../node_modules/@mui/x-date-pickers/ClockPicker/shared.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPointerClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPointer.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/Clock.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockNumberClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumber.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumbers.js","../node_modules/@mui/x-date-pickers/internals/components/pickersArrowSwitcherClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/warning.js","../node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","../node_modules/@mui/x-date-pickers/MonthPicker/pickersMonthClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/PickersMonth.js","../node_modules/@mui/x-date-pickers/MonthPicker/monthPickerClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/MonthPicker.js","../node_modules/@mui/x-date-pickers/CalendarPicker/useCalendarState.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersFadeTransitionGroupClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersFadeTransitionGroup.js","../node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js","../node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersSlideTransitionClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersSlideTransition.js","../node_modules/@mui/x-date-pickers/CalendarPicker/dayPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/DayPicker.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersCalendarHeaderClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersCalendarHeader.js","../node_modules/@mui/x-date-pickers/YearPicker/pickersYearClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/PickersYear.js","../node_modules/@mui/x-date-pickers/YearPicker/yearPickerClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/YearPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/defaultReduceAnimations.js","../node_modules/@mui/x-date-pickers/CalendarPicker/calendarPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/CalendarPicker.js","../node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/useFocusManagement.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/calendarOrClockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js","../node_modules/rifm/dist/rifm.esm.js","../node_modules/@mui/x-date-pickers/internals/components/KeyboardDateInput.js","../node_modules/@mui/x-date-pickers/internals/hooks/useMaskedInput.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbar.js","../node_modules/@mui/x-date-pickers/internals/components/icons/index.js","../node_modules/@mui/x-date-pickers/internals/components/pickersToolbarClasses.js","../node_modules/@mui/x-date-pickers/internals/components/pickersPopperClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersPopper.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/DesktopWrapper.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/WrapperVariantContext.js","../node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePickerState.js","../node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","../node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useValidation.js","../node_modules/@mui/x-date-pickers/internals/utils/date-utils.js","../node_modules/@mui/x-date-pickers/internals/utils/text-field-helper.js","../node_modules/@mui/x-date-pickers/internals/utils/time-utils.js","../node_modules/@mui/x-date-pickers/internals/utils/utils.js","../node_modules/@mui/x-date-pickers/node_modules/clsx/dist/clsx.m.js","../node_modules/@react-oauth/google/dist/index.esm.js","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/apexcharts/dist/apexcharts.common.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/autosuggest-highlight/match/index.js","../node_modules/autosuggest-highlight/parse/index.js","../node_modules/can-use-dom/index.js","../node_modules/cssjanus/src/cssjanus.js","../node_modules/date-fns/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/invariant/browser.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash.memoize/index.js","../node_modules/lodash.throttle/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAggregator.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseSum.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_root.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/constant.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keyBy.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/mapKeys.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/merge.js","../node_modules/lodash/noop.js","../node_modules/lodash/property.js","../node_modules/lodash/snakeCase.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/sum.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/toString.js","../node_modules/lodash/uniq.js","../node_modules/lodash/uniqBy.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/words.js","../node_modules/mapbox-gl/src/util/browser/window.js","../node_modules/mapbox-gl/src/util/config.js","../node_modules/mapbox-gl/src/util/webp_supported.js","../node_modules/mapbox-gl/src/util/sku_token.js","../node_modules/mapbox-gl/node_modules/@mapbox/unitbezier/index.js","../node_modules/mapbox-gl/node_modules/@mapbox/point-geometry/index.js","../node_modules/mapbox-gl/src/util/util.js","../node_modules/mapbox-gl/src/util/tile_request_cache.js","../node_modules/mapbox-gl/src/util/ajax.js","../node_modules/mapbox-gl/src/util/mapbox.js","../node_modules/mapbox-gl/src/util/live_performance.js","../node_modules/mapbox-gl/src/util/performance.js","../node_modules/mapbox-gl/src/util/browser.js","../node_modules/mapbox-gl/src/util/evented.js","../node_modules/mapbox-gl/src/style-spec/util/extend.js","../node_modules/mapbox-gl/src/style-spec/util/unbundle_jsonlint.js","../node_modules/mapbox-gl/src/style-spec/expression/parsing_error.js","../node_modules/mapbox-gl/src/style-spec/expression/scope.js","../node_modules/mapbox-gl/src/style-spec/expression/types.js","../node_modules/mapbox-gl/node_modules/csscolorparser/csscolorparser.js","../node_modules/mapbox-gl/src/style-spec/util/color.js","../node_modules/mapbox-gl/src/style-spec/expression/types/collator.js","../node_modules/mapbox-gl/src/style-spec/expression/types/formatted.js","../node_modules/mapbox-gl/src/style-spec/expression/types/resolved_image.js","../node_modules/mapbox-gl/src/style-spec/expression/values.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/literal.js","../node_modules/mapbox-gl/src/style-spec/expression/runtime_error.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/assertion.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/format.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/image.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/coercion.js","../node_modules/mapbox-gl/src/style-spec/expression/evaluation_context.js","../node_modules/mapbox-gl/src/style-spec/expression/compound_expression.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/collator.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/within.js","../node_modules/mapbox-gl/src/style-spec/expression/is_constant.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/var.js","../node_modules/mapbox-gl/src/style-spec/expression/parsing_context.js","../node_modules/mapbox-gl/src/style-spec/expression/stops.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/step.js","../node_modules/mapbox-gl/src/style-spec/util/interpolate.js","../node_modules/mapbox-gl/src/style-spec/util/color_spaces.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/interpolate.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/coalesce.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/let.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/at.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/in.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/index_of.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/match.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/case.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/slice.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/comparison.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/number_format.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/length.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/index.js","../node_modules/mapbox-gl/src/style-spec/util/result.js","../node_modules/mapbox-gl/src/style-spec/util/properties.js","../node_modules/mapbox-gl/src/style-spec/util/get_type.js","../node_modules/mapbox-gl/src/style-spec/function/index.js","../node_modules/mapbox-gl/src/style-spec/expression/index.js","../node_modules/mapbox-gl/src/style-spec/error/validation_error.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_object.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_array.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_number.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_function.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_expression.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_enum.js","../node_modules/mapbox-gl/src/style-spec/feature_filter/index.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_filter.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_property.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_paint_property.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_layout_property.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_layer.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_string.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_source.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_light.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_terrain.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_fog.js","../node_modules/mapbox-gl/src/style-spec/validate/validate.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_boolean.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_color.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_formatted.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_image.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_projection.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_glyphs_url.js","../node_modules/mapbox-gl/src/style-spec/validate_style.min.js","../node_modules/mapbox-gl/src/style/validate_style.js","../node_modules/mapbox-gl/node_modules/grid-index/grid-index.js","../node_modules/mapbox-gl/src/util/web_worker_transfer.js","../node_modules/mapbox-gl/src/util/is_char_in_unicode_block.js","../node_modules/mapbox-gl/src/util/script_detection.js","../node_modules/mapbox-gl/src/source/rtl_text_plugin.js","../node_modules/mapbox-gl/src/style/evaluation_parameters.js","../node_modules/mapbox-gl/src/style/properties.js","../node_modules/mapbox-gl/src/shaders/encode_attribute.js","../node_modules/mapbox-gl/src/util/struct_array.js","../node_modules/mapbox-gl/src/data/array_types.js","../node_modules/mapbox-gl/src/data/bucket/pattern_attributes.js","../node_modules/mapbox-gl/src/data/bucket/dash_attributes.js","../node_modules/mapbox-gl/node_modules/murmurhash-js/murmurhash3_gc.js","../node_modules/mapbox-gl/node_modules/murmurhash-js/murmurhash2_gc.js","../node_modules/mapbox-gl/node_modules/murmurhash-js/index.js","../node_modules/mapbox-gl/src/data/feature_position_map.js","../node_modules/mapbox-gl/src/render/uniform_binding.js","../node_modules/mapbox-gl/src/data/program_configuration.js","../node_modules/mapbox-gl/src/style/style_layer.js","../node_modules/mapbox-gl/src/data/bucket/circle_attributes.js","../node_modules/mapbox-gl/src/data/segment.js","../node_modules/mapbox-gl/src/data/extent.js","../node_modules/mapbox-gl/src/geo/lng_lat_bounds.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/common.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/mat3.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/mat4.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/vec3.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/vec4.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/quat.js","../node_modules/mapbox-gl/src/terrain/globe_attributes.js","../node_modules/mapbox-gl/src/data/pos_attributes.js","../node_modules/mapbox-gl/src/util/primitives.js","../node_modules/mapbox-gl/src/geo/projection/globe_util.js","../node_modules/mapbox-gl/src/geo/lng_lat.js","../node_modules/mapbox-gl/src/geo/mercator_coordinate.js","../node_modules/mapbox-gl/src/geo/projection/resample.js","../node_modules/mapbox-gl/src/data/load_geometry.js","../node_modules/mapbox-gl/src/data/evaluation_feature.js","../node_modules/mapbox-gl/src/data/bucket/circle_bucket.js","../node_modules/mapbox-gl/src/util/intersection_tests.js","../node_modules/mapbox-gl/src/style/query_utils.js","../node_modules/mapbox-gl/src/style/style_layer/circle_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/circle_style_layer.js","../node_modules/mapbox-gl/src/data/bucket/heatmap_bucket.js","../node_modules/mapbox-gl/src/util/image.js","../node_modules/mapbox-gl/src/style/style_layer/heatmap_style_layer_properties.js","../node_modules/mapbox-gl/src/util/color_ramp.js","../node_modules/mapbox-gl/src/style/style_layer/hillshade_style_layer_properties.js","../node_modules/mapbox-gl/src/data/bucket/fill_attributes.js","../node_modules/mapbox-gl/node_modules/earcut/src/earcut.js","../node_modules/mapbox-gl/node_modules/quickselect/index.js","../node_modules/mapbox-gl/src/util/classify_rings.js","../node_modules/mapbox-gl/src/data/bucket/pattern_bucket_features.js","../node_modules/mapbox-gl/src/data/bucket/fill_bucket.js","../node_modules/mapbox-gl/src/style/style_layer/fill_style_layer_properties.js","../node_modules/mapbox-gl/src/data/bucket/fill_extrusion_attributes.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/lib/vectortilefeature.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/lib/vectortilelayer.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/lib/vectortile.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/index.js","../node_modules/mapbox-gl/src/util/polygon_clipping.js","../node_modules/mapbox-gl/src/data/bucket/fill_extrusion_bucket.js","../node_modules/mapbox-gl/src/style/style_layer/fill_extrusion_style_layer_properties.js","../node_modules/mapbox-gl/node_modules/@mapbox/whoots-js/index.mjs","../node_modules/mapbox-gl/src/source/tile_id.js","../node_modules/mapbox-gl/src/style/style_layer/fill_extrusion_style_layer.js","../node_modules/mapbox-gl/src/data/bucket/line_attributes.js","../node_modules/mapbox-gl/src/data/bucket/line_attributes_ext.js","../node_modules/mapbox-gl/src/data/bucket/line_bucket.js","../node_modules/mapbox-gl/src/style/style_layer/line_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/line_style_layer.js","../node_modules/mapbox-gl/src/data/bucket/symbol_attributes.js","../node_modules/mapbox-gl/src/symbol/one_em.js","../node_modules/mapbox-gl/src/symbol/symbol_size.js","../node_modules/mapbox-gl/src/symbol/transform_text.js","../node_modules/mapbox-gl/src/util/verticalize_punctuation.js","../node_modules/mapbox-gl/node_modules/pbf/index.js","../node_modules/mapbox-gl/node_modules/ieee754/index.js","../node_modules/mapbox-gl/src/style/parse_glyph_pbf.js","../node_modules/mapbox-gl/node_modules/potpack/index.js","../node_modules/mapbox-gl/src/render/image_atlas.js","../node_modules/mapbox-gl/src/symbol/shaping.js","../node_modules/mapbox-gl/src/symbol/anchor.js","../node_modules/mapbox-gl/src/symbol/check_max_angle.js","../node_modules/mapbox-gl/src/symbol/get_anchors.js","../node_modules/mapbox-gl/src/symbol/clip_line.js","../node_modules/mapbox-gl/node_modules/@mapbox/tiny-sdf/index.js","../node_modules/mapbox-gl/src/render/glyph_manager.js","../node_modules/mapbox-gl/src/style/load_glyph_range.js","../node_modules/mapbox-gl/src/symbol/quads.js","../node_modules/mapbox-gl/node_modules/tinyqueue/index.js","../node_modules/mapbox-gl/src/util/find_pole_of_inaccessibility.js","../node_modules/mapbox-gl/src/symbol/symbol_layout.js","../node_modules/mapbox-gl/src/geo/projection/far_z.js","../node_modules/mapbox-gl/src/geo/projection/tile_transform.js","../node_modules/mapbox-gl/src/geo/projection/projection.js","../node_modules/mapbox-gl/src/geo/projection/albers.js","../node_modules/mapbox-gl/src/geo/projection/equal_earth.js","../node_modules/mapbox-gl/src/geo/projection/equirectangular.js","../node_modules/mapbox-gl/src/geo/projection/lambert.js","../node_modules/mapbox-gl/src/geo/projection/mercator.js","../node_modules/mapbox-gl/src/geo/projection/natural_earth.js","../node_modules/mapbox-gl/src/geo/projection/winkel_tripel.js","../node_modules/mapbox-gl/src/geo/projection/cylindrical_equal_area.js","../node_modules/mapbox-gl/src/geo/projection/globe.js","../node_modules/mapbox-gl/src/geo/projection/index.js","../node_modules/mapbox-gl/src/data/bucket/symbol_bucket.js","../node_modules/mapbox-gl/src/symbol/mergelines.js","../node_modules/mapbox-gl/src/style/style_layer/symbol_style_layer_properties.js","../node_modules/mapbox-gl/src/style/format_section_override.js","../node_modules/mapbox-gl/src/style/style_layer/symbol_style_layer.js","../node_modules/mapbox-gl/src/util/resolve_tokens.js","../node_modules/mapbox-gl/src/style/style_layer/background_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/raster_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/custom_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/sky_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/sky_style_layer.js","../node_modules/mapbox-gl/src/style/create_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/heatmap_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/hillshade_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/fill_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/background_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/raster_style_layer.js","../node_modules/mapbox-gl/src/render/texture.js","../node_modules/mapbox-gl/src/util/throttled_invoker.js","../node_modules/mapbox-gl/src/util/scheduler.js","../node_modules/mapbox-gl/src/util/dictionary_coder.js","../node_modules/mapbox-gl/src/util/vectortile_to_geojson.js","../node_modules/mapbox-gl/src/source/tile_mesh.js","../node_modules/mapbox-gl/src/data/bounds_attributes.js","../node_modules/mapbox-gl/src/source/tile.js","../node_modules/mapbox-gl/src/data/bucket.js","../node_modules/mapbox-gl/src/source/source_state.js","../node_modules/mapbox-gl/src/data/dem_tree.js","../node_modules/mapbox-gl/src/data/dem_data.js","../node_modules/mapbox-gl/src/source/tile_cache.js","../node_modules/mapbox-gl/src/gl/depth_mode.js","../node_modules/mapbox-gl/src/gl/stencil_mode.js","../node_modules/mapbox-gl/src/gl/color_mode.js","../node_modules/mapbox-gl/src/gl/cull_face_mode.js","../node_modules/mapbox-gl/src/source/source_cache.js","../node_modules/mapbox-gl/src/terrain/elevation.js","../node_modules/mapbox-gl/src/data/feature_index.js","../node_modules/mapbox-gl/src/render/line_atlas.js","../node_modules/mapbox-gl/src/render/glyph_atlas.js","../node_modules/mapbox-gl/src/source/worker_tile.js","../node_modules/mapbox-gl/src/source/vector_tile_worker_source.js","../node_modules/mapbox-gl/node_modules/kdbush/index.js","../node_modules/mapbox-gl/src/util/actor.js","../node_modules/mapbox-gl/src/style-spec/util/ref_properties.js","../node_modules/mapbox-gl/src/style-spec/group_by_layout.js","../node_modules/mapbox-gl/src/style/style_layer_index.js","../node_modules/mapbox-gl/src/source/raster_dem_tile_worker_source.js","../node_modules/mapbox-gl/node_modules/@mapbox/geojson-rewind/index.js","../node_modules/mapbox-gl/src/source/geojson_wrapper.js","../node_modules/mapbox-gl/node_modules/vt-pbf/lib/geojson_wrapper.js","../node_modules/mapbox-gl/node_modules/vt-pbf/index.js","../node_modules/mapbox-gl/node_modules/supercluster/index.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/simplify.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/feature.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/convert.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/clip.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/wrap.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/transform.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/tile.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/index.js","../node_modules/mapbox-gl/src/source/geojson_worker_source.js","../node_modules/mapbox-gl/src/source/worker.js","../node_modules/mapbox-gl/src/style-spec/util/deep_equal.js","../node_modules/mapbox-gl/node_modules/@mapbox/mapbox-gl-supported/index.js","../node_modules/mapbox-gl/src/util/dom.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/mat2.js","../node_modules/mapbox-gl/src/style/style_image.js","../node_modules/mapbox-gl/src/render/image_manager.js","../node_modules/mapbox-gl/src/style/light.js","../node_modules/mapbox-gl/src/style/terrain.js","../node_modules/mapbox-gl/src/style/fog_helpers.js","../node_modules/mapbox-gl/src/style/fog.js","../node_modules/mapbox-gl/src/util/dispatcher.js","../node_modules/mapbox-gl/src/source/pixels_to_tile_units.js","../node_modules/mapbox-gl/src/style/query_geometry.js","../node_modules/mapbox-gl/src/source/load_tilejson.js","../node_modules/mapbox-gl/src/source/tile_bounds.js","../node_modules/mapbox-gl/src/gl/index_buffer.js","../node_modules/mapbox-gl/src/gl/vertex_buffer.js","../node_modules/mapbox-gl/src/gl/value.js","../node_modules/mapbox-gl/src/util/offscreen_canvas_supported.js","../node_modules/mapbox-gl/src/gl/framebuffer.js","../node_modules/mapbox-gl/src/gl/context.js","../node_modules/mapbox-gl/src/source/vector_tile_source.js","../node_modules/mapbox-gl/src/source/raster_tile_source.js","../node_modules/mapbox-gl/src/source/image_source.js","../node_modules/mapbox-gl/src/source/source.js","../node_modules/mapbox-gl/src/source/raster_dem_tile_source.js","../node_modules/mapbox-gl/src/source/geojson_source.js","../node_modules/mapbox-gl/src/source/video_source.js","../node_modules/mapbox-gl/src/source/canvas_source.js","../node_modules/mapbox-gl/src/source/custom_source.js","../node_modules/mapbox-gl/src/source/query_features.js","../node_modules/mapbox-gl/src/util/browser/web_worker.js","../node_modules/mapbox-gl/src/util/worker_pool.js","../node_modules/mapbox-gl/src/util/global_worker_pool.js","../node_modules/mapbox-gl/src/style-spec/deref.js","../node_modules/mapbox-gl/src/style-spec/diff.js","../node_modules/mapbox-gl/src/symbol/path_interpolator.js","../node_modules/mapbox-gl/src/symbol/grid_index.js","../node_modules/mapbox-gl/src/symbol/projection.js","../node_modules/mapbox-gl/src/symbol/collision_index.js","../node_modules/mapbox-gl/src/geo/projection/projection_util.js","../node_modules/mapbox-gl/src/symbol/placement.js","../node_modules/mapbox-gl/src/style/pauseable_placement.js","../node_modules/mapbox-gl/src/symbol/cross_tile_symbol_index.js","../node_modules/mapbox-gl/src/style/style.js","../node_modules/mapbox-gl/src/style-spec/empty.js","../node_modules/mapbox-gl/src/style/load_sprite.js","../node_modules/mapbox-gl/src/shaders/shaders.js","../node_modules/mapbox-gl/src/render/vertex_array_object.js","../node_modules/mapbox-gl/src/render/program/hillshade_program.js","../node_modules/mapbox-gl/src/render/draw_hillshade.js","../node_modules/mapbox-gl/src/terrain/terrain_raster_program.js","../node_modules/mapbox-gl/src/terrain/globe_raster_program.js","../node_modules/mapbox-gl/src/terrain/draw_terrain_raster.js","../node_modules/mapbox-gl/src/render/program/clipping_mask_program.js","../node_modules/mapbox-gl/src/render/raster_fade.js","../node_modules/mapbox-gl/src/terrain/terrain.js","../node_modules/mapbox-gl/src/render/program.js","../node_modules/mapbox-gl/src/render/fog.js","../node_modules/mapbox-gl/src/render/program/pattern.js","../node_modules/mapbox-gl/src/render/program/fill_extrusion_program.js","../node_modules/mapbox-gl/src/render/program/fill_program.js","../node_modules/mapbox-gl/src/render/program/circle_program.js","../node_modules/mapbox-gl/src/render/program/collision_program.js","../node_modules/mapbox-gl/src/render/program/debug_program.js","../node_modules/mapbox-gl/src/render/program/heatmap_program.js","../node_modules/mapbox-gl/src/render/program/line_program.js","../node_modules/mapbox-gl/src/render/program/raster_program.js","../node_modules/mapbox-gl/src/render/program/symbol_program.js","../node_modules/mapbox-gl/src/render/program/background_program.js","../node_modules/mapbox-gl/src/render/program/program_uniforms.js","../node_modules/mapbox-gl/src/render/program/skybox_program.js","../node_modules/mapbox-gl/src/render/program/skybox_capture_program.js","../node_modules/mapbox-gl/src/render/draw_collision_debug.js","../node_modules/mapbox-gl/src/render/draw_symbol.js","../node_modules/mapbox-gl/src/render/draw_fill.js","../node_modules/mapbox-gl/src/render/draw_fill_extrusion.js","../node_modules/mapbox-gl/src/render/draw_debug.js","../node_modules/mapbox-gl/src/render/skybox_attributes.js","../node_modules/mapbox-gl/src/render/skybox_geometry.js","../node_modules/mapbox-gl/src/render/draw_sky.js","../node_modules/mapbox-gl/src/render/atmosphere_attributes.js","../node_modules/mapbox-gl/src/render/atmosphere_buffer.js","../node_modules/mapbox-gl/src/render/painter.js","../node_modules/mapbox-gl/src/render/draw_circle.js","../node_modules/mapbox-gl/src/render/draw_heatmap.js","../node_modules/mapbox-gl/src/render/draw_line.js","../node_modules/mapbox-gl/src/render/draw_raster.js","../node_modules/mapbox-gl/src/render/draw_background.js","../node_modules/mapbox-gl/src/render/draw_custom.js","../node_modules/mapbox-gl/src/render/draw_atmosphere.js","../node_modules/mapbox-gl/src/geo/edge_insets.js","../node_modules/mapbox-gl/src/ui/free_camera.js","../node_modules/mapbox-gl/src/geo/projection/adjustments.js","../node_modules/mapbox-gl/src/geo/transform.js","../node_modules/mapbox-gl/src/util/throttle.js","../node_modules/mapbox-gl/src/ui/hash.js","../node_modules/mapbox-gl/src/ui/handler_inertia.js","../node_modules/mapbox-gl/src/ui/events.js","../node_modules/mapbox-gl/src/ui/handler/map_event.js","../node_modules/mapbox-gl/src/ui/handler/box_zoom.js","../node_modules/mapbox-gl/src/ui/handler/handler_util.js","../node_modules/mapbox-gl/src/ui/handler/tap_recognizer.js","../node_modules/mapbox-gl/src/ui/handler/tap_zoom.js","../node_modules/mapbox-gl/src/ui/handler/mouse.js","../node_modules/mapbox-gl/src/ui/handler/touch_pan.js","../node_modules/mapbox-gl/src/ui/handler/touch_zoom_rotate.js","../node_modules/mapbox-gl/src/ui/handler/keyboard.js","../node_modules/mapbox-gl/src/ui/handler/scroll_zoom.js","../node_modules/mapbox-gl/src/ui/handler/shim/dblclick_zoom.js","../node_modules/mapbox-gl/src/ui/handler/click_zoom.js","../node_modules/mapbox-gl/src/ui/handler/tap_drag_zoom.js","../node_modules/mapbox-gl/src/ui/handler/shim/drag_pan.js","../node_modules/mapbox-gl/src/ui/handler/shim/drag_rotate.js","../node_modules/mapbox-gl/src/ui/handler/shim/touch_zoom_rotate.js","../node_modules/mapbox-gl/src/ui/handler_manager.js","../node_modules/mapbox-gl/src/ui/camera.js","../node_modules/mapbox-gl/src/ui/control/attribution_control.js","../node_modules/mapbox-gl/src/ui/control/logo_control.js","../node_modules/mapbox-gl/src/util/task_queue.js","../node_modules/mapbox-gl/src/util/smart_wrap.js","../node_modules/mapbox-gl/src/ui/anchor.js","../node_modules/mapbox-gl/src/ui/marker.js","../node_modules/mapbox-gl/src/ui/popup.js","../node_modules/mapbox-gl/src/util/eased_variable.js","../node_modules/mapbox-gl/src/ui/default_locale.js","../node_modules/mapbox-gl/src/ui/map.js","../node_modules/mapbox-gl/src/ui/control/navigation_control.js","../node_modules/mapbox-gl/src/ui/control/geolocate_control.js","../node_modules/mapbox-gl/src/ui/control/scale_control.js","../node_modules/mapbox-gl/src/index.js","../node_modules/mapbox-gl/src/ui/control/fullscreen_control.js","../node_modules/mapbox-gl/rollup/mapboxgl.js","../node_modules/nprogress/nprogress.js","../node_modules/numeral/numeral.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/quill/dist/quill.js","../node_modules/react-apexcharts/dist/react-apexcharts.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-helmet-async/src/constants.js","../node_modules/react-helmet-async/src/utils.js","../node_modules/react-helmet-async/src/server.js","../node_modules/react-helmet-async/src/HelmetData.js","../node_modules/react-helmet-async/src/Provider.js","../node_modules/react-helmet-async/src/client.js","../node_modules/react-helmet-async/src/Dispatcher.js","../node_modules/react-helmet-async/src/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-lazy-load-image-component/build/index.js","../node_modules/react-quill/src/index.tsx","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/index.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/redux-persist/lib/integration/react.js","../node_modules/redux-persist/lib/storage/createWebStorage.js","../node_modules/redux-persist/lib/storage/getStorage.js","../node_modules/redux-persist/lib/storage/index.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/shallowequal/index.js","../node_modules/toposort/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/void-elements/index.js","../node_modules/nanoclone/src/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/array.js","../node_modules/mapbox-gl/dist/mapbox-gl-csp-worker.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/highlight.js/lib/core.js","../node_modules/highlight.js/lib/index.js","../node_modules/highlight.js/lib/languages/1c.js","../node_modules/highlight.js/lib/languages/abnf.js","../node_modules/highlight.js/lib/languages/accesslog.js","../node_modules/highlight.js/lib/languages/actionscript.js","../node_modules/highlight.js/lib/languages/ada.js","../node_modules/highlight.js/lib/languages/angelscript.js","../node_modules/highlight.js/lib/languages/apache.js","../node_modules/highlight.js/lib/languages/applescript.js","../node_modules/highlight.js/lib/languages/arcade.js","../node_modules/highlight.js/lib/languages/arduino.js","../node_modules/highlight.js/lib/languages/armasm.js","../node_modules/highlight.js/lib/languages/asciidoc.js","../node_modules/highlight.js/lib/languages/aspectj.js","../node_modules/highlight.js/lib/languages/autohotkey.js","../node_modules/highlight.js/lib/languages/autoit.js","../node_modules/highlight.js/lib/languages/avrasm.js","../node_modules/highlight.js/lib/languages/awk.js","../node_modules/highlight.js/lib/languages/axapta.js","../node_modules/highlight.js/lib/languages/bash.js","../node_modules/highlight.js/lib/languages/basic.js","../node_modules/highlight.js/lib/languages/bnf.js","../node_modules/highlight.js/lib/languages/brainfuck.js","../node_modules/highlight.js/lib/languages/c.js","../node_modules/highlight.js/lib/languages/cal.js","../node_modules/highlight.js/lib/languages/capnproto.js","../node_modules/highlight.js/lib/languages/ceylon.js","../node_modules/highlight.js/lib/languages/clean.js","../node_modules/highlight.js/lib/languages/clojure-repl.js","../node_modules/highlight.js/lib/languages/clojure.js","../node_modules/highlight.js/lib/languages/cmake.js","../node_modules/highlight.js/lib/languages/coffeescript.js","../node_modules/highlight.js/lib/languages/coq.js","../node_modules/highlight.js/lib/languages/cos.js","../node_modules/highlight.js/lib/languages/cpp.js","../node_modules/highlight.js/lib/languages/crmsh.js","../node_modules/highlight.js/lib/languages/crystal.js","../node_modules/highlight.js/lib/languages/csharp.js","../node_modules/highlight.js/lib/languages/csp.js","../node_modules/highlight.js/lib/languages/css.js","../node_modules/highlight.js/lib/languages/d.js","../node_modules/highlight.js/lib/languages/dart.js","../node_modules/highlight.js/lib/languages/delphi.js","../node_modules/highlight.js/lib/languages/diff.js","../node_modules/highlight.js/lib/languages/django.js","../node_modules/highlight.js/lib/languages/dns.js","../node_modules/highlight.js/lib/languages/dockerfile.js","../node_modules/highlight.js/lib/languages/dos.js","../node_modules/highlight.js/lib/languages/dsconfig.js","../node_modules/highlight.js/lib/languages/dts.js","../node_modules/highlight.js/lib/languages/dust.js","../node_modules/highlight.js/lib/languages/ebnf.js","../node_modules/highlight.js/lib/languages/elixir.js","../node_modules/highlight.js/lib/languages/elm.js","../node_modules/highlight.js/lib/languages/erb.js","../node_modules/highlight.js/lib/languages/erlang-repl.js","../node_modules/highlight.js/lib/languages/erlang.js","../node_modules/highlight.js/lib/languages/excel.js","../node_modules/highlight.js/lib/languages/fix.js","../node_modules/highlight.js/lib/languages/flix.js","../node_modules/highlight.js/lib/languages/fortran.js","../node_modules/highlight.js/lib/languages/fsharp.js","../node_modules/highlight.js/lib/languages/gams.js","../node_modules/highlight.js/lib/languages/gauss.js","../node_modules/highlight.js/lib/languages/gcode.js","../node_modules/highlight.js/lib/languages/gherkin.js","../node_modules/highlight.js/lib/languages/glsl.js","../node_modules/highlight.js/lib/languages/gml.js","../node_modules/highlight.js/lib/languages/go.js","../node_modules/highlight.js/lib/languages/golo.js","../node_modules/highlight.js/lib/languages/gradle.js","../node_modules/highlight.js/lib/languages/graphql.js","../node_modules/highlight.js/lib/languages/groovy.js","../node_modules/highlight.js/lib/languages/haml.js","../node_modules/highlight.js/lib/languages/handlebars.js","../node_modules/highlight.js/lib/languages/haskell.js","../node_modules/highlight.js/lib/languages/haxe.js","../node_modules/highlight.js/lib/languages/hsp.js","../node_modules/highlight.js/lib/languages/http.js","../node_modules/highlight.js/lib/languages/hy.js","../node_modules/highlight.js/lib/languages/inform7.js","../node_modules/highlight.js/lib/languages/ini.js","../node_modules/highlight.js/lib/languages/irpf90.js","../node_modules/highlight.js/lib/languages/isbl.js","../node_modules/highlight.js/lib/languages/java.js","../node_modules/highlight.js/lib/languages/javascript.js","../node_modules/highlight.js/lib/languages/jboss-cli.js","../node_modules/highlight.js/lib/languages/json.js","../node_modules/highlight.js/lib/languages/julia-repl.js","../node_modules/highlight.js/lib/languages/julia.js","../node_modules/highlight.js/lib/languages/kotlin.js","../node_modules/highlight.js/lib/languages/lasso.js","../node_modules/highlight.js/lib/languages/latex.js","../node_modules/highlight.js/lib/languages/ldif.js","../node_modules/highlight.js/lib/languages/leaf.js","../node_modules/highlight.js/lib/languages/less.js","../node_modules/highlight.js/lib/languages/lisp.js","../node_modules/highlight.js/lib/languages/livecodeserver.js","../node_modules/highlight.js/lib/languages/livescript.js","../node_modules/highlight.js/lib/languages/llvm.js","../node_modules/highlight.js/lib/languages/lsl.js","../node_modules/highlight.js/lib/languages/lua.js","../node_modules/highlight.js/lib/languages/makefile.js","../node_modules/highlight.js/lib/languages/markdown.js","../node_modules/highlight.js/lib/languages/mathematica.js","../node_modules/highlight.js/lib/languages/matlab.js","../node_modules/highlight.js/lib/languages/maxima.js","../node_modules/highlight.js/lib/languages/mel.js","../node_modules/highlight.js/lib/languages/mercury.js","../node_modules/highlight.js/lib/languages/mipsasm.js","../node_modules/highlight.js/lib/languages/mizar.js","../node_modules/highlight.js/lib/languages/mojolicious.js","../node_modules/highlight.js/lib/languages/monkey.js","../node_modules/highlight.js/lib/languages/moonscript.js","../node_modules/highlight.js/lib/languages/n1ql.js","../node_modules/highlight.js/lib/languages/nestedtext.js","../node_modules/highlight.js/lib/languages/nginx.js","../node_modules/highlight.js/lib/languages/nim.js","../node_modules/highlight.js/lib/languages/nix.js","../node_modules/highlight.js/lib/languages/node-repl.js","../node_modules/highlight.js/lib/languages/nsis.js","../node_modules/highlight.js/lib/languages/objectivec.js","../node_modules/highlight.js/lib/languages/ocaml.js","../node_modules/highlight.js/lib/languages/openscad.js","../node_modules/highlight.js/lib/languages/oxygene.js","../node_modules/highlight.js/lib/languages/parser3.js","../node_modules/highlight.js/lib/languages/perl.js","../node_modules/highlight.js/lib/languages/pf.js","../node_modules/highlight.js/lib/languages/pgsql.js","../node_modules/highlight.js/lib/languages/php-template.js","../node_modules/highlight.js/lib/languages/php.js","../node_modules/highlight.js/lib/languages/plaintext.js","../node_modules/highlight.js/lib/languages/pony.js","../node_modules/highlight.js/lib/languages/powershell.js","../node_modules/highlight.js/lib/languages/processing.js","../node_modules/highlight.js/lib/languages/profile.js","../node_modules/highlight.js/lib/languages/prolog.js","../node_modules/highlight.js/lib/languages/properties.js","../node_modules/highlight.js/lib/languages/protobuf.js","../node_modules/highlight.js/lib/languages/puppet.js","../node_modules/highlight.js/lib/languages/purebasic.js","../node_modules/highlight.js/lib/languages/python-repl.js","../node_modules/highlight.js/lib/languages/python.js","../node_modules/highlight.js/lib/languages/q.js","../node_modules/highlight.js/lib/languages/qml.js","../node_modules/highlight.js/lib/languages/r.js","../node_modules/highlight.js/lib/languages/reasonml.js","../node_modules/highlight.js/lib/languages/rib.js","../node_modules/highlight.js/lib/languages/roboconf.js","../node_modules/highlight.js/lib/languages/routeros.js","../node_modules/highlight.js/lib/languages/rsl.js","../node_modules/highlight.js/lib/languages/ruby.js","../node_modules/highlight.js/lib/languages/ruleslanguage.js","../node_modules/highlight.js/lib/languages/rust.js","../node_modules/highlight.js/lib/languages/sas.js","../node_modules/highlight.js/lib/languages/scala.js","../node_modules/highlight.js/lib/languages/scheme.js","../node_modules/highlight.js/lib/languages/scilab.js","../node_modules/highlight.js/lib/languages/scss.js","../node_modules/highlight.js/lib/languages/shell.js","../node_modules/highlight.js/lib/languages/smali.js","../node_modules/highlight.js/lib/languages/smalltalk.js","../node_modules/highlight.js/lib/languages/sml.js","../node_modules/highlight.js/lib/languages/sqf.js","../node_modules/highlight.js/lib/languages/sql.js","../node_modules/highlight.js/lib/languages/stan.js","../node_modules/highlight.js/lib/languages/stata.js","../node_modules/highlight.js/lib/languages/step21.js","../node_modules/highlight.js/lib/languages/stylus.js","../node_modules/highlight.js/lib/languages/subunit.js","../node_modules/highlight.js/lib/languages/swift.js","../node_modules/highlight.js/lib/languages/taggerscript.js","../node_modules/highlight.js/lib/languages/tap.js","../node_modules/highlight.js/lib/languages/tcl.js","../node_modules/highlight.js/lib/languages/thrift.js","../node_modules/highlight.js/lib/languages/tp.js","../node_modules/highlight.js/lib/languages/twig.js","../node_modules/highlight.js/lib/languages/typescript.js","../node_modules/highlight.js/lib/languages/vala.js","../node_modules/highlight.js/lib/languages/vbnet.js","../node_modules/highlight.js/lib/languages/vbscript-html.js","../node_modules/highlight.js/lib/languages/vbscript.js","../node_modules/highlight.js/lib/languages/verilog.js","../node_modules/highlight.js/lib/languages/vhdl.js","../node_modules/highlight.js/lib/languages/vim.js","../node_modules/highlight.js/lib/languages/wasm.js","../node_modules/highlight.js/lib/languages/wren.js","../node_modules/highlight.js/lib/languages/x86asm.js","../node_modules/highlight.js/lib/languages/xl.js","../node_modules/highlight.js/lib/languages/xml.js","../node_modules/highlight.js/lib/languages/xquery.js","../node_modules/highlight.js/lib/languages/yaml.js","../node_modules/highlight.js/lib/languages/zephir.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@hookform/resolvers/src/validateFieldsNatively.ts","../node_modules/@hookform/resolvers/src/toNestError.ts","../node_modules/@hookform/resolvers/yup/src/yup.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../node_modules/framer-motion/dist/es/utils/use-force-update.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/frameloop/data.mjs","../node_modules/framer-motion/dist/es/frameloop/on-next-frame.mjs","../node_modules/framer-motion/dist/es/frameloop/index.mjs","../node_modules/framer-motion/dist/es/frameloop/create-render-step.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/projection/node/id.mjs","../node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/clamp.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/utils/process.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/utils/warn-once.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../node_modules/framer-motion/dist/es/value/types/utils.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/logic/shouldSubscribeByName.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/useController.ts","../node_modules/react-hook-form/src/useWatch.ts","../node_modules/react-hook-form/src/useFormState.ts","../node_modules/react-hook-form/src/controller.tsx","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/logic/generateId.ts","../node_modules/react-hook-form/src/logic/getFocusFieldName.ts","../node_modules/react-hook-form/src/logic/getValidationModes.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/iterateFieldsByAction.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/append.ts","../node_modules/react-hook-form/src/utils/fillEmptyArray.ts","../node_modules/react-hook-form/src/utils/insert.ts","../node_modules/react-hook-form/src/utils/move.ts","../node_modules/react-hook-form/src/utils/prepend.ts","../node_modules/react-hook-form/src/utils/remove.ts","../node_modules/react-hook-form/src/utils/swap.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/update.ts","../node_modules/react-hook-form/src/useFieldArray.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasPromiseValidation.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","../node_modules/react-hook-form/src/useForm.ts","../node_modules/tslib/tslib.es6.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../node_modules/html-parse-stringify/src/parse.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/TransWithoutContext.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/index.js","../node_modules/@mui/material/locale/index.js","locales/config-lang.js","locales/langs/en.js","locales/langs/fr.js","locales/langs/vn.js","locales/langs/cn.js","locales/langs/ar.js","locales/i18n.js","utils/mapboxgl.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/differenceInYears/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/differenceInMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/isLastDayOfMonth/index.js","../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/differenceInDays/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/startOfHour/index.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/@date-io/date-fns/build/index.esm.js","../node_modules/date-fns/esm/formatISO/index.js","../node_modules/date-fns/esm/addSeconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/differenceInQuarters/index.js","../node_modules/date-fns/esm/differenceInWeeks/index.js","../node_modules/date-fns/esm/differenceInHours/index.js","../node_modules/date-fns/esm/differenceInMinutes/index.js","../node_modules/date-fns/esm/differenceInSeconds/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isSameHour/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/setDate/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/eachDayOfInterval/index.js","../node_modules/@mui/x-date-pickers/AdapterDateFns/index.js","auth/AuthGuard.js","auth/GuestGuard.js","../node_modules/@mui/lab/Masonry/masonryClasses.js","../node_modules/@mui/lab/Masonry/Masonry.js","layouts/main/nav/config-navigation.js","layouts/main/styles.js","layouts/main/ListDesktop.js","layouts/main/ListMobile.js","layouts/main/Footer.js","../node_modules/@mui/material/AppBar/appBarClasses.js","../node_modules/@mui/material/AppBar/AppBar.js","../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js","../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js","../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js","../node_modules/@motionone/utils/dist/is-function.es.js","../node_modules/@motionone/utils/dist/progress.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js","../node_modules/@motionone/utils/dist/velocity.es.js","../node_modules/@motionone/utils/dist/noop.es.js","../node_modules/@motionone/utils/dist/mix.es.js","../node_modules/@motionone/utils/dist/offset.es.js","../node_modules/@motionone/utils/dist/is-number.es.js","../node_modules/@motionone/utils/dist/easing.es.js","../node_modules/@motionone/utils/dist/is-easing-list.es.js","../node_modules/@motionone/utils/dist/wrap.es.js","../node_modules/@motionone/utils/dist/interpolate.es.js","../node_modules/@motionone/utils/dist/clamp.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js","../node_modules/@motionone/utils/dist/is-string.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js","../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js","../node_modules/@motionone/dom/dist/gestures/resize/index.es.js","../node_modules/framer-motion/dist/es/value/use-scroll.mjs","hooks/useOffSetTop.js","hooks/useActiveLink.js","../node_modules/@mui/material/ListItemIcon/ListItemIcon.js","components/nav-section/mini/styles.js","locales/useLocales.js","locales/ThemeLocalization.js","auth/RoleBasedGuard.js","components/nav-section/mini/NavItem.js","components/nav-section/mini/NavList.js","components/nav-section/mini/NavSectionMini.js","components/nav-section/vertical/styles.js","components/nav-section/vertical/NavItem.js","components/nav-section/vertical/NavList.js","components/nav-section/vertical/NavSectionVertical.js","components/nav-section/horizontal/styles.js","components/nav-section/horizontal/NavItem.js","components/nav-section/horizontal/NavList.js","components/nav-section/horizontal/NavSectionHorizontal.js","layouts/main/nav/mobile/styles.js","layouts/main/nav/mobile/NavItem.js","layouts/main/nav/mobile/NavList.js","layouts/main/nav/mobile/NavMobile.js","layouts/main/nav/desktop/styles.js","layouts/main/nav/desktop/NavItem.js","layouts/main/nav/desktop/NavList.js","layouts/main/nav/desktop/NavDesktop.js","layouts/main/Header.js","layouts/main/MainLayout.js","layouts/compact/Header.js","layouts/compact/CompactLayout.js","layouts/dashboard/Main.js","layouts/dashboard/nav/config-navigation.js","layouts/dashboard/header/Searchbar.js","../node_modules/@mui/icons-material/esm/Settings.js","../node_modules/@mui/icons-material/esm/Logout.js","layouts/dashboard/header/AccountPopover.js","components/badge-status/styles.js","layouts/dashboard/header/Header.js","layouts/dashboard/nav/NavToggleButton.js","layouts/dashboard/nav/NavMini.js","layouts/dashboard/nav/NavAccount.js","layouts/dashboard/nav/NavVertical.js","layouts/dashboard/nav/NavHorizontal.js","layouts/dashboard/DashboardLayout.js","routes/elements.js","routes/index.js","theme/shadows.js","theme/customShadows.js","theme/overrides/Fab.js","theme/overrides/Chip.js","theme/overrides/Alert.js","theme/overrides/Button.js","theme/overrides/Switch.js","theme/overrides/Progress.js","theme/overrides/Pagination.js","theme/overrides/ButtonGroup.js","theme/overrides/ToggleButton.js","theme/overrides/index.js","theme/overrides/Tabs.js","theme/overrides/Card.js","theme/overrides/Menu.js","theme/overrides/Link.js","theme/overrides/Input.js","theme/overrides/Radio.js","theme/overrides/Badge.js","theme/overrides/List.js","theme/overrides/Table.js","theme/overrides/Paper.js","theme/overrides/Select.js","theme/overrides/Rating.js","theme/overrides/Dialog.js","theme/overrides/Avatar.js","theme/overrides/Slider.js","theme/overrides/Drawer.js","theme/overrides/Stepper.js","theme/overrides/Tooltip.js","theme/overrides/Popover.js","theme/overrides/SvgIcon.js","theme/overrides/Checkbox.js","theme/overrides/DataGrid.js","theme/overrides/Skeleton.js","theme/overrides/Timeline.js","theme/overrides/TreeView.js","theme/overrides/Backdrop.js","theme/overrides/Accordion.js","theme/overrides/Typography.js","theme/overrides/Breadcrumbs.js","theme/overrides/Autocomplete.js","theme/overrides/ControlLabel.js","theme/overrides/LoadingButton.js","theme/globalStyles.js","theme/index.js","components/scroll-to-top/ScrollToTop.js","App.js","serviceWorkerRegistration.js","reportWebVitals.js","index.js"],"sourcesContent":["import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport default function sub(date, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Subtract years and months\n var dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","// ----------------------------------------------------------------------\r\n\r\nexport const email = [\r\n 'nannie_abernathy70@yahoo.com',\r\n 'ashlynn_ohara62@gmail.com',\r\n 'milo.farrell@hotmail.com',\r\n 'violet.ratke86@yahoo.com',\r\n 'letha_lubowitz24@yahoo.com',\r\n 'aditya_greenfelder31@gmail.com',\r\n 'lenna_bergnaum27@hotmail.com',\r\n 'luella.ryan33@gmail.com',\r\n 'joana.simonis84@gmail.com',\r\n 'marjolaine_white94@gmail.com',\r\n 'vergie_block82@hotmail.com',\r\n 'vito.hudson@hotmail.com',\r\n 'tyrel_greenholt@gmail.com',\r\n 'dwight.block85@yahoo.com',\r\n 'mireya13@hotmail.com',\r\n 'dasia_jenkins@hotmail.com',\r\n 'benny89@yahoo.com',\r\n 'dawn.goyette@gmail.com',\r\n 'zella_hickle4@yahoo.com',\r\n 'avery43@hotmail.com',\r\n 'olen_legros@gmail.com',\r\n 'jimmie.gerhold73@hotmail.com',\r\n 'genevieve.powlowski@hotmail.com',\r\n 'louie.kuphal39@gmail.com',\r\n 'enoch.cruickshank@gmail.com',\r\n 'arlo_mccullough@gmail.com',\r\n 'sadie18@yahoo.com',\r\n 'aric67@gmail.com',\r\n 'mack_deckow53@gmail.com',\r\n 'constantin91@yahoo.com',\r\n 'lonny84@hotmail.com',\r\n 'gus56@hotmail.com',\r\n 'brennon64@yahoo.com',\r\n 'hortense.streich@hotmail.com',\r\n 'kallie_powlowski57@hotmail.com',\r\n 'meghan.kemmer@hotmail.com',\r\n 'bella.mraz14@yahoo.com',\r\n 'barney88@gmail.com',\r\n 'diamond_johns@hotmail.com',\r\n 'gus80@hotmail.com',\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const phoneNumber = [\r\n '365-374-4961',\r\n '904-966-2836',\r\n '399-757-9909',\r\n '692-767-2903',\r\n '990-588-5716',\r\n '955-439-2578',\r\n '226-924-4058',\r\n '552-917-1454',\r\n '285-840-9338',\r\n '306-269-2446',\r\n '883-373-6253',\r\n '476-509-8866',\r\n '201-465-1954',\r\n '538-295-9408',\r\n '531-492-6028',\r\n '981-699-7588',\r\n '500-268-4826',\r\n '205-952-3828',\r\n '222-255-5190',\r\n '408-439-8033',\r\n '272-940-8266',\r\n '812-685-8057',\r\n '353-801-5212',\r\n '606-285-8928',\r\n '202-767-8621',\r\n '222-830-0731',\r\n '964-940-3166',\r\n '262-702-2396',\r\n '886-261-9789',\r\n '352-390-5069',\r\n '343-907-8334',\r\n '575-347-2399',\r\n '749-228-5604',\r\n '774-452-2071',\r\n '607-841-0447',\r\n '395-619-2157',\r\n '233-834-0373',\r\n '586-880-2602',\r\n '746-772-0722',\r\n '638-615-3365,',\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const boolean = [\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n true,\r\n false,\r\n true,\r\n true,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const role = [\r\n 'Sarawak Research Society & UCSI University, Malaysia',\r\n 'Universitas Asa Indonesia, Indonesia',\r\n 'Zhejiang University',\r\n 'Naval Postgraduate School, USA',\r\n 'City University of Hong Kong',\r\n 'Victoria University of Wellington, New Zealand',\r\n 'Carleton University, Canada',\r\n 'University of Illinois, USA',\r\n 'project manager',\r\n 'ui designer',\r\n 'ui/ux designer',\r\n 'ui/ux designer',\r\n 'ui designer',\r\n 'backend developer',\r\n 'backend developer',\r\n 'front end developer',\r\n 'backend developer',\r\n 'full stack designer',\r\n 'full stack developer',\r\n 'backend developer',\r\n 'ux designer',\r\n 'ui designer',\r\n 'project manager',\r\n 'ui/ux designer',\r\n 'ui designer',\r\n 'project manager',\r\n 'full stack developer',\r\n 'hr manager',\r\n 'hr manager',\r\n 'ui/ux designer',\r\n 'project manager',\r\n 'full stack designer',\r\n 'ui designer',\r\n 'leader',\r\n 'front end developer',\r\n 'ui/ux designer',\r\n 'project manager',\r\n 'ui/ux designer',\r\n 'ui designer',\r\n 'full stack designer',\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const company = [\r\n 'Lueilwitz and Sons',\r\n 'Gleichner, Mueller and Tromp',\r\n 'Nikolaus - Leuschke',\r\n 'Hegmann, Kreiger and Bayer',\r\n 'Grimes Inc',\r\n 'Durgan - Murazik',\r\n 'Altenwerth, Medhurst and Roberts',\r\n 'Raynor Group',\r\n 'Mraz, Donnelly and Collins',\r\n 'Padberg - Bailey',\r\n 'Heidenreich, Stokes and Parker',\r\n 'Pagac and Sons',\r\n 'Rempel, Hand and Herzog',\r\n 'Dare - Treutel',\r\n 'Kihn, Marquardt and Crist',\r\n 'Nolan - Kunde',\r\n 'Wuckert Inc',\r\n 'Dibbert Inc',\r\n 'Goyette and Sons',\r\n 'Feest Group',\r\n 'Bosco and Sons',\r\n 'Bartell - Kovacek',\r\n 'Schimmel - Raynor',\r\n 'Tremblay LLC',\r\n 'Hills - Mitchell',\r\n 'Rogahn LLC',\r\n 'Kuhn, Osinski and Morar',\r\n 'Schmitt Inc',\r\n 'Breitenberg - Rosenbaum',\r\n \"O'Keefe, Schneider and Mraz\",\r\n 'Rohan, Langworth and Kling',\r\n 'Morar and Sons',\r\n 'Mraz LLC',\r\n 'Rowe, Parisian and Kub',\r\n 'Marquardt - Hane',\r\n 'Medhurst Group',\r\n 'Nikolaus - Lang',\r\n 'Effertz, Mohr and Olson',\r\n 'Anderson - Kris',\r\n 'Runolfsson Group',\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const fullAddress = [\r\n '19034 Verna Unions Apt. 164 - Honolulu, RI / 87535',\r\n '1147 Rohan Drive Suite 819 - Burlington, VT / 82021',\r\n '18605 Thompson Circle Apt. 086 - Idaho Falls, WV / 50337',\r\n '110 Lamar Station Apt. 730 - Hagerstown, OK / 49808',\r\n '36901 Elmer Spurs Apt. 762 - Miramar, DE / 92836',\r\n '2089 Runolfsson Harbors Suite 886 - Chapel Hill, TX / 32827',\r\n '279 Karolann Ports Apt. 774 - Prescott Valley, WV / 53905',\r\n '96607 Claire Square Suite 591 - St. Louis Park, HI / 40802',\r\n '9388 Auer Station Suite 573 - Honolulu, AK / 98024',\r\n '47665 Adaline Squares Suite 510 - Blacksburg, NE / 53515',\r\n '989 Vernice Flats Apt. 183 - Billings, NV / 04147',\r\n '91020 Wehner Locks Apt. 673 - Albany, WY / 68763',\r\n '585 Candelario Pass Suite 090 - Columbus, LA / 25376',\r\n '80988 Renner Crest Apt. 000 - Fargo, VA / 24266',\r\n '28307 Shayne Pike Suite 523 - North Las Vegas, AZ / 28550',\r\n '205 Farrell Highway Suite 333 - Rock Hill, OK / 63421',\r\n '253 Kara Motorway Suite 821 - Manchester, SD / 09331',\r\n '13663 Kiara Oval Suite 606 - Missoula, AR / 44478',\r\n '8110 Claire Port Apt. 703 - Anchorage, TN / 01753',\r\n '4642 Demetris Lane Suite 407 - Edmond, AZ / 60888',\r\n '74794 Asha Flat Suite 890 - Lancaster, OR / 13466',\r\n '8135 Keeling Pines Apt. 326 - Alexandria, MA / 89442',\r\n '441 Gibson Shores Suite 247 - Pasco, NM / 60678',\r\n '4373 Emelia Valley Suite 596 - Columbia, NM / 42586',\r\n '1946 Strosin Creek Apt. 279 - Casper, CO / 21335',\r\n '147 Rempel Center Apt. 305 - Centennial, TN / 09375',\r\n '78481 Floyd Mountains Apt. 184 - Glendale, SD / 18777',\r\n '129 Toy Pines Suite 339 - Idaho Falls, CT / 82070',\r\n '08945 Cremin Underpass Apt. 700 - Iowa City, GA / 33243',\r\n '20728 Dorcas Highway Suite 959 - Largo, ND / 99931',\r\n '492 Wilburn Park Apt. 746 - Bellevue, TN / 16077',\r\n '70530 Garfield Tunnel Suite 902 - Detroit, IA / 01664',\r\n '868 Kautzer Grove Suite 334 - Kearny, KS / 51368',\r\n '71189 Towne Forks Suite 519 - Anchorage, IL / 52636',\r\n '5070 Magdalena Neck Suite 096 - Cedar Rapids, PA / 01342',\r\n '6216 Jermain Walk Apt. 279 - Wilmington, MA / 55416',\r\n '1795 Kilback Stravenue Apt. 745 - Concord, MA / 96099',\r\n '831 Rolfson Expressway Apt. 878 - Norman, NY / 10239',\r\n '909 Nathaniel Lake Suite 769 - Sherman, NJ / 46523',\r\n '3690 Hans Ports Apt. 369 - Cary, KS / 48930',\r\n];\r\n\r\nexport const country = [\r\n 'Mulu National Park',\r\n 'Kubah National Park',\r\n 'Talang Island',\r\n 'Malaysia-China Frienship Park',\r\n 'Kuching',\r\n 'Comoros',\r\n 'Sierra Leone',\r\n 'Bermuda',\r\n 'Italy',\r\n 'Iran',\r\n 'Denmark',\r\n 'Congo',\r\n 'Cambodia',\r\n 'Virgin Islands, British',\r\n 'Bahamas',\r\n 'Italy',\r\n 'France',\r\n 'Portugal',\r\n 'Nepal',\r\n 'Saint Vincent and the Grenadines',\r\n 'Greenland',\r\n 'Maldives',\r\n 'Comoros',\r\n 'Bhutan',\r\n 'Tuvalu',\r\n 'Ethiopia',\r\n 'Myanmar',\r\n 'Libyan Arab Jamahiriya',\r\n 'Senegal',\r\n 'Malta',\r\n 'Kyrgyz Republic',\r\n 'Turks and Caicos Islands',\r\n 'Gibraltar',\r\n 'Sweden',\r\n 'Zambia',\r\n 'Isle of Man',\r\n 'Canada',\r\n 'Turkey',\r\n 'Samoa',\r\n 'Vietnam',\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const fullName = [\r\n 'Associate Professor Dr Hiram Ting',\r\n 'Ms. Lenny Yusrini',\r\n 'Professor Xinyue Zhou',\r\n 'Associate Professor Chong Wang',\r\n 'Professor Zhilin Yang',\r\n 'Professor Kim-Shyan Fam',\r\n 'Associate Professor Shaohan Alan Cai',\r\n 'Associate Professor Yunchuan Frank Liu',\r\n 'Chase Day',\r\n 'Shawn Manning',\r\n 'Soren Durham',\r\n 'Cortez Herring',\r\n 'Brycen Jimenez',\r\n 'Giana Brandt',\r\n 'Aspen Schmitt',\r\n 'Colten Aguilar',\r\n 'Angelique Morse',\r\n 'Selina Boyer',\r\n 'Lawson Bass',\r\n 'Ariana Lang',\r\n 'Amiah Pruitt',\r\n 'Harold Mcgrath',\r\n 'Esperanza Mcintyre',\r\n 'Mireya Conner',\r\n 'Jamie Kline',\r\n 'Laney Vazquez',\r\n 'Tiffany May',\r\n 'Dexter Shepherd',\r\n 'Jaqueline Spencer',\r\n 'Londyn Jarvis',\r\n 'Yesenia Butler',\r\n 'Jayvon Hull',\r\n 'Izayah Pope',\r\n 'Ayana Hunter',\r\n 'Isabell Bender',\r\n 'Desiree Schmidt',\r\n 'Aidan Stout',\r\n 'Jace Bush',\r\n 'Janiya Williamson',\r\n 'Hudson Alvarez',\r\n];\r\n\r\nexport const firstName = [\r\n 'Mossie',\r\n 'David',\r\n 'Ebba',\r\n 'Chester',\r\n 'Eula',\r\n 'Jaren',\r\n 'Boyd',\r\n 'Brady',\r\n 'Aida',\r\n 'Anastasia',\r\n 'Gregoria',\r\n 'Julianne',\r\n 'Ila',\r\n 'Elyssa',\r\n 'Lucio',\r\n 'Lewis',\r\n 'Jacinthe',\r\n 'Molly',\r\n 'Brown',\r\n 'Fritz',\r\n 'Keon',\r\n 'Ella',\r\n 'Ken',\r\n 'Whitney',\r\n 'Monte',\r\n 'Rose',\r\n 'Shana',\r\n 'Devon',\r\n 'Jaleel',\r\n 'Laury',\r\n 'Brooks',\r\n 'Bruce',\r\n 'Avery',\r\n 'Esperanza',\r\n 'Helene',\r\n 'Heloise',\r\n 'Elinor',\r\n 'Adeline',\r\n 'Haley',\r\n 'Anabelle',\r\n];\r\n\r\nexport const lastName = [\r\n 'Carroll',\r\n 'Simonis',\r\n 'Yost',\r\n 'Hand',\r\n 'Emmerich',\r\n 'Wilderman',\r\n 'Howell',\r\n 'Sporer',\r\n 'Boehm',\r\n 'Morar',\r\n 'Koch',\r\n 'Reynolds',\r\n 'Padberg',\r\n 'Watsica',\r\n 'Upton',\r\n 'Yundt',\r\n 'Pfeffer',\r\n 'Parker',\r\n 'Zulauf',\r\n 'Treutel',\r\n 'McDermott',\r\n 'McDermott',\r\n 'Cruickshank',\r\n 'Parisian',\r\n 'Auer',\r\n 'Turner',\r\n 'Dooley',\r\n 'Wiegand',\r\n 'Abbott',\r\n 'Wisoky',\r\n 'Fahey',\r\n 'Satterfield',\r\n 'Bahringer',\r\n 'Schulist',\r\n 'Durgan',\r\n 'Carroll',\r\n 'Jones',\r\n 'Leffler',\r\n 'Gutkowski',\r\n 'Homenick',\r\n];\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const price = [\r\n 16.19, 35.71, 34.3, 93.1, 55.47, 89.09, 44.39, 26.92, 45.35, 26.96, 78.22, 35.54, 90.69, 63.61,\r\n 67.55, 94.75, 75.78, 39.6, 52.84, 72.8, 83.08, 85.02, 69.22, 60.96, 84.7, 16.68, 78.83, 58.07,\r\n 65.8, 55.69, 87.55, 44.74, 27.42, 84, 76.17, 43.83, 76.39, 17.42, 42.3, 12.45,\r\n];\r\n\r\nexport const rating = [\r\n 2.5, 2, 4.9, 2, 4, 5, 4.9, 5, 3.7, 2.5, 2, 4.9, 4.8, 4, 2, 3.7, 1.4, 2.4, 1.8, 5, 2.9, 3.9, 3.9,\r\n 1.8, 5, 2.6, 3.1, 3.9, 1.2, 3.2, 4.1, 5, 4.5, 4.1, 2.3, 2.4, 5, 3.1, 4.9, 1.7,\r\n];\r\n\r\nexport const age = [\r\n 52, 43, 56, 25, 22, 53, 38, 50, 55, 37, 16, 27, 55, 41, 52, 32, 34, 52, 31, 53, 23, 48, 43, 41,\r\n 19, 21, 17, 29, 32, 54, 38, 34, 49, 33, 55, 50, 24, 27, 23, 23,\r\n];\r\n\r\nexport const percent = [\r\n 8.62, 86.36, 73.99, 79, 63.41, 58.79, 12.32, 88.44, 45.06, 91.64, 88.41, 73.08, 39.14, 89.34,\r\n 43.37, 34.45, 24.04, 80.96, 72.91, 47.59, 2.46, 3.33, 99.31, 47.6, 34.09, 50.61, 66.13, 46.69,\r\n 92.43, 31.41, 90.85, 36.32, 38.84, 25.6, 87.61, 1.31, 89.32, 41.23, 85.9, 62.63,\r\n];\r\n","export const video123 = [\r\n `https://www.dropbox.com/s/odzycivuo9cy5rg/video_01.mp4?dl=0`,\r\n `https://www.dropbox.com/s/7cx04n8rr4w5rbg/video_02.mp4?dl=0`,\r\n];\r\n","import { sub } from 'date-fns';\r\n//\r\nimport {\r\n age,\r\n role,\r\n price,\r\n title,\r\n email,\r\n rating,\r\n percent,\r\n country,\r\n company,\r\n boolean,\r\n sentence,\r\n lastName,\r\n fullName,\r\n firstName,\r\n description,\r\n fullAddress,\r\n phoneNumber,\r\n jobTitle,\r\n tourName,\r\n blogTitle,\r\n brandsName,\r\n courseTitle,\r\n jobCategories,\r\n video123,\r\n} from './assets';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst _mock = {\r\n id: (index) => `e99f09a7-dd88-49d5-b1c8-1daf80c2d7b${index + 1}`,\r\n email: (index) => email[index],\r\n phoneNumber: (index) => phoneNumber[index],\r\n time: (index) => sub(new Date(), { days: index, hours: index }),\r\n boolean: (index) => boolean[index],\r\n role: (index) => role[index],\r\n company: (index) => company[index],\r\n address: {\r\n fullAddress: (index) => fullAddress[index],\r\n country: (index) => country[index],\r\n },\r\n name: {\r\n firstName: (index) => firstName[index],\r\n lastName: (index) => lastName[index],\r\n fullName: (index) => fullName[index],\r\n },\r\n text: {\r\n title: (index) => title[index],\r\n sentence: (index) => sentence[index],\r\n description: (index) => description[index],\r\n blogTitle: (index) => blogTitle[index],\r\n courseTitle: (index) => courseTitle[index],\r\n jobTitle: (index) => jobTitle[index],\r\n jobCategories: (index) => jobCategories[index],\r\n tourName: (index) => tourName[index],\r\n brandsName: (index) => brandsName[index],\r\n },\r\n number: {\r\n percent: (index) => percent[index],\r\n rating: (index) => rating[index],\r\n age: (index) => age[index],\r\n price: (index) => price[index],\r\n },\r\n image: {\r\n cover: (index) =>\r\n `https://api-dev-minimal-v4.vercel.app/assets/images/covers/cover_${index + 1}.jpg`,\r\n product: (index) =>\r\n `https://api-dev-minimal-v4.vercel.app/assets/images/products/product_${index + 1}.jpg`,\r\n avatar: (index) =>\r\n `https://api-dev-minimal-v4.vercel.app/assets/images/avatars/avatar_${index + 1}.jpg`,\r\n company: (index) => `/assets/images/company/company_${index + 1}.png`,\r\n marketing: (index) => `/assets/images/marketing/marketing_${index + 1}.jpg`,\r\n travel: (index) => `/assets/images/travel/travel_${index + 1}.jpg`,\r\n career: (index) => `/assets/images/career/career_${index + 1}.jpg`,\r\n course: (index) => `/assets/images/course/course_${index + 1}.jpg`,\r\n },\r\n video: (index) => video123[index],\r\n jobTitle,\r\n jobCategories,\r\n shareLinks: {\r\n facebook: `facebook/user-name`,\r\n instagram: `instagram/user-name`,\r\n linkedin: `linkedin/user-name`,\r\n twitter: `twitter/user-name`,\r\n },\r\n};\r\n\r\nexport default _mock;\r\n","import _mock from '../_mock';\r\nimport { randomNumberRange, randomInArray } from '../utils';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _appRelated = ['Chrome', 'Drive', 'Dropbox', 'Evernote', 'Github'].map(\r\n (name, index) => ({\r\n id: _mock.id(index),\r\n name,\r\n system: (index === 2 && 'Windows') || (index === 4 && 'Windows') || 'Mac',\r\n price: index === 0 || index === 2 || index === 4 ? 0 : _mock.number.price(index),\r\n rating: _mock.number.rating(index),\r\n review: randomNumberRange(999, 99999),\r\n shortcut:\r\n (name === 'Chrome' && '/assets/icons/apps/ic_chrome.svg') ||\r\n (name === 'Drive' && '/assets/icons/apps/ic_drive.svg') ||\r\n (name === 'Dropbox' && '/assets/icons/apps/ic_dropbox.svg') ||\r\n (name === 'Evernote' && '/assets/icons/apps/ic_evernote.svg') ||\r\n '/assets/icons/apps/ic_github.svg',\r\n })\r\n);\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _appInstalled = ['de', 'en', 'fr', 'kr', 'us'].map((country, index) => ({\r\n id: _mock.id(index),\r\n name: ['Germany', 'England', 'France', 'Korean', 'USA'][index],\r\n android: randomNumberRange(999, 99999),\r\n windows: randomNumberRange(999, 99999),\r\n apple: randomNumberRange(999, 99999),\r\n flag: `/assets/icons/flags/ic_flag_${country}.svg`,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _appAuthors = [...Array(3)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n avatar: _mock.image.avatar(index),\r\n favourite: randomNumberRange(9999, 19999),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _appInvoices = [...Array(5)].map((_, index) => ({\r\n id: `${Date.now() + index}`,\r\n price: _mock.number.price(index),\r\n category: randomInArray(['Android', 'Mac', 'Windows']),\r\n status: randomInArray(['paid', 'out_of_date', 'in_progress']),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _appFeatured = [...Array(3)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: [\r\n 'Harry Potter and the Deathly Hallows - Part 2',\r\n 'Disney Zombies 2',\r\n 'Lightroom mobile - Koloro',\r\n ][index],\r\n description: _mock.text.title(index),\r\n image: _mock.image.cover(index),\r\n}));\r\n","import _mock from '../_mock';\r\nimport { randomNumberRange, randomInArray } from '../utils';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _userAbout = {\r\n id: _mock.id(1),\r\n cover: _mock.image.cover(1),\r\n role: 'UI Designer',\r\n follower: randomNumberRange(999, 99999),\r\n following: randomNumberRange(999, 99999),\r\n quote:\r\n 'Tart I love sugar plum I love oat cake. Sweet roll caramels I love jujubes. Topping cake wafer..',\r\n country: _mock.address.country(1),\r\n email: _mock.email(1),\r\n company: _mock.company(1),\r\n school: _mock.company(2),\r\n socialLinks: {\r\n facebookLink: `https://www.facebook.com/caitlyn.kerluke`,\r\n instagramLink: `https://www.instagram.com/caitlyn.kerluke`,\r\n linkedinLink: `https://www.linkedin.com/in/caitlyn.kerluke`,\r\n twitterLink: `https://www.twitter.com/caitlyn.kerluke`,\r\n },\r\n};\r\n\r\nexport const _userFollowers = [...Array(18)].map((_, index) => ({\r\n id: _mock.id(index),\r\n avatarUrl: _mock.image.avatar(index),\r\n name: _mock.name.fullName(index),\r\n country: _mock.address.country(index),\r\n isFollowed: _mock.boolean(index),\r\n}));\r\n\r\nexport const _userFriends = [...Array(18)].map((_, index) => ({\r\n id: _mock.id(index),\r\n avatarUrl: _mock.image.avatar(index),\r\n name: _mock.name.fullName(index),\r\n role: _mock.role(index),\r\n}));\r\n\r\nexport const _userGallery = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: _mock.text.title(index),\r\n postAt: _mock.time(index),\r\n imageUrl: _mock.image.cover(index),\r\n}));\r\n\r\nexport const _userFeeds = [...Array(3)].map((_, index) => ({\r\n id: _mock.id(index),\r\n author: {\r\n id: _mock.id(8),\r\n avatarUrl: _mock.image.avatar(1),\r\n name: 'Caitlyn Kerluke',\r\n },\r\n isLiked: true,\r\n createdAt: _mock.time(index),\r\n media: _mock.image.cover(index),\r\n message: _mock.text.sentence(index),\r\n personLikes: [...Array(36)].map((__, personIndex) => ({\r\n name: _mock.name.fullName(personIndex),\r\n avatarUrl: _mock.image.avatar(personIndex + 2),\r\n })),\r\n comments: (index === 2 && []) || [\r\n {\r\n id: _mock.id(7),\r\n author: {\r\n id: _mock.id(8),\r\n avatarUrl: _mock.image.avatar(randomInArray([2, 3, 4, 5, 6]) || 2),\r\n name: _mock.name.fullName(index + 5),\r\n },\r\n createdAt: _mock.time(2),\r\n message: 'Praesent venenatis metus at',\r\n },\r\n {\r\n id: _mock.id(9),\r\n author: {\r\n id: _mock.id(10),\r\n avatarUrl: _mock.image.avatar(randomInArray([7, 8, 9, 10, 11]) || 7),\r\n name: _mock.name.fullName(index + 6),\r\n },\r\n createdAt: _mock.time(3),\r\n message:\r\n 'Etiam rhoncus. Nullam vel sem. Pellentesque libero tortor, tincidunt et, tincidunt eget, semper nec, quam. Sed lectus.',\r\n },\r\n ],\r\n}));\r\n\r\nexport const _userCards = [...Array(24)].map((_, index) => ({\r\n id: _mock.id(index),\r\n avatarUrl: _mock.image.avatar(index),\r\n cover: _mock.image.cover(index),\r\n name: _mock.name.fullName(index),\r\n follower: randomNumberRange(999, 99999),\r\n following: randomNumberRange(999, 99999),\r\n totalPosts: randomNumberRange(999, 99999),\r\n role: _mock.role(index),\r\n}));\r\n\r\nexport const _userPayment = [...Array(2)].map((_, index) => ({\r\n id: _mock.id(index),\r\n cardNumber: ['**** **** **** 1234', '**** **** **** 5678', '**** **** **** 7878'][index],\r\n cardType: ['master_card', 'visa', 'master_card'][index],\r\n}));\r\n\r\nexport const _userAddressBook = [...Array(4)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n phone: _mock.phoneNumber(index),\r\n country: _mock.address.country(index),\r\n state: 'New Hampshire',\r\n city: 'East Sambury',\r\n street: '41256 Kamille Turnpike',\r\n zipCode: '85807',\r\n}));\r\n\r\nexport const _userInvoices = [...Array(10)].map((_, index) => ({\r\n id: _mock.id(index),\r\n createdAt: _mock.time(index),\r\n price: _mock.number.price(index),\r\n}));\r\n\r\nexport const _userList = [...Array(24)].map((_, index) => ({\r\n id: _mock.id(index),\r\n avatarUrl: _mock.image.avatar(index),\r\n name: _mock.name.fullName(index),\r\n email: _mock.email(index),\r\n phoneNumber: _mock.phoneNumber(index),\r\n address: '908 Jack Locks',\r\n country: _mock.address.country(index),\r\n state: 'Virginia',\r\n city: 'Rancho Cordova',\r\n zipCode: '85807',\r\n company: _mock.company(index),\r\n isVerified: _mock.boolean(index),\r\n status: randomInArray(['active', 'banned']),\r\n role: _mock.role(index),\r\n}));\r\n","import _mock from '../_mock';\r\nimport { randomInArray } from '../utils';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst GB = 1000000000 * 24;\r\n\r\nconst FILE_TYPE = [\r\n 'jpg',\r\n 'mp3',\r\n 'mp4',\r\n 'pdf',\r\n 'jpg',\r\n 'jpg',\r\n 'txt',\r\n 'psd',\r\n 'doc',\r\n 'docx',\r\n 'xls',\r\n 'xlsx',\r\n 'zip',\r\n 'rar',\r\n 'iso',\r\n 'ai',\r\n 'esp',\r\n 'ppt',\r\n 'pptx',\r\n 'wav',\r\n 'm4v',\r\n 'jpg',\r\n 'jpg',\r\n 'pdf',\r\n];\r\n\r\nconst FOLDER_NAME = ['Docs', 'Projects', 'Work', 'Training', 'Sport', 'Foods'];\r\n\r\nconst FILE_NAME = [\r\n 'cover_2.jpg',\r\n 'design_suriname_2015.mp3',\r\n 'expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\r\n 'money-popup-crack.pdf',\r\n 'cover_4.jpg',\r\n 'cover_6.jpg',\r\n 'large_news.txt',\r\n 'nauru-6015-small-fighter-left-gender.psd',\r\n 'tv-xs.doc',\r\n 'gustavia-entertainment-productivity.docx',\r\n 'vintage_bahrain_saipan.xls',\r\n 'indonesia-quito-nancy-grace-left-glad.xlsx',\r\n 'legislation-grain.zip',\r\n 'large_energy_dry_philippines.rar',\r\n 'footer-243-ecuador.iso',\r\n 'kyrgyzstan-04795009-picabo-street-guide-style.ai',\r\n 'india-data-large-gk-chesterton-mother.esp',\r\n 'footer-barbados-celine-dion.ppt',\r\n 'socio_respectively_366996.pptx',\r\n 'socio_ahead_531437_sweden_popup.wav',\r\n 'trinidad_samuel-morse_bring.m4v',\r\n 'cover_12.jpg',\r\n 'cover_18.jpg',\r\n 'xl_david-blaine_component_tanzania_books.pdf',\r\n];\r\n\r\nconst FILE_URL = [\r\n _mock.image.cover(1),\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\r\n _mock.image.cover(3),\r\n _mock.image.cover(5),\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/large_news.txt',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/nauru-6015-small-fighter-left-gender.psd',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/tv-xs.doc',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/gustavia-entertainment-productivity.docx',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/vintage_bahrain_saipan.xls',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/indonesia-quito-nancy-grace-left-glad.xlsx',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/legislation-grain.zip',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/large_energy_dry_philippines.rar',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/footer-243-ecuador.iso',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/kyrgyzstan-04795009-picabo-street-guide-style.ai',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/india-data-large-gk-chesterton-mother.esp',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/footer-barbados-celine-dion.ppt',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/socio_respectively_366996.pptx',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/socio_ahead_531437_sweden_popup.wav',\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/trinidad_samuel-morse_bring.m4v',\r\n _mock.image.cover(11),\r\n _mock.image.cover(17),\r\n 'https://www.cloud.com/s/c218bo6kjuqyv66/xl_david-blaine_component_tanzania_books.pdf',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const SHARED_PERSON = [...Array(24)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n email: _mock.email(index),\r\n avatar: _mock.image.avatar(index),\r\n permission: randomInArray(['view', 'edit']),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _folders = FOLDER_NAME.map((folder, index) => ({\r\n id: `${_mock.id(index)}_folders`,\r\n name: folder,\r\n size: GB / ((index + 1) * 10),\r\n type: 'folder',\r\n totalFiles: (index + 1) * 100,\r\n isFavorited: _mock.boolean(index + 1),\r\n shared: SHARED_PERSON.slice(index, 5),\r\n url: FILE_URL[index],\r\n tags: ['Docs', 'Projects', 'Work', 'Training', 'Sport', 'Foods'],\r\n dateCreated: _mock.time(index),\r\n dateModified: _mock.time(index),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _files = FILE_NAME.map((file, index) => ({\r\n id: `${_mock.id(index)}_files`,\r\n name: file,\r\n size: GB / ((index + 1) * 500),\r\n type: FILE_TYPE[index],\r\n isFavorited: _mock.boolean(index + 1),\r\n shared: index === 0 ? null : SHARED_PERSON.slice(index, 8),\r\n url: FILE_URL[index],\r\n tags: ['Docs', 'Projects', 'Work', 'Training', 'Sport', 'Foods'],\r\n dateCreated: _mock.time(index),\r\n dateModified: _mock.time(index),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _allFiles = [..._folders, ..._files];\r\n","// ----------------------------------------------------------------------\r\n\r\nconst LICENSES = ['Standard', 'Standard Plus', 'Extended'];\r\n\r\nexport const _homePlans = [...Array(3)].map((_, index) => ({\r\n license: LICENSES[index],\r\n commons: ['One end products', '12 months updates', '6 months of support'],\r\n options: [\r\n 'JavaScript version',\r\n 'TypeScript version',\r\n 'Design Resources',\r\n 'Commercial applications',\r\n ],\r\n icons: [\r\n '/assets/icons/platforms/ic_sketch.svg',\r\n '/assets/icons/platforms/ic_figma.svg',\r\n '/assets/icons/platforms/ic_js.svg',\r\n '/assets/icons/platforms/ic_ts.svg',\r\n ],\r\n}));\r\n\r\nexport const _pricingPlans = [\r\n {\r\n subscription: 'basic',\r\n price: 0,\r\n caption: 'forever',\r\n lists: [\r\n { text: '3 prototypes', isAvailable: true },\r\n { text: '3 boards', isAvailable: true },\r\n { text: 'Up to 5 team members', isAvailable: false },\r\n { text: 'Advanced security', isAvailable: false },\r\n { text: 'Permissions & workflows', isAvailable: false },\r\n ],\r\n labelAction: 'current plan',\r\n },\r\n {\r\n subscription: 'starter',\r\n price: 4.99,\r\n caption: 'saving $24 a year',\r\n lists: [\r\n { text: '3 prototypes', isAvailable: true },\r\n { text: '3 boards', isAvailable: true },\r\n { text: 'Up to 5 team members', isAvailable: true },\r\n { text: 'Advanced security', isAvailable: false },\r\n { text: 'Permissions & workflows', isAvailable: false },\r\n ],\r\n labelAction: 'choose starter',\r\n },\r\n {\r\n subscription: 'premium',\r\n price: 9.99,\r\n caption: 'saving $124 a year',\r\n lists: [\r\n { text: '3 prototypes', isAvailable: true },\r\n { text: '3 boards', isAvailable: true },\r\n { text: 'Up to 5 team members', isAvailable: true },\r\n { text: 'Advanced security', isAvailable: true },\r\n { text: 'Permissions & workflows', isAvailable: true },\r\n ],\r\n labelAction: 'choose premium',\r\n },\r\n];\r\n","import _mock from '../_mock';\r\nimport { randomInArray } from '../utils';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _categories = [\r\n { label: 'Marketing', path: '' },\r\n { label: 'Community', path: '' },\r\n { label: 'Tutorials', path: '' },\r\n { label: 'Business', path: '' },\r\n { label: 'Management', path: '' },\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _tags = [\r\n { label: 'Marketing', path: '' },\r\n { label: 'Development', path: '' },\r\n { label: 'Banking', path: '' },\r\n { label: 'HR & Recruting', path: '' },\r\n { label: 'Design', path: '' },\r\n { label: 'Management', path: '' },\r\n { label: 'Business', path: '' },\r\n { label: 'Community', path: '' },\r\n { label: 'Tutorials', path: '' },\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _testimonials = [...Array(8)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n role: _mock.role(index),\r\n avatar: _mock.image.avatar(index),\r\n postDate: _mock.time(index),\r\n rating: 5,\r\n review:\r\n 'Amazing experience i love it a lot. Thanks to the team that dreams come true, great! I appreciate there attitude and approach.',\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _socials = [\r\n {\r\n value: 'facebook',\r\n label: 'FaceBook',\r\n icon: 'carbon:logo-facebook',\r\n color: '#1877F2',\r\n },\r\n {\r\n value: 'instagram',\r\n label: 'Instagram',\r\n icon: 'carbon:logo-instagram',\r\n color: '#E02D69',\r\n },\r\n {\r\n value: 'linkedin',\r\n label: 'Linkedin',\r\n icon: 'carbon:logo-linkedin',\r\n color: '#007EBB',\r\n },\r\n {\r\n value: 'twitter',\r\n label: 'Twitter',\r\n icon: 'carbon:logo-twitter',\r\n color: '#00AAEC',\r\n },\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _carouselsMembers = [...Array(6)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n role: _mock.role(index),\r\n avatar: `/assets/images/portraits/portrait_${index + 1}.jpg`,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// export const _faqs = [...Array(8)].map((_, index) => ({\r\n// id: _mock.id(index),\r\n// value: `panel${index + 1}`,\r\n// heading: `Questions ${index + 1}`,\r\n// detail: _mock.text.description(index),\r\n// }));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _addressBooks = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n receiver: _mock.name.fullName(index),\r\n fullAddress: _mock.address.fullAddress(index),\r\n phoneNumber: _mock.phoneNumber(index),\r\n addressType: index === 0 ? 'Home' : 'Office',\r\n isDefault: index === 0,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _skills = [...Array(3)].map((_, index) => ({\r\n label: ['Development', 'Design', 'Marketing'][index],\r\n value: _mock.number.percent(index),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _contacts = [...Array(20)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n username: _mock.name.fullName(index),\r\n avatar: _mock.image.avatar(index),\r\n address: _mock.address.fullAddress(index),\r\n phone: _mock.phoneNumber(index),\r\n email: _mock.email(index),\r\n lastActivity: _mock.time(index),\r\n status: randomInArray(['online', 'offline', 'away', 'busy']),\r\n role: _mock.role(index),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _notifications = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: [\r\n 'Your order is placed',\r\n 'Sylvan King',\r\n 'You have new message',\r\n 'You have new mail',\r\n 'Delivery processing',\r\n ][index],\r\n description: [\r\n 'waiting for shipping',\r\n 'answered to your comment on the Minimal',\r\n '5 unread messages',\r\n 'sent from Guido Padberg',\r\n 'Your order is being shipped',\r\n ][index],\r\n avatar: [null, _mock.image.avatar(2), null, null, null][index],\r\n type: ['order_placed', 'friend_interactive', 'chat_message', 'mail', 'order_shipped'][index],\r\n createdAt: _mock.time(index),\r\n isUnRead: [true, true, false, false, false][index],\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _mapContact = [\r\n {\r\n latlng: [33, 65],\r\n address: _mock.address.fullAddress(1),\r\n phoneNumber: _mock.phoneNumber(1),\r\n },\r\n {\r\n latlng: [-12.5, 18.5],\r\n address: _mock.address.fullAddress(2),\r\n phoneNumber: _mock.phoneNumber(2),\r\n },\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// export const _socials = [\r\n// {\r\n// value: 'facebook',\r\n// name: 'FaceBook',\r\n// icon: 'eva:facebook-fill',\r\n// color: '#1877F2',\r\n// path: 'https://www.facebook.com/caitlyn.kerluke',\r\n// },\r\n// {\r\n// value: 'instagram',\r\n// name: 'Instagram',\r\n// icon: 'ant-design:instagram-filled',\r\n// color: '#E02D69',\r\n// path: 'https://www.instagram.com/caitlyn.kerluke',\r\n// },\r\n// {\r\n// value: 'linkedin',\r\n// name: 'Linkedin',\r\n// icon: 'eva:linkedin-fill',\r\n// color: '#007EBB',\r\n// path: 'https://www.linkedin.com/caitlyn.kerluke',\r\n// },\r\n// {\r\n// value: 'twitter',\r\n// name: 'Twitter',\r\n// icon: 'eva:twitter-fill',\r\n// color: '#00AAEC',\r\n// path: 'https://www.twitter.com/caitlyn.kerluke',\r\n// },\r\n// ];\r\n\r\n\r\nconst LAT_LONG = [\r\n [33, 65],\r\n [-12.5, 18.5],\r\n [20.96, 26.27],\r\n];\r\n\r\nexport const _offices = ['Jordan', 'Canada', 'Portugal'].map((office, index) => ({\r\n id: _mock.id(index),\r\n country: office,\r\n address: _mock.address.fullAddress(index),\r\n phoneNumber: _mock.phoneNumber(index),\r\n email: _mock.email(index),\r\n photo: _mock.image.travel(index + 4),\r\n latlng: LAT_LONG[index],\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst BRANDS_NAME = [\r\n 'airbnb',\r\n 'dropbox',\r\n 'facebook',\r\n 'google',\r\n 'heroku',\r\n 'lenovo',\r\n 'microsoft',\r\n 'netflix',\r\n 'slack',\r\n 'spotify',\r\n 'tripadvisor',\r\n 'vimeo',\r\n];\r\n\r\nexport const _brands = BRANDS_NAME.map((brand, index) => ({\r\n id: _mock.id(index),\r\n name: brand,\r\n image: `/assets/logo/${brand}.svg`,\r\n}));\r\n\r\nexport const _brandsColor = BRANDS_NAME.map((brand, index) => ({\r\n id: _mock.id(index),\r\n name: brand,\r\n image: `/assets/logo/${brand}_original.svg`,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _faqs = [\r\n 'How do I subscribe?',\r\n 'How do I become a journal editor?',\r\n 'Registering a personal profile on Inquire',\r\n 'I would like a trial',\r\n].map((question, index) => ({\r\n id: _mock.id(index),\r\n question,\r\n answer:\r\n 'Amazing experience i love it a lot. Thanks to the team that dreams come true, great! I appreciate there attitude and approach.',\r\n}));\r\n\r\nexport const _faqsSupport = [\r\n `Inquire want to ensure you have a choice when it comes to accessing the insights and analysis in our eJournals, eBooks and eCase Studies. Find out more about flexible subscription and purchase options for:\r\n\r\n Individual journals, issues and articles\r\n Individual print and eBooks\r\n eCase Studies\r\n Daily Briefings and Expert Briefings - available for academic institutions only,\r\n Further information is available here.\r\n \r\n \r\n If your institution is interested in subscribing to our eCollections, or you would like to talk through the options available, please contact your regional representative or contact our Subscriptions team for details.`,\r\n `If you would like to become a journal editor, please contact the publisher that deals either with the journal you are interested in editing for, or one in the area that you specialise in. A list of our journals can be found here. Once you have picked the journal or journals that best suit you, click on the link to the journal's homepage and then drop into the Editorial Team link to locate the publisher's contact details.`,\r\n `New profile registrants should select the 'Register' option on Inquire and complete the registration process as per our User Guide. If you had a profile on the old platform, go straight to the login page and select the 'forgot your password\" link, to create a new password for the new site.`,\r\n `Curious to find out more about the content of our eJournal, eBook and eCase Collections? Your regional sales representative will be happy to provide you with a free trial.\r\n\r\n Please contact your local representative for further details.`,\r\n 'Free Shipping Code User Guide (Freeship Code)',\r\n 'How To Buy / Order On Shopee App',\r\n `Why I Didn't Receive the Verification Code (OTP)?`,\r\n `Frequently Asked Questions About Product Reviews / Comments`,\r\n `How to Login Shopee Account When Forgot/Lost Password`,\r\n].map((question, index) => ({\r\n id: _mock.id(index),\r\n question,\r\n answer:\r\n 'Amazing experience i love it a lot. Thanks to the team that dreams come true, great! I appreciate there attitude and approach.',\r\n}));","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _bankingContacts = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n email: _mock.email(index),\r\n avatar: _mock.image.avatar(index),\r\n}));\r\n\r\nexport const _bankingCreditCard = [\r\n {\r\n id: _mock.id(2),\r\n balance: 23432.03,\r\n cardType: 'mastercard',\r\n cardHolder: _mock.name.fullName(2),\r\n cardNumber: '**** **** **** 3640',\r\n cardValid: '11/22',\r\n },\r\n {\r\n id: _mock.id(3),\r\n balance: 18000.23,\r\n cardType: 'visa',\r\n cardHolder: _mock.name.fullName(3),\r\n cardNumber: '**** **** **** 8864',\r\n cardValid: '11/25',\r\n },\r\n {\r\n id: _mock.id(4),\r\n balance: 2000.89,\r\n cardType: 'mastercard',\r\n cardHolder: _mock.name.fullName(4),\r\n cardNumber: '**** **** **** 7755',\r\n cardValid: '11/22',\r\n },\r\n];\r\n\r\nexport const _bankingRecentTransitions = [\r\n {\r\n id: _mock.id(2),\r\n name: _mock.name.fullName(2),\r\n avatar: _mock.image.avatar(8),\r\n type: 'Income',\r\n message: 'Receive money from',\r\n category: 'Annette Black',\r\n date: 1627556358365,\r\n status: 'in_progress',\r\n amount: 811.45,\r\n },\r\n {\r\n id: _mock.id(3),\r\n name: _mock.name.fullName(3),\r\n avatar: _mock.image.avatar(9),\r\n type: 'Expenses',\r\n message: 'Payment for',\r\n category: 'Courtney Henry',\r\n date: 1627556329038,\r\n status: 'completed',\r\n amount: 436.03,\r\n },\r\n {\r\n id: _mock.id(4),\r\n name: _mock.name.fullName(4),\r\n avatar: _mock.image.avatar(12),\r\n type: 'Receive',\r\n message: 'Payment for',\r\n category: 'Theresa Webb',\r\n date: 1627556339677,\r\n status: 'failed',\r\n amount: 82.26,\r\n },\r\n {\r\n id: _mock.id(5),\r\n name: null,\r\n avatar: null,\r\n type: 'Expenses',\r\n message: 'Payment for',\r\n category: 'Beauty & Health',\r\n date: 1627547330510,\r\n status: 'completed',\r\n amount: 480.73,\r\n },\r\n {\r\n id: _mock.id(6),\r\n name: null,\r\n avatar: null,\r\n type: 'Expenses',\r\n message: 'Payment for',\r\n category: 'Books',\r\n date: 1627556347676,\r\n status: 'in_progress',\r\n amount: 11.45,\r\n },\r\n];\r\n","import _mock from '../_mock';\r\nimport { randomInArray } from '../utils';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _bookings = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n avatar: _mock.image.avatar(index),\r\n checkIn: _mock.time(index),\r\n checkOut: _mock.time(index),\r\n phoneNumber: _mock.phoneNumber(index),\r\n status: randomInArray(['pending', 'un_paid', 'paid']),\r\n roomType: randomInArray(['double', 'king', 'single']),\r\n}));\r\n\r\nexport const _bookingsOverview = [...Array(3)].map((_, index) => ({\r\n status: ['Pending', 'Cancel', 'Done'][index],\r\n quantity: _mock.number.percent(index) * 1000,\r\n value: _mock.number.percent(index),\r\n}));\r\n\r\nexport const _bookingReview = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n description: _mock.text.description(index),\r\n avatar: _mock.image.avatar(index),\r\n rating: _mock.number.rating(index),\r\n postedAt: _mock.time(index),\r\n tags: ['Great Sevice', 'Recommended', 'Best Price'],\r\n}));\r\n\r\nexport const _bookingNew = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n avatar: _mock.image.avatar(index),\r\n bookdAt: _mock.time(index),\r\n roomNumber: 'A-21',\r\n roomType: randomInArray(['double', 'king', 'single']),\r\n person: '3-5',\r\n cover: `/assets/images/rooms/room_${index + 1}.jpg`,\r\n}));\r\n","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Add years and months\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n // Add weeks and days\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import { add, subDays } from 'date-fns';\r\n//\r\nimport _mock from '../_mock';\r\nimport { randomInArray, randomNumberRange } from '../utils';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _invoices = [...Array(20)].map((_, index) => ({\r\n id: _mock.id(index),\r\n invoiceNumber: `${17048 + index}`,\r\n taxes: 5,\r\n discount: 10,\r\n sent: randomNumberRange(1, 10),\r\n subTotalPrice: _mock.number.price(index + 1),\r\n totalPrice: _mock.number.price(index + 1),\r\n createDate: subDays(new Date(), index),\r\n dueDate: add(new Date(), { days: index + 15, hours: index }),\r\n status: randomInArray(['paid', 'unpaid', 'overdue', 'draft']),\r\n invoiceFrom: {\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n address: _mock.address.fullAddress(index),\r\n company: _mock.company(index),\r\n email: _mock.email(index),\r\n phone: _mock.phoneNumber(index),\r\n },\r\n invoiceTo: {\r\n id: _mock.id(index + 1),\r\n name: _mock.name.fullName(index + 1),\r\n address: _mock.address.fullAddress(index + 1),\r\n company: _mock.company(index + 1),\r\n email: _mock.email(index + 1),\r\n phone: _mock.phoneNumber(index + 1),\r\n },\r\n items: [...Array(3)].map((__, itemIndex) => ({\r\n id: _mock.id(itemIndex),\r\n title: _mock.text.title(itemIndex),\r\n description: _mock.text.description(itemIndex),\r\n quantity: 5,\r\n price: _mock.number.price(itemIndex),\r\n total: _mock.number.price(itemIndex),\r\n service: randomInArray([\r\n 'full stack development',\r\n 'backend development',\r\n 'ui design',\r\n 'ui/ux design',\r\n 'front end development',\r\n ]),\r\n })),\r\n}));\r\n\r\nexport const _invoiceAddressFrom = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n address: _mock.address.fullAddress(index),\r\n company: _mock.company(index),\r\n email: _mock.email(index),\r\n phone: _mock.phoneNumber(index),\r\n}));\r\n\r\nexport const _invoiceAddressTo = [...Array(16)].map((_, index) => ({\r\n id: _mock.id(index + 1),\r\n name: _mock.name.fullName(index + 1),\r\n address: _mock.address.fullAddress(index + 1),\r\n company: _mock.company(index + 1),\r\n email: _mock.email(index + 1),\r\n phone: _mock.phoneNumber(index + 1),\r\n}));\r\n","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst COUNTRY = ['de', 'en', 'fr', 'kr', 'us'];\r\n\r\nconst CATEGORY = ['CAP', 'Branded Shoes', 'Headphone', 'Cell Phone', 'Earings'];\r\n\r\nconst PRODUCT_NAME = [\r\n 'Small Granite Computer',\r\n 'Small Rubber Mouse',\r\n 'Awesome Rubber Hat',\r\n 'Sleek Cotton Sausages',\r\n 'Rustic Wooden Chicken',\r\n];\r\n\r\nexport const _ecommerceSalesOverview = [...Array(3)].map((_, index) => ({\r\n label: ['Total Profit', 'Total Income', 'Total Expenses'][index],\r\n amount: _mock.number.price(index) * 100,\r\n value: _mock.number.percent(index),\r\n}));\r\n\r\nexport const _ecommerceBestSalesman = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n email: _mock.email(index),\r\n avatar: _mock.image.avatar(index + 8),\r\n category: CATEGORY[index],\r\n flag: `/assets/icons/flags/ic_flag_${COUNTRY[index]}.svg`,\r\n total: _mock.number.price(index),\r\n rank: `Top ${index + 1}`,\r\n}));\r\n\r\nexport const _ecommerceLatestProducts = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: PRODUCT_NAME[index],\r\n image: _mock.image.product(index),\r\n price: _mock.number.price(index),\r\n priceSale: index === 0 || index === 3 ? 0 : _mock.number.price(index),\r\n colors: (index === 0 && ['#2EC4B6', '#E71D36', '#FF9F1C', '#011627']) ||\r\n (index === 1 && ['#92140C', '#FFCF99']) ||\r\n (index === 2 && ['#0CECDD', '#FFF338', '#FF67E7', '#C400FF', '#52006A', '#046582']) ||\r\n (index === 3 && ['#845EC2', '#E4007C', '#2A1A5E']) || ['#090088'],\r\n}));\r\n\r\nexport const _ecommerceNewProducts = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: [\r\n 'Nike Air Max 97',\r\n 'Nike Zoom Gravity',\r\n 'Nike DBreak-Type',\r\n 'Kyrie Flytrap 3 EP Basketball Shoe',\r\n 'Nike Air Max Fusion Men',\r\n ][index],\r\n image: _mock.image.product(index),\r\n}));\r\n","//\r\nimport _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _analyticPost = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: _mock.text.title(index),\r\n description: _mock.text.description(index),\r\n image: _mock.image.cover(index),\r\n postedAt: _mock.time(index),\r\n}));\r\n\r\nexport const _analyticOrderTimeline = [...Array(10)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: [\r\n '1983, orders, $4220',\r\n '12 Invoices have been paid',\r\n 'Order #37745 from September',\r\n 'New order placed #XF-2356',\r\n 'New order placed #XF-2346',\r\n ][index],\r\n type: `order${index + 1}`,\r\n time: _mock.time(index),\r\n}));\r\n\r\nexport const _analyticTraffic = [\r\n {\r\n value: 'facebook',\r\n label: 'FaceBook',\r\n total: 323234,\r\n },\r\n {\r\n value: 'google',\r\n label: 'Google',\r\n total: 341212,\r\n },\r\n {\r\n value: 'linkedin',\r\n label: 'Linkedin',\r\n total: 411213,\r\n },\r\n {\r\n value: 'twitter',\r\n label: 'Twitter',\r\n total: 443232,\r\n },\r\n];\r\n","import { add } from 'date-fns';\r\n//\r\nimport _mock from '../_mock';\r\nimport { jobContent123 } from '../assets';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _jobs = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n companyName: _mock.company(index),\r\n companyLogo: _mock.image.company(index),\r\n slug: _mock.text.jobTitle(index),\r\n category: _mock.text.jobCategories(index),\r\n createdAt: new Date(),\r\n deadline: add(new Date(), { months: index }),\r\n location: _mock.address.country(index),\r\n experience: index + 1,\r\n type: (index % 2 && 'part time') || (index % 4 && 'freelance') || 'full time',\r\n level: (index % 2 && 'manager') || (index % 4 && 'intern/student') || 'No experience',\r\n salary: (index % 3 && 12000) || 'competitive',\r\n languages: ['Russian', 'Spanish', 'English'],\r\n isUrgent: index === 2 || false,\r\n views: 286,\r\n favorited: index === 2 || index === 4 || false,\r\n skills: ['Photography', 'Design', 'Art', 'History', 'Museums', 'Creativity', 'Art History'],\r\n locationMap: [\r\n {\r\n address: _mock.address.fullAddress(index),\r\n phoneNumber: _mock.phoneNumber(index),\r\n email: _mock.email(index),\r\n latlng: [33, 65],\r\n },\r\n ],\r\n otherBenefits: [\r\n 'Free parking',\r\n 'Bonus commission',\r\n 'Travel',\r\n 'Training',\r\n 'Device support',\r\n 'Health care',\r\n ],\r\n content: jobContent123,\r\n shareLinks: _mock.shareLinks,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _jobsByCompanies = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n companyName: _mock.company(index),\r\n companyLogo: _mock.image.company(index),\r\n totalJobs: 101 + index,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst NAMES = [\r\n 'Accounting / Finance',\r\n 'Marketing',\r\n 'Design',\r\n 'Development',\r\n 'IT - Hardware',\r\n 'Customer Service',\r\n 'Health and Care',\r\n 'Banking',\r\n];\r\n\r\nconst ICONS = [\r\n '/assets/icons/ic_money.svg',\r\n '/assets/icons/ic_marketing_bullhorn.svg',\r\n '/assets/icons/ic_creativity.svg',\r\n '/assets/icons/ic_web_programming.svg',\r\n '/assets/icons/ic_chip.svg',\r\n '/assets/icons/ic_customer_service.svg',\r\n '/assets/icons/ic_stethoscope.svg',\r\n '/assets/icons/ic_banking.svg',\r\n];\r\n\r\nexport const _jobsByCategories = [...Array(8)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: NAMES[index],\r\n icon: ICONS[index],\r\n totalJobs: 101 + index,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _jobsByCountries = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n location: _mock.address.country(index),\r\n totalJobs: 101 + index,\r\n coverImg: _mock.image.travel(index),\r\n}));\r\n","import { add } from 'date-fns';\r\n//\r\nimport _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CONTINENTS = [\r\n 'Sarawak',\r\n 'Sarawak',\r\n 'Sarawak',\r\n 'Sarawak',\r\n 'Sarawak',\r\n 'South America',\r\n 'Antarctica',\r\n 'Asia',\r\n 'Europe',\r\n 'Africa',\r\n 'Australia',\r\n 'North America',\r\n 'South America',\r\n 'Antarctica',\r\n 'South America',\r\n 'Antarctica',\r\n];\r\n\r\nexport const _tours = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n coverImg: _mock.image.travel(index),\r\n heroImg: [\r\n '/assets/images/travel/1.jpg',\r\n '/assets/images/travel/2.jpg',\r\n '/assets/images/travel/3.jpg',\r\n '/assets/images/travel/4.jpg',\r\n '/assets/images/travel/5.jpg',\r\n ][index],\r\n slug: _mock.text.tourName(index),\r\n createdAt: _mock.time(index),\r\n availableStart: add(new Date(), { months: 2 }),\r\n availableEnd: add(new Date(), { months: 4 }),\r\n location: _mock.address.country(index),\r\n continent: CONTINENTS[index],\r\n duration: '3 days 2 nights',\r\n price: (index % 2 && 159.99) || 269.99,\r\n priceSale: (index === 2 && 89.99) || (index === 5 && 69.99) || 0,\r\n reviews: 345,\r\n favorited: index === 2 || index === 4 || false,\r\n ratings: 3.5 + index / 10,\r\n tourGuide: {\r\n name: _mock.name.fullName(index),\r\n role: _mock.role(index),\r\n picture: _mock.image.avatar(index),\r\n phoneNumber: _mock.phoneNumber(index),\r\n quotes: 'Member since Mar 15, 2021',\r\n verified: true,\r\n ratings: 5,\r\n reviews: 345,\r\n about:\r\n 'Integer tincidunt. Nullam dictum felis eu pede mollis pretium. Maecenas ullamcorper, dui et placerat feugiat, eros pede varius nisi, condimentum viverra felis nunc et lorem.',\r\n shareLinks: _mock.shareLinks,\r\n },\r\n includes: [\r\n { label: 'Audio guide', enabled: true },\r\n { label: 'Entrance fees', enabled: true },\r\n { label: 'Food and drinks', enabled: true },\r\n { label: 'Gratuities', enabled: true },\r\n { label: 'Lunch', enabled: true },\r\n { label: 'Pick-up and drop off', enabled: false },\r\n { label: 'Private tour', enabled: false },\r\n { label: 'Professional guide', enabled: false },\r\n { label: 'Special activities', enabled: false },\r\n { label: 'Transport by air-conditioned', enabled: false },\r\n ],\r\n languages: ['Russian', 'Spanish'],\r\n tags: ['Lamp', 'A man', 'Human', 'Lantern', 'Festival'],\r\n gallery: [...Array(6)].map((__, itemIndex) => _mock.image.travel(itemIndex + 2)),\r\n description: _mock.text.description(index),\r\n highlights: [...Array(6)].map((__, itemIndex) => _mock.text.sentence(itemIndex)),\r\n program: [...Array(3)].map((__, itemIndex) => ({\r\n label: `Day ${itemIndex + 1}`,\r\n text: _mock.text.description(itemIndex),\r\n })),\r\n shareLinks: _mock.shareLinks,\r\n}));\r\n","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst users = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n avatarUrl: _mock.image.avatar(index),\r\n}));\r\n\r\nexport const _reviews = [\r\n {\r\n id: _mock.id(0),\r\n name: users[0].name,\r\n avatarUrl: users[0].avatarUrl,\r\n message: _mock.text.sentence(1),\r\n postedAt: _mock.time(1),\r\n users: [users[0], users[1], users[2]],\r\n rating: 3.5,\r\n helpful: 32,\r\n replyComment: [\r\n {\r\n id: _mock.id(1),\r\n userId: users[1].id,\r\n message: _mock.text.sentence(2),\r\n postedAt: _mock.time(2),\r\n },\r\n {\r\n id: _mock.id(2),\r\n userId: users[0].id,\r\n message: _mock.text.sentence(3),\r\n tagUser: users[1].name,\r\n postedAt: _mock.time(3),\r\n },\r\n {\r\n id: _mock.id(3),\r\n userId: users[2].id,\r\n message: _mock.text.sentence(4),\r\n postedAt: _mock.time(4),\r\n },\r\n ],\r\n },\r\n {\r\n id: _mock.id(4),\r\n name: users[4].name,\r\n avatarUrl: users[4].avatarUrl,\r\n message: _mock.text.sentence(5),\r\n postedAt: _mock.time(5),\r\n users: [users[5], users[6], users[7]],\r\n rating: 4.5,\r\n helpful: 0,\r\n replyComment: [\r\n {\r\n id: _mock.id(5),\r\n userId: users[6].id,\r\n message: _mock.text.sentence(7),\r\n postedAt: _mock.time(7),\r\n },\r\n {\r\n id: _mock.id(6),\r\n userId: users[7].id,\r\n message: _mock.text.sentence(8),\r\n postedAt: _mock.time(8),\r\n },\r\n ],\r\n },\r\n {\r\n id: _mock.id(7),\r\n name: users[8].name,\r\n avatarUrl: users[8].avatarUrl,\r\n message: _mock.text.sentence(9),\r\n postedAt: _mock.time(9),\r\n rating: 4.5,\r\n helpful: 10,\r\n users: [],\r\n replyComment: [],\r\n },\r\n {\r\n id: _mock.id(8),\r\n name: users[9].name,\r\n avatarUrl: users[9].avatarUrl,\r\n message: _mock.text.sentence(10),\r\n postedAt: _mock.time(10),\r\n rating: 5,\r\n helpful: 0,\r\n users: [],\r\n replyComment: [],\r\n },\r\n];\r\n","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _members = [...Array(8)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: _mock.name.fullName(index),\r\n role: _mock.role(index),\r\n photo: `/assets/images/portrait/portrait_${index + 1}.jpg`,\r\n socialLinks: {\r\n facebook: `facebook/${_mock.name.fullName(index)}`,\r\n instagram: `instagram/${_mock.name.fullName(index)}`,\r\n linkedin: `linkedin/${_mock.name.fullName(index)}`,\r\n twitter: `twitter/${_mock.name.fullName(index)}`,\r\n },\r\n}));\r\n","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst teachers = [...Array(5)].map((_, index) => ({\r\n id: _mock.id(index),\r\n role: _mock.role(index),\r\n name: _mock.name.fullName(index),\r\n picture: _mock.image.avatar(index),\r\n courses: 48,\r\n reviews: 3458,\r\n students: 18000,\r\n ratings: 3.5 + index / 10,\r\n}));\r\n\r\nconst lessons = [...Array(9)].map((_, index) => ({\r\n id: _mock.id(index),\r\n description: _mock.text.sentence(index),\r\n videoPath: _mock.video(index),\r\n duration: 60 - index,\r\n title: `Lesson ${index + 1}`,\r\n isUnLock: index !== 0 && index !== 1,\r\n}));\r\n\r\nexport const _courses = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n createdAt: new Date(),\r\n slug: _mock.text.courseTitle(index),\r\n coverImg: _mock.image.course(index),\r\n category: _mock.text.jobCategories(index),\r\n description: _mock.text.description(index),\r\n price: (index % 2 && 159.99) || 269.99,\r\n priceSale: (index === 2 && 89.99) || (index === 5 && 69.99) || 0,\r\n lessons,\r\n teachers,\r\n quizzes: 100,\r\n resources: 12,\r\n totalHours: 100,\r\n reviews: 3458,\r\n students: 180000,\r\n ratings: 3.5 + index / 10,\r\n bestSeller: index === 2 || false,\r\n level:\r\n (index % 2 && 'Intermediate') ||\r\n (index % 4 && 'Expert') ||\r\n (index % 5 && 'All Levels') ||\r\n 'Beginner',\r\n languages: ['Russian', 'Spanish', 'English'],\r\n skills: ['Photography', 'Design', 'Art', 'History', 'Museums', 'Creativity', 'Art History'],\r\n learnList: [\r\n 'A fermentum in morbi pretium aliquam adipiscing donec tempus.',\r\n 'Vulputate placerat amet pulvinar lorem nisl.',\r\n 'Consequat feugiat habitant gravida quisque elit bibendum id adipiscing sed.',\r\n 'Etiam duis lobortis in fames ultrices commodo nibh.',\r\n 'Fusce neque. Nulla neque dolor, sagittis eget, iaculis quis, molestie non, velit.',\r\n 'Curabitur a felis in nunc fringilla tristique. Praesent congue erat at massa.',\r\n ],\r\n shareLinks: _mock.shareLinks,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CATEGORY_NAMES = [\r\n 'Python',\r\n 'Design',\r\n 'History',\r\n 'Photoshop',\r\n 'Management',\r\n 'Cyber Security',\r\n 'Web Development',\r\n 'Machine Learning',\r\n 'Photography',\r\n];\r\n\r\nexport const _coursesByCategories = [...Array(9)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: CATEGORY_NAMES[index],\r\n students: 101 + index,\r\n}));\r\n","//\r\nimport _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst NAME = [\r\n 'Apple iPhone',\r\n 'Samsung Galaxy',\r\n 'Nike Air Max',\r\n 'Adidas Ultraboost',\r\n 'Sony PlayStation',\r\n 'Microsoft Surface',\r\n 'Tesla Model S',\r\n 'Amazon Echo',\r\n 'Google Pixel',\r\n 'Bose QuietComfort',\r\n 'Canon EOS',\r\n 'HP Spectre',\r\n 'LG OLED',\r\n 'Rolex Submariner',\r\n 'Chanel No.5',\r\n 'Louis Vuitton Speedy',\r\n 'Gucci Ace',\r\n 'Ray-Ban Aviator',\r\n 'Herschel Little America',\r\n 'Le Creuset Dutch Oven',\r\n 'Yeti Tumbler',\r\n 'Patagonia Nano Puff',\r\n 'Lululemon Align Leggings',\r\n 'Allbirds Wool Runners',\r\n];\r\n\r\nconst CATEGORIES = [\r\n 'Electronics',\r\n 'Fashion and Apparel',\r\n 'Home and Garden',\r\n 'Beauty and Personal Care',\r\n 'Health and Wellness',\r\n 'Toys and Games',\r\n 'Sports and Outdoors',\r\n 'Baby and Kids',\r\n 'Automotive and Industrial',\r\n 'Pet Supplies',\r\n 'Food and Beverage',\r\n 'Office and School Supplies',\r\n 'Jewelry and Accessories',\r\n 'Arts and Crafts',\r\n 'Books and Media',\r\n 'Travel and Luggage',\r\n 'Gifts and Flowers',\r\n 'Musical Instruments',\r\n 'Party Supplies',\r\n 'Business and Industrial Supplies',\r\n 'Tools and Hardware',\r\n 'Electronics Accessories',\r\n 'Furniture and Decor',\r\n 'Computer and Software',\r\n];\r\n\r\nconst DESCRIPTION = `\r\n

Aenean viverra rhoncus pede. Etiam feugiat lorem non metus. Quisque malesuada placerat nisl.

\r\n\r\n\r\n\r\n

Living in today’s metropolitan world of cellular phones, mobile computers and other high-tech gadgets is not just hectic but very impersonal. We make money and then invest our time and effort in making more money..

\r\n`;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _productsTable = [...Array(12)].map((_, index) => ({\r\n id: _mock.id(index),\r\n orderId: `#011120${index + 1}`,\r\n item: NAME[index],\r\n deliveryDate: _mock.time(index),\r\n price: _mock.number.price(index),\r\n status: ['Completed', 'To Process', 'Cancelled', 'Return'][index] || 'Completed',\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _productsCarousel = [...Array(4)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: _mock.text.blogTitle(index),\r\n caption: _mock.text.description(index),\r\n coverImg: _mock.image.product(index),\r\n label: 'Opening Sale Discount 50%',\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _productsCompare = [\r\n 'Apple iPhone 12 Pro',\r\n 'Apple iPhone 13 Pro',\r\n 'Apple iPhone 14 Pro',\r\n].map((name, index) => ({\r\n id: _mock.id(index),\r\n name,\r\n price: _mock.number.price(index),\r\n rating: _mock.number.rating(index),\r\n coverImg: _mock.image.product(4),\r\n details: (index === 0 && [\r\n 'Super Retina XDR (OLED)',\r\n 'Up to 29 hours video playback',\r\n 'A14 Bionic',\r\n 'True Tone',\r\n 'IP68',\r\n '2017',\r\n ]) || ['Super Retina XDR (OLED)', '', 'A14 Bionic', '', 'IP68', '2017'],\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _products = [...Array(24)].map((_, index) => ({\r\n id: _mock.id(index),\r\n name: NAME[index],\r\n caption: _mock.text.description(index),\r\n description: DESCRIPTION,\r\n coverImg: _mock.image.product(index),\r\n review: index * 2 + 40,\r\n category: CATEGORIES[index],\r\n sold: index * 2 + 40,\r\n inStock: 100,\r\n rating: _mock.number.rating(index),\r\n label: ['sale', 'new', 'sale', 'sale'][index] || '',\r\n price: _mock.number.price(index),\r\n priceSale:\r\n [\r\n _mock.number.price(1),\r\n _mock.number.price(2),\r\n _mock.number.price(3),\r\n _mock.number.price(4),\r\n _mock.number.price(5),\r\n ][index] || 0,\r\n images: [\r\n _mock.image.product(1),\r\n _mock.image.product(2),\r\n _mock.image.product(3),\r\n _mock.image.product(4),\r\n _mock.image.product(5),\r\n _mock.image.product(6),\r\n _mock.image.product(7),\r\n _mock.image.product(8),\r\n ],\r\n}));\r\n","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TITLE = [\r\n `The A - Z Of Event`,\r\n `Believing These 7 Myths About Event Keeps You From Growing`,\r\n `Don't Waste Time! 7 Facts Until You Reach Your Event`,\r\n `How 7 Things Will Change The Way You Approach Event`,\r\n `Event Doesn't Have To Be Hard. Read These 7 Tips`,\r\n `The 7 Biggest Event Mistakes You Can Easily Avoid`,\r\n `Best 30 Tips For Event`,\r\n `Apply These 7 Secret Techniques To Improve Event`,\r\n `Best Event Android Apps`,\r\n `Best Event Tips You Will Read This Year`,\r\n `Top 7 Lessons About Event To Learn Before You Hit 30`,\r\n `How To Make More Event By Doing Less`,\r\n];\r\n\r\nconst content = (name) => `\r\n

Pellentesque posuere. Phasellus a est. Suspendisse pulvinar, augue ac venenatis condimentum, sem libero volutpat nibh, nec pellentesque velit pede quis nunc.

\r\n\r\n

Pellentesque posuere. Phasellus a est. Suspendisse pulvinar, augue ac venenatis condimentum, sem libero volutpat nibh, nec pellentesque velit pede quis nunc. Phasellus viverra nulla ut metus varius laoreet. Praesent egestas tristique nibh. Donec posuere vulputate arcu. Quisque rutrum.

\r\n\r\n

Donec posuere vulputate arcu. Quisque rutrum. Curabitur vestibulum aliquam leo. Nam commodo suscipit quam. Vestibulum ullamcorper mauris at ligula.

\r\n\r\n

Pellentesque posuere. Phasellus a est. Suspendisse pulvinar, augue ac venenatis condimentum, sem libero volutpat nibh, nec pellentesque velit pede quis nunc. Phasellus viverra nulla ut metus varius laoreet. Praesent egestas tristique nibh.

\r\n\r\n

\"alt

\r\n\r\n

Curabitur suscipit suscipit tellus

\r\n\r\n

Donec posuere vulputate arcu. Quisque rutrum. Curabitur vestibulum aliquam leo. Nam commodo suscipit quam. Vestibulum ullamcorper mauris at ligula.

\r\n\r\n

Nullam accumsan lorem in

\r\n\r\n

Donec posuere vulputate arcu. Quisque rutrum. Curabitur vestibulum aliquam leo. Nam commodo suscipit quam. Vestibulum ullamcorper mauris at ligula.

\r\n\r\n

Donec posuere vulputate arcu. Quisque rutrum. Curabitur vestibulum aliquam leo.

\r\n\r\n

\"alt

\r\n\r\n

Donec posuere vulputate arcu. Quisque rutrum. Curabitur vestibulum aliquam leo. Nam commodo suscipit quam. Vestibulum ullamcorper mauris at ligula.

\r\n\r\n

Pellentesque posuere. Phasellus a est. Suspendisse pulvinar, augue ac venenatis condimentum, sem libero volutpat nibh, nec pellentesque velit pede quis nunc. Phasellus viverra nulla ut metus varius laoreet. Praesent egestas tristique nibh.

\r\n\r\n

Donec posuere vulputate arcu. Quisque rutrum. Curabitur vestibulum aliquam leo. Nam commodo suscipit quam. Vestibulum ullamcorper mauris at ligula.

\r\n\r\n`;\r\n\r\nconst base = (index) => ({\r\n id: _mock.id(index),\r\n title: TITLE[index],\r\n description: _mock.text.description(index),\r\n category: 'Marketing',\r\n favorited: _mock.boolean(index),\r\n createdAt: _mock.time(index),\r\n duration: '8 minutes read',\r\n tags: [\r\n { label: 'Marketing', path: '' },\r\n { label: 'Development', path: '' },\r\n { label: 'HR & Recruiting', path: '' },\r\n { label: 'Design', path: '' },\r\n { label: 'Management', path: '' },\r\n ],\r\n author: {\r\n name: _mock.name.fullName(index),\r\n role: _mock.role(index),\r\n picture: _mock.image.avatar(index),\r\n quotes: 'Member since Mar 15, 2021',\r\n about:\r\n 'Integer tincidunt. Nullam dictum felis eu pede mollis pretium. Maecenas ullamcorper, dui et placerat feugiat, eros pede varius nisi, condimentum viverra felis nunc et lorem.',\r\n },\r\n});\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const _blogMarketingPosts = [...Array(12)].map((_, index) => ({\r\n ...base(index),\r\n content: content('marketing'),\r\n coverImg: _mock.image.marketing(index),\r\n heroImg: `/assets/images/marketing/marketing_post_hero.jpg`,\r\n}));\r\n\r\nexport const _blogTravelPosts = [...Array(12)].map((_, index) => ({\r\n ...base(index),\r\n content: content('travel'),\r\n coverImg: _mock.image.travel(index),\r\n heroImg: `/assets/images/travel/travel_post_hero.jpg`,\r\n}));\r\n\r\nexport const _blogCareerPosts = [...Array(12)].map((_, index) => ({\r\n ...base(index),\r\n content: content('career'),\r\n coverImg: _mock.image.career(index),\r\n heroImg: `/assets/images/career/career_post_hero.jpg`,\r\n}));\r\n\r\nexport const _blogCoursePosts = [...Array(12)].map((_, index) => ({\r\n ...base(index),\r\n content: content('course'),\r\n coverImg: _mock.image.course(index),\r\n heroImg: `/assets/images/course/course_post_hero.jpg`,\r\n}));\r\n","import _mock from '../_mock';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TITLE = [\r\n 'Bank of America',\r\n 'Technology Nixon',\r\n 'Turn Key Smart',\r\n 'Digital Shose',\r\n 'Action Car',\r\n 'The Zone UI',\r\n 'Minimal UI',\r\n 'Network Firefox',\r\n];\r\n\r\nconst CATEGORY = [\r\n 'Branding',\r\n 'Digital',\r\n 'Digital',\r\n 'Marketing',\r\n 'SEO',\r\n 'SEO',\r\n 'Digital',\r\n 'Development',\r\n];\r\n\r\nconst CONTENT = `\r\n

Project Brief

\r\n

Nullam tincidunt adipiscing enim. Mauris sollicitudin fermentum libero. Pellentesque auctor neque nec urna. Sed fringilla mauris sit amet nibh. Phasellus viverra nulla ut metus varius laoreet.

\r\n

\r\n

How We Work

\r\n

Nullam tincidunt adipiscing enim. Mauris sollicitudin fermentum libero. Pellentesque auctor neque nec urna. Sed fringilla mauris sit amet nibh. Phasellus viverra nulla ut metus varius laoreet.

\r\n

\r\n\r\n

Results

\r\n

Nullam tincidunt adipiscing enim. Mauris sollicitudin fermentum libero. Pellentesque auctor neque nec urna. Sed fringilla mauris sit amet nibh. Phasellus viverra nulla ut metus varius laoreet.

\r\n

\r\n\r\n\r\n`;\r\n\r\nexport const _caseStudies = [...Array(8)].map((_, index) => ({\r\n id: _mock.id(index),\r\n title: TITLE[index],\r\n description: 'Praesent vestibulum dapibus nibh. Vestibulum fringilla pede sit amet augue.',\r\n category: CATEGORY[index],\r\n coverImg: `/assets/images/marketing/marketing_${index + 1}.jpg`,\r\n heroImg: '/assets/images/marketing/marketing_post_hero.jpg',\r\n createdAt: _mock.time(index),\r\n website: 'https://example.com/',\r\n content: CONTENT,\r\n how_we_work:\r\n 'Nullam tincidunt adipiscing enim. Mauris sollicitudin fermentum libero. Pellentesque auctor neque nec urna. Sed fringi',\r\n results:\r\n 'Nullam tincidunt adipiscing enim. Mauris sollicitudin fermentum libero. Pellentesque auctor neque nec urna. Sed fringi',\r\n galleryImgs: [\r\n '/assets/images/marketing/marketing_1.jpg',\r\n '/assets/images/marketing/marketing_2.jpg',\r\n '/assets/images/marketing/marketing_3.jpg',\r\n '/assets/images/marketing/marketing_4.jpg',\r\n '/assets/images/marketing/marketing_5.jpg',\r\n '/assets/images/marketing/marketing_6.jpg',\r\n '/assets/images/marketing/marketing_7.jpg',\r\n '/assets/images/marketing/marketing_8.jpg',\r\n ],\r\n}));\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const title = [\r\n `Apply These 7 Secret Techniques To Improve Event`,\r\n `Believing These 7 Myths About Event Keeps You From Growing`,\r\n `Don't Waste Time! 7 Facts Until You Reach Your Event`,\r\n `How 7 Things Will Change The Way You Approach Event`,\r\n `Event Awards: 7 Reasons Why They Don't Work & What You Can Do About It`,\r\n `Event Doesn't Have To Be Hard. Read These 7 Tips`,\r\n `Event Is Your Worst Enemy. 7 Ways To Defeat It`,\r\n `Event On A Budget: 7 Tips From The Great Depression`,\r\n `Knowing These 7 Secrets Will Make Your Event Look Amazing`,\r\n `Master The Art Of Event With These 7 Tips`,\r\n `My Life, My Job, My Career: How 7 Simple Event Helped Me Succeed`,\r\n `Take Advantage Of Event - Read These 7 Tips`,\r\n `The Next 7 Things You Should Do For Event Success`,\r\n `The Time Is Running Out! Think About These 7 Ways To Change Your Event`,\r\n `The 7 Best Things About Event`,\r\n `The 7 Biggest Event Mistakes You Can Easily Avoid`,\r\n `The 7 Most Successful Event Companies In Region`,\r\n `Think Your Event Is Safe? 7 Ways You Can Lose It Today`,\r\n `Thinking About Event? 7 Reasons Why It's Time To Stop!`,\r\n `7 Places To Get Deals On Event`,\r\n `Best Event Android Apps`,\r\n `Best Event Tips You Will Read This Year`,\r\n `Best 30 Tips For Event`,\r\n `Should Fixing Event Take 30 Steps?`,\r\n `The A - Z Of Event`,\r\n `The Next 30 Things To Immediately Do About Event`,\r\n `The Ultimate Guide To Event`,\r\n `Top 30 Funny Event Quotes`,\r\n `Top 30 Quotes On Event`,\r\n `Top 7 Lessons About Event To Learn Before You Hit 30`,\r\n `Top 7 Ways To Buy A Used Event`,\r\n `30 Best Ways To Sell Event`,\r\n `30 Ideas For Event`,\r\n `30 Lessons About Event You Need To Learn Before You Hit 40`,\r\n `30 Methods Of Event Domination`,\r\n `30 Things To Do Immediately About Event`,\r\n `30 Tips To Grow Your Event`,\r\n `30 Ways To Avoid Event Burnout`,\r\n `30 Ways To Improve Event`,\r\n `How To Make More Event By Doing Less`,\r\n];\r\n\r\nexport const sentence = [\r\n `Assumenda nam repudiandae rerum fugiat vel maxime.`,\r\n `Quis veniam aut saepe aliquid nulla.`,\r\n `Reprehenderit ut voluptas sapiente ratione nostrum est.`,\r\n `Error ut sit vel molestias velit.`,\r\n `Quo quia sit nihil nemo doloremque et.`,\r\n `Autem doloribus harum vero laborum.`,\r\n `Tempora officiis consequuntur architecto nostrum autem nam adipisci.`,\r\n `Voluptas sunt magni adipisci praesentium saepe.`,\r\n `Ea architecto quas voluptates voluptas earum illo est vel rem.`,\r\n `Ipsum expedita reiciendis ut.`,\r\n `Architecto vel voluptatibus alias a aut non maxime ipsa voluptates.`,\r\n `Reiciendis enim officiis cupiditate eaque distinctio laudantium modi similique consequatur.`,\r\n `Ab autem consequatur itaque mollitia ipsum cupiditate error repudiandae nobis.`,\r\n `Distinctio architecto debitis eligendi consequatur unde id modi accusantium possimus.`,\r\n `At ut voluptate accusantium.`,\r\n `Repudiandae ut qui veritatis sint.`,\r\n `Laboriosam blanditiis quo sed et qui esse ipsam necessitatibus sed.`,\r\n `Et molestiae et excepturi maxime omnis.`,\r\n `Sint dolorem quam eum magnam.`,\r\n `Rerum ut iusto iste quam voluptatem necessitatibus.`,\r\n `Et quam in.`,\r\n `Fugit esse tenetur.`,\r\n `Dolorem dolor porro nihil cupiditate molestiae deserunt ut.`,\r\n `Omnis beatae eos eius aut molestias laboriosam laborum et optio.`,\r\n `Ut veniam quam assumenda ut voluptatibus ducimus accusamus.`,\r\n `Quos dignissimos neque omnis reiciendis voluptatem ducimus.`,\r\n `Laboriosam quia ut esse.`,\r\n `Sit reiciendis nihil qui molestias et.`,\r\n `Facilis cupiditate minima ratione quaerat omnis velit non ex totam.`,\r\n `Provident sint esse voluptatem voluptas eveniet est.`,\r\n `Molestias consequatur ea facilis.`,\r\n `Tempora voluptatibus autem ut ut porro quae delectus dolorum.`,\r\n `Et consequatur amet nemo ducimus voluptatem placeat voluptas.`,\r\n `Modi iste atque hic voluptas sit quis deleniti quas consequatur.`,\r\n `Omnis est aliquid odio mollitia aliquid ex.`,\r\n `Officia possimus veniam quod molestias.`,\r\n `Mollitia inventore recusandae provident aut.`,\r\n `Numquam ullam beatae possimus.`,\r\n `Fuga velit cupiditate ex culpa odio aut ut.`,\r\n `Vero corrupti nam voluptatum excepturi est et.`,\r\n];\r\n\r\nexport const description = [\r\n `Occaecati est et illo quibusdam accusamus qui. Incidunt aut et molestiae ut facere aut. Est quidem iusto praesentium excepturi harum nihil tenetur facilis. Ut omnis voluptates nihil accusantium doloribus eaque debitis.`,\r\n `Atque eaque ducimus minima distinctio velit. Laborum et veniam officiis. Delectus ex saepe hic id laboriosam officia. Odit nostrum qui illum saepe debitis ullam. Laudantium beatae modi fugit ut. Dolores consequatur beatae nihil voluptates rem maiores.`,\r\n `Rerum eius velit dolores. Explicabo ad nemo quibusdam. Voluptatem eum suscipit et ipsum et consequatur aperiam quia. Rerum nulla sequi recusandae illum velit quia quas. Et error laborum maiores cupiditate occaecati.`,\r\n `Et non omnis qui. Qui sunt deserunt dolorem aut velit cumque adipisci aut enim. Nihil quis quisquam nesciunt dicta nobis ab aperiam dolorem repellat. Voluptates non blanditiis. Error et tenetur iste soluta cupiditate ratione perspiciatis et. Quibusdam aliquid nam sunt et quisquam non esse.`,\r\n `Nihil ea sunt facilis praesentium atque. Ab animi alias sequi molestias aut velit ea. Sed possimus eos. Et est aliquid est voluptatem.`,\r\n `Non rerum modi. Accusamus voluptatem odit nihil in. Quidem et iusto numquam veniam culpa aperiam odio aut enim. Quae vel dolores. Pariatur est culpa veritatis aut dolorem.`,\r\n `Est enim et sit non impedit aperiam cumque animi. Aut eius impedit saepe blanditiis. Totam molestias magnam minima fugiat.`,\r\n `Unde a inventore et. Sed esse ut. Atque ducimus quibusdam fuga quas id qui fuga.`,\r\n `Eaque natus adipisci soluta nostrum dolorem. Nesciunt ipsum molestias ut aliquid natus ut omnis qui fugiat. Dolor et rem. Ut neque voluptatem blanditiis quasi ullam deleniti.`,\r\n `Nam et error exercitationem qui voluptate optio. Officia omnis qui accusantium ipsam qui. Quia sequi nulla perspiciatis optio vero omnis maxime omnis ipsum. Perspiciatis consequuntur asperiores veniam dolores.`,\r\n `Perspiciatis nulla ut ut ut voluptates totam consectetur eligendi qui. Optio ut cum. Dolorum sapiente qui laborum. Impedit temporibus totam delectus nihil. Voluptatem corrupti rem.`,\r\n `Distinctio omnis similique omnis eos. Repellat cumque rerum nisi. Reiciendis soluta non ut veniam temporibus. Accusantium et dolorem voluptas harum. Nemo eius voluptate dicta et hic nemo. Dolorem assumenda et beatae molestias sit quo mollitia quis consequatur.`,\r\n `Sed ut mollitia tempore ipsam et illum doloribus ut. Occaecati ratione veritatis explicabo. Omnis nam omnis sunt placeat tempore accusantium placeat distinctio velit.`,\r\n `Eum illo dicta et perspiciatis ut blanditiis eos sequi. Ea veritatis aut et voluptas aut. Laborum eos quia tempore a culpa.`,\r\n `Aut quos quae dolores repudiandae similique perferendis perferendis earum laudantium. Facere placeat natus nobis. Eius vitae ullam dolorem.`,\r\n `Vero dolorem et voluptatem fugit tempore a quam iure. Fuga consequatur corrupti sunt asperiores vitae. Libero totam repellendus animi debitis illum et sunt officia.`,\r\n `Cupiditate illum officiis id molestiae. Numquam non molestiae aliquid et natus sed hic. Alias quia explicabo sed corrupti sint. Natus in et odio qui unde facilis quia. Est sit eius laboriosam aliquid non aperiam quia quo corporis.`,\r\n `Et a ab. Optio aspernatur minus tempora amet vitae consectetur inventore cumque. Sed et omnis. Aspernatur a magnam.`,\r\n `Ipsum omnis et. Quia ea et autem tempore consequuntur veniam dolorem officiis. Ipsa dicta et ut quidem quia doloremque. Sequi vitae doloremque temporibus. Deserunt incidunt id aperiam itaque natus. Earum sit eaque quas incidunt nihil.`,\r\n `Quae consequatur reiciendis. Consequatur non optio. Eaque id placeat. Commodi quo officia aut repudiandae reiciendis tempore voluptatem et. Ut accusamus qui itaque maxime aliquam. Fugit ut animi molestiae porro maiores.`,\r\n `Modi hic asperiores ab cumque quam est aut. Voluptas atque quos molestias. Ut excepturi distinctio ipsam aspernatur sit.`,\r\n `Sunt totam facilis. Quam commodi voluptatem veniam. Tempora deleniti itaque fugit nihil voluptas.`,\r\n `Ipsam aliquam velit nobis repellendus officiis aut deserunt id et. Nihil sunt aut dolores aut. Dolores est ipsa quia et laborum quidem laborum accusamus id. Facilis odit quod hic laudantium saepe omnis nisi in sint. Sed cupiditate possimus id.`,\r\n `Magnam non eveniet optio optio ut aliquid atque. Velit libero aspernatur quis laborum consequatur laudantium. Tempora facere optio fugit accusantium ut. Omnis aspernatur reprehenderit autem esse ut ut enim voluptatibus.`,\r\n `Ipsam vel molestiae dolorem iure molestiae. Ut qui cumque et sint recusandae modi nulla. Vel rerum tempore similique autem enim voluptatem dolores facilis. Qui delectus recusandae magnam.`,\r\n `Fugiat molestias distinctio enim nobis rerum. Perspiciatis adipisci corrupti quas sed ab sunt nostrum. Quibusdam reiciendis ratione dolores vitae fuga exercitationem asperiores maxime voluptate. Minus et ea delectus quia ullam est. Exercitationem iusto libero. Et aut dolore reprehenderit et saepe sint modi.`,\r\n `Ex neque aut voluptatem delectus eum deserunt voluptate. Ut quam placeat et. Et impedit tenetur illum aut consequatur quia. Autem sed dolorem non ad aspernatur illum dignissimos beatae. Earum iusto aut rem aut. Facere ea alias enim quo assumenda.`,\r\n `Quis sint recusandae quasi corporis et fugit. Omnis voluptatum id laborum qui. Assumenda animi quia eum et facere fuga. Ab et sint molestiae et voluptatum nostrum est.`,\r\n `Est quis numquam recusandae alias porro magni. Incidunt quis aut necessitatibus nam ea dolores cumque. Quis dolorum veniam.`,\r\n `Corporis magnam non. Ut voluptates pariatur et. Quis tenetur mollitia et necessitatibus et. Perferendis error velit aut.`,\r\n `Eos ex accusantium possimus aut quae. Omnis dolorum velit. Sapiente quia dolore ea assumenda voluptatem exercitationem sed consequuntur. Eveniet et molestiae ipsa harum quidem soluta quo. Consequatur ad sunt sed numquam odio eveniet.`,\r\n `Ut sit et provident vero vero voluptatem distinctio. Cumque sit error qui et. Ea architecto ipsum occaecati sed alias eum vel. Officia tempore architecto autem vel veniam. Minus modi commodi ad consequatur similique ut. Tenetur tempore eum.`,\r\n `Quibusdam in cum voluptatem consequatur rerum. Qui eum assumenda nemo maiores veniam quae. Ipsa occaecati et provident. Quas similique deserunt doloremque placeat natus.`,\r\n `Voluptates et earum fugiat molestiae distinctio. Aut sapiente quas dolores et. Quo et dolor velit et iure consequatur ut in amet. Repellendus aut sequi animi inventore nesciunt itaque.`,\r\n `Sit a tempore dicta provident molestiae. Necessitatibus blanditiis voluptatum. Magnam esse animi in qui veritatis quibusdam recusandae adipisci possimus. Tenetur dolores ipsum.`,\r\n `Neque id sunt amet modi expedita aut libero aut in. Minima dolore praesentium quia quas et pariatur numquam. In ut sequi nemo velit iste minima aliquam. Neque ut tenetur consequuntur sint nemo unde. Magni nesciunt omnis illo optio. Molestias eum exercitationem aut harum odit.`,\r\n `Modi quia laboriosam qui ad aut. Fugit quisquam earum distinctio officia est fugit quos. Iure repellat distinctio veritatis voluptate amet ratione repudiandae.`,\r\n `Impedit perferendis vel quis ratione. Id aut id officia. Illum fuga saepe provident voluptate eligendi provident. Et nostrum maxime magni. Nobis cumque id magni in iste earum.`,\r\n `Dolor numquam maiores praesentium dolorem nihil minus praesentium rem dolorem. Est rerum placeat. Numquam sed magni aliquam laborum enim facere ducimus.`,\r\n `In sint enim nam et itaque et qui. Molestiae a iusto quidem quia temporibus id quia eaque eius. Quis quia consectetur saepe vero et molestias. Rem minima accusamus vitae adipisci molestiae unde voluptate consequatur molestiae. Rerum exercitationem quisquam vitae.`,\r\n];\r\n\r\n\r\n// ----------------------------------------------------------------------\r\n// https://www.convertsimple.com/convert-markdown-to-html/\r\n\r\nexport const jobContent123 = `\r\n
Job Description
\r\n

Occaecati est et illo quibusdam accusamus qui. Incidunt aut et molestiae ut facere aut. Est quidem iusto praesentium excepturi harum nihil tenetur facilis. Ut omnis voluptates nihil accusantium doloribus eaque debitis.

\r\n
Key Responsibilities
\r\n\r\n
Why You'll Love Working Here
\r\n\r\n`;\r\n\r\nexport const brandsName = [\r\n 'airbnb',\r\n 'dropbox',\r\n 'facebook',\r\n 'google',\r\n 'heroku',\r\n 'lenovo',\r\n 'microsoft',\r\n 'netflix',\r\n 'slack',\r\n 'spotify',\r\n 'tripadvisor',\r\n 'vimeo',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const jobTitle = [\r\n 'Marketing Coordinator',\r\n 'Medical Assistant',\r\n 'Web Designer',\r\n 'Dog Trainer',\r\n 'President of Sales',\r\n 'Nursing Assistant',\r\n 'Corporate Data Officer',\r\n 'Dynamic Quality Technician',\r\n 'Relational Mobility Technician',\r\n 'Senior Web Engineer',\r\n 'Dynamic Markets Administrator',\r\n 'Chief Research Analyst',\r\n 'Internal Paradigm Synergist',\r\n 'Relational Accountability Liason',\r\n 'Regional Brand Associate',\r\n 'Interactive Creative Supervisor',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const jobCategories = [\r\n 'Design',\r\n 'Marketing',\r\n 'Management',\r\n 'Healthcare',\r\n 'Development',\r\n 'Engineering',\r\n 'HR & Recruiting',\r\n 'Garage services',\r\n 'Sport and leisure',\r\n 'Computing and ICT',\r\n 'Financial services',\r\n 'Design, arts and crafts',\r\n 'Construction and building',\r\n 'Social sciences and religion',\r\n 'Science, mathematics and statistics',\r\n 'Transport, distribution and logistics',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const tourName = [\r\n 'Italian Delights - 12 Days',\r\n 'Best of Sicily - 8 Days (Small Group Tour)',\r\n 'Gourmet Journey of Emilia Romagna - 7 Days',\r\n 'Adventure in Iceland',\r\n 'Fire and Ice (6 Days)',\r\n 'Iceland Northern Lights & Golden Circle — Plus',\r\n 'New Tour Egypt (2 for 1) Tour in 5* Hotel & Nile Cruise',\r\n 'Egypt Luxury Guided Tour W/Nile Cruise & Air',\r\n 'London with Day trip to Paris',\r\n 'Great Britain Christmas - 7 Days',\r\n 'Essential Turkey Small Group',\r\n 'Istanbul to Cappadocia',\r\n '6 Nights in Greece',\r\n 'Death Valley Day Tour from Las Vegas- Small Groups Tour',\r\n 'National Parks Winter Tour',\r\n 'National Parks Tour 3 Days Small Group Tour from Las Vegas',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const courseTitle = [\r\n 'Design Masterclass Course',\r\n 'Fitness For Beginners (2020)',\r\n 'The Secrets To Teaching Online',\r\n 'Learn How To Create A Course Online And Level Up Your Career',\r\n 'Create A Course Online Masterclass',\r\n 'Learn How To Create A Course Online And Level Up Your Career',\r\n '2021 Complete Python Bootcamp From Zero to Hero in Python',\r\n 'Machine Learning A-Z™: Hands-On Python & R In Data Science',\r\n 'The Complete Digital Marketing Course - 12 Courses in 1',\r\n 'SEO beginners : how I get 1,000 visitors a day with SEO',\r\n 'Mega Digital Marketing Course A-Z: 12 Courses in 1 + Updates',\r\n 'Copywriting: Fundamentals For Beginners',\r\n 'Modern Copywriting: Writing copy that sells in 2021',\r\n 'Copywriting secrets - How to write copy that sells',\r\n 'Instagram Marketing 2021: Complete Guide To Instagram Growth',\r\n 'Python for Finance and Algorithmic Trading with QuantConnect',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const blogTitle = [\r\n 'Apply These 7 Secret Techniques To Improve Event',\r\n 'Believing These 7 Myths About Event Keeps You From Growing',\r\n \"Don't Waste Time! 7 Facts Until You Reach Your Event\",\r\n 'How 7 Things Will Change The Way You Approach Event',\r\n \"Event Awards: 7 Reasons Why They Don't Work & What You Can Do About It\",\r\n \"Event Doesn't Have To Be Hard. Read These 7 Tips\",\r\n 'Event Is Your Worst Enemy. 7 Ways To Defeat It',\r\n 'Event On A Budget: 7 Tips From The Great Depression',\r\n 'Knowing These 7 Secrets Will Make Your Event Look Amazing',\r\n 'Master The Art Of Event With These 7 Tips',\r\n 'My Life, My Job, My Career: How 7 Simple Event Helped Me Succeed',\r\n 'Take Advantage Of Event - Read These 7 Tips',\r\n 'The Next 7 Things You Should Do For Event Success',\r\n 'The Time Is Running Out! Think About These 7 Ways To Change Your Event',\r\n 'The 7 Best Things About Event',\r\n 'The 7 Biggest Event Mistakes You Can Easily Avoid',\r\n 'The 7 Most Successful Event Companies In Region',\r\n 'Think Your Event Is Safe? 7 Ways You Can Lose It Today',\r\n \"Thinking About Event? 7 Reasons Why It's Time To Stop!\",\r\n '7 Places To Get Deals On Event',\r\n 'Best Event Android Apps',\r\n 'Best Event Tips You Will Read This Year',\r\n 'Best 30 Tips For Event',\r\n 'Should Fixing Event Take 30 Steps?',\r\n 'The A - Z Of Event',\r\n 'The Next 30 Things To Immediately Do About Event',\r\n 'The Ultimate Guide To Event',\r\n 'Top 30 Funny Event Quotes',\r\n 'Top 30 Quotes On Event',\r\n 'Top 7 Lessons About Event To Learn Before You Hit 30',\r\n 'Top 7 Ways To Buy A Used Event',\r\n '30 Best Ways To Sell Event',\r\n '30 Ideas For Event',\r\n '30 Lessons About Event You Need To Learn Before You Hit 40',\r\n '30 Methods Of Event Domination',\r\n '30 Things To Do Immediately About Event',\r\n '30 Tips To Grow Your Event',\r\n '30 Ways To Avoid Event Burnout',\r\n '30 Ways To Improve Event',\r\n 'How To Make More Event By Doing Less',\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n","// ----------------------------------------------------------------------\r\n\r\nexport function randomNumber(number) {\r\n return Math.floor(Math.random() * number) + 1;\r\n}\r\n\r\nexport function randomNumberRange(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n}\r\n\r\nexport function randomInArray(array) {\r\n return array[Math.floor(Math.random() * array.length)];\r\n}\r\n","import { memo } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction BackgroundIllustration() {\r\n const theme = useTheme();\r\n\r\n const PRIMARY_MAIN = theme.palette.primary.main;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(BackgroundIllustration);\r\n","import { memo } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n//\r\nimport BackgroundIllustration from './BackgroundIllustration';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction UploadIllustration({ ...other }) {\r\n const theme = useTheme();\r\n\r\n const PRIMARY_MAIN = theme.palette.primary.main;\r\n\r\n const PRIMARY_DARK = theme.palette.primary.dark;\r\n\r\n const PRIMARY_DARKER = theme.palette.primary.darker;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(UploadIllustration);\r\n","import { memo } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction BookingIllustration({ ...other }) {\r\n const theme = useTheme();\r\n\r\n const PRIMARY_LIGHTER = theme.palette.primary.lighter;\r\n\r\n const PRIMARY_LIGHT = theme.palette.primary.light;\r\n\r\n const PRIMARY_MAIN = theme.palette.primary.main;\r\n\r\n const PRIMARY_DARK = theme.palette.primary.dark;\r\n\r\n const PRIMARY_DARKER = theme.palette.primary.darker;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(BookingIllustration);\r\n","import { memo } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n//\r\nimport BackgroundIllustration from './BackgroundIllustration';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction ForbiddenIllustration({ ...other }) {\r\n const theme = useTheme();\r\n\r\n const PRIMARY_LIGHT = theme.palette.primary.light;\r\n\r\n const PRIMARY_MAIN = theme.palette.primary.main;\r\n\r\n const PRIMARY_DARK = theme.palette.primary.dark;\r\n\r\n const PRIMARY_DARKER = theme.palette.primary.darker;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(ForbiddenIllustration);\r\n","import { memo } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n//\r\nimport BackgroundIllustration from './BackgroundIllustration';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction OrderCompleteIllustration({ ...other }) {\r\n const theme = useTheme();\r\n\r\n const PRIMARY_LIGHT = theme.palette.primary.light;\r\n\r\n const PRIMARY_MAIN = theme.palette.primary.main;\r\n\r\n const PRIMARY_DARK = theme.palette.primary.dark;\r\n\r\n const PRIMARY_DARKER = theme.palette.primary.darker;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(OrderCompleteIllustration);\r\n","// routes\r\nimport { PATH_AUTH } from '../routes/paths';\r\n// utils\r\nimport axios from '../utils/axios';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction jwtDecode(token) {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n window\r\n .atob(base64)\r\n .split('')\r\n .map((c) => `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`)\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const isValidToken = (accessToken) => {\r\n if (!accessToken) {\r\n return false;\r\n }\r\n\r\n const decoded = jwtDecode(accessToken);\r\n\r\n const currentTime = Date.now() / 1000;\r\n\r\n return decoded.exp > currentTime;\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const tokenExpired = (exp) => {\r\n // eslint-disable-next-line prefer-const\r\n let expiredTimer;\r\n\r\n const currentTime = Date.now();\r\n\r\n // Test token expires after 10s\r\n // const timeLeft = currentTime + 10000 - currentTime; // ~10s\r\n const timeLeft = exp * 1000 - currentTime;\r\n\r\n clearTimeout(expiredTimer);\r\n\r\n expiredTimer = setTimeout(() => {\r\n alert('Token expired');\r\n\r\n localStorage.removeItem('accessToken');\r\n\r\n window.location.href = PATH_AUTH.login;\r\n }, timeLeft);\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const setSession = (accessToken) => {\r\n if (accessToken) {\r\n localStorage.setItem('accessToken', accessToken);\r\n\r\n axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\r\n\r\n // This function below will handle when token is expired\r\n const { exp } = jwtDecode(accessToken); // ~3 days by minimals server\r\n tokenExpired(exp);\r\n } else {\r\n localStorage.removeItem('accessToken');\r\n\r\n delete axios.defaults.headers.common.Authorization;\r\n }\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const setUser = (user) => {\r\n if (user) {\r\n localStorage.setItem('user', user);\r\n } else {\r\n localStorage.removeItem('user');\r\n }\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const setRole = (role) => {\r\n if (role) {\r\n localStorage.setItem('role', role);\r\n } else {\r\n localStorage.removeItem('role');\r\n }\r\n};","import PropTypes from 'prop-types';\r\nimport { createContext, useEffect, useReducer, useCallback, useMemo } from 'react';\r\n// utils\r\nimport axios from '../utils/axios';\r\nimport localStorageAvailable from '../utils/localStorageAvailable';\r\n//\r\nimport { isValidToken, setSession, setUser, setRole } from './utils';\r\n//\r\nimport { ServerConfiguration } from '../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// NOTE:\r\n// We only build demo at basic level.\r\n// Customer will need to do some extra handling yourself if you want to extend the logic and other features...\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst initialState = {\r\n isInitialized: false,\r\n isAuthenticated: false,\r\n user: null,\r\n page: [],\r\n requestOtp: false,\r\n requestPWOtp: false,\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n if (action.type === 'INITIAL') {\r\n return {\r\n isInitialized: true,\r\n isAuthenticated: action.payload.isAuthenticated,\r\n user: action.payload.user,\r\n };\r\n }\r\n if (action.type === 'LOGIN') {\r\n return {\r\n ...state,\r\n isAuthenticated: true,\r\n user: action.payload.user,\r\n };\r\n }\r\n if (action.type === 'UPDATE_PROFILE') {\r\n return {\r\n ...state,\r\n user: action.payload.user,\r\n };\r\n }\r\n if (action.type === 'REGISTER') {\r\n return {\r\n ...state,\r\n isAuthenticated: true,\r\n user: action.payload.user,\r\n };\r\n }\r\n if (action.type === 'FORGOTPASSWORD') {\r\n return {\r\n ...state,\r\n requestPWOtp: true\r\n };\r\n }\r\n if (action.type === 'REQUEST_OTP') {\r\n return {\r\n ...state,\r\n requestOtp: true,\r\n };\r\n }\r\n if (action.type === 'LOGOUT') {\r\n return {\r\n ...state,\r\n isAuthenticated: false,\r\n user: null,\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const AuthContext = createContext(null);\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nAuthProvider.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport function AuthProvider({ children }) {\r\n // Change this to your server url\r\n const url = ServerConfiguration.testingServerUrl;\r\n\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n const storageAvailable = localStorageAvailable();\r\n\r\n const initialize = useCallback(async () => {\r\n try {\r\n const accessToken = storageAvailable ? localStorage.getItem('user') : '';\r\n const accessRole = storageAvailable ? localStorage.getItem('role') : '';\r\n\r\n if (accessToken) {\r\n dispatch({\r\n type: 'INITIAL',\r\n payload: {\r\n isAuthenticated: true,\r\n user: JSON.parse(accessToken)[0],\r\n },\r\n });\r\n } else {\r\n dispatch({\r\n type: 'INITIAL',\r\n payload: {\r\n isAuthenticated: false,\r\n user: null,\r\n },\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n dispatch({\r\n type: 'INITIAL',\r\n payload: {\r\n isAuthenticated: false,\r\n user: null,\r\n },\r\n });\r\n }\r\n }, [storageAvailable]);\r\n\r\n useEffect(() => {\r\n initialize();\r\n }, [initialize]);\r\n\r\n // LOGIN\r\n const login = useCallback(async (email, projectId, password) => {\r\n const response = await fetch(\r\n `${url}User_Login?USEREMAIL=${email}&PROJECTID=${projectId}&PASSWORD=${password}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n setUser(data.ReturnData);\r\n dispatch({\r\n type: 'LOGIN',\r\n payload: {\r\n user: JSON.parse(data.ReturnData)[0],\r\n },\r\n });\r\n return true;\r\n }\r\n return false;\r\n }, [url]);\r\n\r\n // GOOGLE LOGIN\r\n const googleLogin = useCallback(async (email, projectId, token, type, firstName, lastName) => {\r\n const response = await fetch(\r\n `${url}User_Login_GoogleFB?USEREMAIL=${email}&PROJECTID=${projectId}&TOKEN=${token}&TYPE=${type}&FIRSTNAME=${firstName}&LASTNAME=${lastName}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.StaffID !== 0) {\r\n dispatch({\r\n type: 'LOGIN',\r\n payload: {\r\n user: data,\r\n },\r\n });\r\n return true;\r\n }\r\n return false;\r\n }, [url]);\r\n\r\n // REGISTER\r\n const register = useCallback(async (user, projectId, userTypeId) => {\r\n const response = await fetch(\r\n `${url}User_Register_RequestOTP?USEREMAIL=${user.email}&PROJECTID=${projectId}&PASSWORD=${user.password}&USERCONTACTNO=${user.contactNo}&USERDOB=${user.dob}&USERORCHIDID=${user.orchidId}&USERPREFIX=${user.prefix}&USERFIRSTNAME=${user.firstName}&USERLASTNAME=${user.lastName}&USERINSTITUTION=${user.institution}&USERDEGREE=${user.degree}&USERADDRESS=${user.address}&USERSTATE=${user.nationState}&USERCOUNTRYID=${user.country}&USERCITY=${user.city}&USERPOSTALCODE=${user.zipCode}&USERRESEARCHID=${user.researchId}&USERGENDER=${user.gender}®ISTERAUTHCODE=${user.REGISTERAUTHCODE}&USEREXPERTISE=${user.expertise}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch({\r\n type: 'REQUEST_OTP',\r\n });\r\n return JSON.parse(data.ReturnData)[0];\r\n }\r\n return false;\r\n }, [url]); \r\n \r\n // FORGOT PASSWORD\r\n const forgotPassword = useCallback(async (USERID, TYPE, email, PROJECTID) => {\r\n console.log(`${url}User_Profile_SentOTPVerification?USERID=${USERID}&TYPE=${TYPE}&VALIDATIONFIELD=${email}&PROJECTID=${PROJECTID}`)\r\n const response = await fetch(\r\n `${url}User_Profile_SentOTPVerification?USERID=${USERID}&TYPE=${TYPE}&VALIDATIONFIELD=${email}&PROJECTID=${PROJECTID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch({\r\n type: 'FORGOTPASSWORD',\r\n });\r\n return JSON.parse(data.ReturnData)[0];\r\n }\r\n return false;\r\n }, [url]);\r\n\r\n // VERIFY FORGOT PASSWORD\r\n const verifyForgotPasswordOTP = useCallback(async (USEREMAIL, OTP, PASSWORD, PROJECTID) => {\r\n console.log(`${url}User_ForgetPassword_VerifyOTP?USEREMAIL=${USEREMAIL}&OTP=${OTP}&PASSWORD=${PASSWORD}&PROJECTID=${PROJECTID}`)\r\n const response = await fetch(\r\n `${url}User_ForgetPassword_VerifyOTP?USEREMAIL=${USEREMAIL}&OTP=${OTP}&PASSWORD=${PASSWORD}&PROJECTID=${PROJECTID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch({\r\n type: 'FORGOTPASSWORD',\r\n });\r\n return JSON.parse(data.ReturnData)[0];\r\n }\r\n return false;\r\n }, [url]);\r\n\r\n // VERIFY OTP\r\n const verifyOTP = useCallback(async (email, userId, token, otp, type, PROJECTID) => {\r\n const response = await fetch(\r\n `${url}User_Register_VerifyOTP?USEREMAIL=${email}&USERID=${userId}&TOKEN=${token}&OTP=${otp}&TYPE=${type}&PROJECTID=${PROJECTID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n setUser(data.ReturnData);\r\n dispatch({\r\n type: 'REGISTER',\r\n payload: {\r\n user: JSON.parse(data.ReturnData)[0],\r\n },\r\n });\r\n return true;\r\n }\r\n return false;\r\n }, [url]);\r\n\r\n // LOGOUT\r\n const logout = useCallback(() => {\r\n setSession(null);\r\n setUser(null);\r\n dispatch({\r\n type: 'LOGOUT',\r\n });\r\n }, []);\r\n\r\n // SET STATE USER\r\n const setStateUser = useCallback((data) => {\r\n setUser(JSON.stringify(data));\r\n dispatch({\r\n type: 'UPDATE_PROFILE',\r\n payload: {\r\n user: data[0],\r\n },\r\n });\r\n }, []);\r\n\r\n const memoizedValue = useMemo(\r\n () => ({\r\n isInitialized: state.isInitialized,\r\n isAuthenticated: state.isAuthenticated,\r\n user: state.user,\r\n page: state.page,\r\n requestOtp: state.requestOtp,\r\n requestPWOtp: state.requestPWOtp,\r\n method: 'jwt',\r\n login,\r\n register,\r\n forgotPassword,\r\n verifyForgotPasswordOTP,\r\n logout,\r\n googleLogin,\r\n setStateUser,\r\n verifyOTP,\r\n }),\r\n [state.isAuthenticated, state.isInitialized, state.user, state.page, state.requestOtp, state.requestPWOtp, login, logout, register, forgotPassword, verifyForgotPasswordOTP, googleLogin, setStateUser, verifyOTP]\r\n );\r\n\r\n return {children};\r\n}\r\n","import { useContext } from 'react';\r\n//\r\nimport { AuthContext } from './JwtContext';\r\n// import { AuthContext } from './Auth0Context';\r\n// import { AuthContext } from './FirebaseContext';\r\n// import { AuthContext } from './AwsCognitoContext';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const useAuthContext = () => {\r\n const context = useContext(AuthContext);\r\n\r\n if (!context) throw new Error('useAuthContext context must be use inside AuthProvider');\r\n\r\n return context;\r\n};\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const TRANSITION = {\r\n duration: 2,\r\n ease: [0.43, 0.13, 0.23, 0.96],\r\n};\r\n\r\nexport const varPath = {\r\n animate: {\r\n fillOpacity: [0, 0, 1],\r\n pathLength: [1, 0.4, 0],\r\n transition: TRANSITION,\r\n },\r\n};\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const varTranHover = (props) => {\r\n const duration = props?.duration || 0.32;\r\n const ease = props?.ease || [0.43, 0.13, 0.23, 0.96];\r\n\r\n return { duration, ease };\r\n};\r\n\r\nexport const varTranEnter = (props) => {\r\n const duration = props?.durationIn || 0.64;\r\n const ease = props?.easeIn || [0.43, 0.13, 0.23, 0.96];\r\n\r\n return { duration, ease };\r\n};\r\n\r\nexport const varTranExit = (props) => {\r\n const duration = props?.durationOut || 0.48;\r\n const ease = props?.easeOut || [0.43, 0.13, 0.23, 0.96];\r\n\r\n return { duration, ease };\r\n};\r\n","//\r\nimport { varTranEnter, varTranExit } from './transition';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const varFade = (props) => {\r\n const distance = props?.distance || 120;\r\n const durationIn = props?.durationIn;\r\n const durationOut = props?.durationOut;\r\n const easeIn = props?.easeIn;\r\n const easeOut = props?.easeOut;\r\n\r\n return {\r\n // IN\r\n in: {\r\n initial: { opacity: 0 },\r\n animate: { opacity: 1, transition: varTranEnter },\r\n exit: { opacity: 0, transition: varTranExit },\r\n },\r\n inUp: {\r\n initial: { y: distance, opacity: 0 },\r\n animate: { y: 0, opacity: 1, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { y: distance, opacity: 0, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n inDown: {\r\n initial: { y: -distance, opacity: 0 },\r\n animate: { y: 0, opacity: 1, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { y: -distance, opacity: 0, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n inLeft: {\r\n initial: { x: -distance, opacity: 0 },\r\n animate: { x: 0, opacity: 1, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { x: -distance, opacity: 0, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n inRight: {\r\n initial: { x: distance, opacity: 0 },\r\n animate: { x: 0, opacity: 1, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { x: distance, opacity: 0, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n\r\n // OUT\r\n out: {\r\n initial: { opacity: 1 },\r\n animate: { opacity: 0, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { opacity: 1, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n outUp: {\r\n initial: { y: 0, opacity: 1 },\r\n animate: { y: -distance, opacity: 0, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { y: 0, opacity: 1, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n outDown: {\r\n initial: { y: 0, opacity: 1 },\r\n animate: { y: distance, opacity: 0, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { y: 0, opacity: 1, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n outLeft: {\r\n initial: { x: 0, opacity: 1 },\r\n animate: { x: -distance, opacity: 0, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { x: 0, opacity: 1, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n outRight: {\r\n initial: { x: 0, opacity: 1 },\r\n animate: { x: distance, opacity: 0, transition: varTranEnter({ durationIn, easeIn }) },\r\n exit: { x: 0, opacity: 1, transition: varTranExit({ durationOut, easeOut }) },\r\n },\r\n };\r\n};\r\n","//\r\nimport { varTranEnter, varTranExit } from './transition';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const varBounce = (props) => {\r\n const durationIn = props?.durationIn;\r\n const durationOut = props?.durationOut;\r\n const easeIn = props?.easeIn;\r\n const easeOut = props?.easeOut;\r\n\r\n return {\r\n // IN\r\n in: {\r\n initial: {},\r\n animate: {\r\n scale: [0.3, 1.1, 0.9, 1.03, 0.97, 1],\r\n opacity: [0, 1, 1, 1, 1, 1],\r\n transition: varTranEnter({ durationIn, easeIn }),\r\n },\r\n exit: {\r\n scale: [0.9, 1.1, 0.3],\r\n opacity: [1, 1, 0],\r\n },\r\n },\r\n inUp: {\r\n initial: {},\r\n animate: {\r\n y: [720, -24, 12, -4, 0],\r\n scaleY: [4, 0.9, 0.95, 0.985, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: { ...varTranEnter({ durationIn, easeIn }) },\r\n },\r\n exit: {\r\n y: [12, -24, 720],\r\n scaleY: [0.985, 0.9, 3],\r\n opacity: [1, 1, 0],\r\n transition: varTranExit({ durationOut, easeOut }),\r\n },\r\n },\r\n inDown: {\r\n initial: {},\r\n animate: {\r\n y: [-720, 24, -12, 4, 0],\r\n scaleY: [4, 0.9, 0.95, 0.985, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: varTranEnter({ durationIn, easeIn }),\r\n },\r\n exit: {\r\n y: [-12, 24, -720],\r\n scaleY: [0.985, 0.9, 3],\r\n opacity: [1, 1, 0],\r\n transition: varTranExit({ durationOut, easeOut }),\r\n },\r\n },\r\n inLeft: {\r\n initial: {},\r\n animate: {\r\n x: [-720, 24, -12, 4, 0],\r\n scaleX: [3, 1, 0.98, 0.995, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: varTranEnter({ durationIn, easeIn }),\r\n },\r\n exit: {\r\n x: [0, 24, -720],\r\n scaleX: [1, 0.9, 2],\r\n opacity: [1, 1, 0],\r\n transition: varTranExit({ durationOut, easeOut }),\r\n },\r\n },\r\n inRight: {\r\n initial: {},\r\n animate: {\r\n x: [720, -24, 12, -4, 0],\r\n scaleX: [3, 1, 0.98, 0.995, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: varTranEnter({ durationIn, easeIn }),\r\n },\r\n exit: {\r\n x: [0, -24, 720],\r\n scaleX: [1, 0.9, 2],\r\n opacity: [1, 1, 0],\r\n transition: varTranExit({ durationOut, easeOut }),\r\n },\r\n },\r\n\r\n // OUT\r\n out: {\r\n animate: { scale: [0.9, 1.1, 0.3], opacity: [1, 1, 0] },\r\n },\r\n outUp: {\r\n animate: { y: [-12, 24, -720], scaleY: [0.985, 0.9, 3], opacity: [1, 1, 0] },\r\n },\r\n outDown: {\r\n animate: { y: [12, -24, 720], scaleY: [0.985, 0.9, 3], opacity: [1, 1, 0] },\r\n },\r\n outLeft: {\r\n animate: { x: [0, 24, -720], scaleX: [1, 0.9, 2], opacity: [1, 1, 0] },\r\n },\r\n outRight: {\r\n animate: { x: [0, -24, 720], scaleX: [1, 0.9, 2], opacity: [1, 1, 0] },\r\n },\r\n };\r\n};\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const varHover = (scale) => ({\r\n hover: {\r\n scale: scale || 1.1,\r\n },\r\n});\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const varContainer = (props) => {\r\n const staggerIn = props?.staggerIn || 0.05;\r\n const delayIn = props?.staggerIn || 0.05;\r\n const staggerOut = props?.staggerIn || 0.05;\r\n\r\n return {\r\n animate: {\r\n transition: {\r\n staggerChildren: staggerIn,\r\n delayChildren: delayIn,\r\n },\r\n },\r\n exit: {\r\n transition: {\r\n staggerChildren: staggerOut,\r\n staggerDirection: -1,\r\n },\r\n },\r\n };\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport { m, AnimatePresence } from 'framer-motion';\r\n// @mui\r\nimport { Dialog, Box, Paper } from '@mui/material';\r\n//\r\nimport { varFade } from './variants';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nDialogAnimate.propTypes = {\r\n sx: PropTypes.object,\r\n open: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n children: PropTypes.node,\r\n variants: PropTypes.object,\r\n};\r\n\r\nexport default function DialogAnimate({ open = false, variants, onClose, children, sx, ...other }) {\r\n return (\r\n \r\n {open && (\r\n (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n )}\r\n {...other}\r\n >\r\n {children}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"disableFocusRipple\", \"focusVisibleClassName\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport fabClasses, { getFabUtilityClass } from './fabClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n variant,\n classes,\n size\n } = ownerState;\n const slots = {\n root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n };\n const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst FabRoot = styled(ButtonBase, {\n name: 'MuiFab',\n slot: 'Root',\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$palette$getCon, _theme$palette;\n return _extends({}, theme.typography.button, {\n minHeight: 36,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n borderRadius: '50%',\n padding: 0,\n minWidth: 0,\n width: 56,\n height: 56,\n zIndex: (theme.vars || theme).zIndex.fab,\n boxShadow: (theme.vars || theme).shadows[6],\n '&:active': {\n boxShadow: (theme.vars || theme).shadows[12]\n },\n color: theme.vars ? theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n backgroundColor: (theme.vars || theme).palette.grey[300],\n '&:hover': {\n backgroundColor: (theme.vars || theme).palette.grey.A100,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.grey[300]\n },\n textDecoration: 'none'\n },\n [`&.${fabClasses.focusVisible}`]: {\n boxShadow: (theme.vars || theme).shadows[6]\n }\n }, ownerState.size === 'small' && {\n width: 40,\n height: 40\n }, ownerState.size === 'medium' && {\n width: 48,\n height: 48\n }, ownerState.variant === 'extended' && {\n borderRadius: 48 / 2,\n padding: '0 16px',\n width: 'auto',\n minHeight: 'auto',\n minWidth: 48,\n height: 48\n }, ownerState.variant === 'extended' && ownerState.size === 'small' && {\n width: 'auto',\n padding: '0 8px',\n borderRadius: 34 / 2,\n minWidth: 34,\n height: 34\n }, ownerState.variant === 'extended' && ownerState.size === 'medium' && {\n width: 'auto',\n padding: '0 16px',\n borderRadius: 40 / 2,\n minWidth: 40,\n height: 40\n }, ownerState.color === 'inherit' && {\n color: 'inherit'\n });\n}, ({\n theme,\n ownerState\n}) => _extends({}, ownerState.color !== 'inherit' && ownerState.color !== 'default' && (theme.vars || theme).palette[ownerState.color] != null && {\n color: (theme.vars || theme).palette[ownerState.color].contrastText,\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n '&:hover': {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }\n }\n}), ({\n theme\n}) => ({\n [`&.${fabClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled,\n boxShadow: (theme.vars || theme).shadows[0],\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n }\n}));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiFab'\n });\n const {\n children,\n className,\n color = 'default',\n component = 'button',\n disabled = false,\n disableFocusRipple = false,\n focusVisibleClassName,\n size = 'large',\n variant = 'circular'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableFocusRipple,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FabRoot, _extends({\n className: clsx(classes.root, className),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ownerState: ownerState,\n ref: ref\n }, other, {\n classes: classes,\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'default'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n */\n disableRipple: PropTypes.bool,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'large'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'circular'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import PropTypes from 'prop-types';\r\nimport { m } from 'framer-motion';\r\nimport { forwardRef } from 'react';\r\n// @mui\r\nimport { Box, Fab } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst FabButtonAnimate = forwardRef(({ size = 'large', children, sx, sxWrap, ...other }, ref) => (\r\n \r\n \r\n {children}\r\n \r\n \r\n));\r\n\r\nFabButtonAnimate.propTypes = {\r\n children: PropTypes.node,\r\n color: PropTypes.oneOf([\r\n 'inherit',\r\n 'default',\r\n 'primary',\r\n 'secondary',\r\n 'info',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n ]),\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n sx: PropTypes.object,\r\n sxWrap: PropTypes.object,\r\n};\r\n\r\nexport default FabButtonAnimate;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst varSmall = {\r\n hover: { scale: 1.07 },\r\n tap: { scale: 0.97 },\r\n};\r\n\r\nconst varMedium = {\r\n hover: { scale: 1.06 },\r\n tap: { scale: 0.98 },\r\n};\r\n\r\nconst varLarge = {\r\n hover: { scale: 1.05 },\r\n tap: { scale: 0.99 },\r\n};\r\n\r\nAnimateWrap.propTypes = {\r\n children: PropTypes.node,\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n sxWrap: PropTypes.object,\r\n};\r\n\r\nfunction AnimateWrap({ size, children, sxWrap }) {\r\n const isSmall = size === 'small';\r\n const isLarge = size === 'large';\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { m } from 'framer-motion';\r\nimport { forwardRef } from 'react';\r\n// @mui\r\nimport { Box, IconButton } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst IconButtonAnimate = forwardRef(({ children, size = 'medium', ...other }, ref) => (\r\n \r\n \r\n {children}\r\n \r\n \r\n));\r\n\r\nIconButtonAnimate.propTypes = {\r\n children: PropTypes.node,\r\n color: PropTypes.oneOf([\r\n 'inherit',\r\n 'default',\r\n 'primary',\r\n 'secondary',\r\n 'info',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n ]),\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n};\r\n\r\nexport default IconButtonAnimate;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst varSmall = {\r\n hover: { scale: 1.1 },\r\n tap: { scale: 0.95 },\r\n};\r\n\r\nconst varMedium = {\r\n hover: { scale: 1.09 },\r\n tap: { scale: 0.97 },\r\n};\r\n\r\nconst varLarge = {\r\n hover: { scale: 1.08 },\r\n tap: { scale: 0.99 },\r\n};\r\n\r\nAnimateWrap.propTypes = {\r\n children: PropTypes.node,\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n};\r\n\r\nfunction AnimateWrap({ size, children }) {\r\n const isSmall = size === 'small';\r\n const isLarge = size === 'large';\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { m } from 'framer-motion';\r\n// @mui\r\nimport { Box } from '@mui/material';\r\n//\r\nimport { varContainer } from './variants';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMotionContainer.propTypes = {\r\n action: PropTypes.bool,\r\n animate: PropTypes.bool,\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function MotionContainer({ animate, action = false, children, ...other }) {\r\n if (action) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import * as React from 'react';\nimport { useState, useRef, useEffect } from 'react';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { loadFeatures } from '../../motion/features/load-features.mjs';\n\n/**\n * Used in conjunction with the `m` component to reduce bundle size.\n *\n * `m` is a version of the `motion` component that only loads functionality\n * critical for the initial render.\n *\n * `LazyMotion` can then be used to either synchronously or asynchronously\n * load animation and gesture support.\n *\n * ```jsx\n * // Synchronous loading\n * import { LazyMotion, m, domAnimations } from \"framer-motion\"\n *\n * function App() {\n * return (\n * \n * \n * \n * )\n * }\n *\n * // Asynchronous loading\n * import { LazyMotion, m } from \"framer-motion\"\n *\n * function App() {\n * return (\n * import('./path/to/domAnimations')}>\n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nfunction LazyMotion({ children, features, strict = false }) {\n const [, setIsLoaded] = useState(!isLazyBundle(features));\n const loadedRenderer = useRef(undefined);\n /**\n * If this is a synchronous load, load features immediately\n */\n if (!isLazyBundle(features)) {\n const { renderer, ...loadedFeatures } = features;\n loadedRenderer.current = renderer;\n loadFeatures(loadedFeatures);\n }\n useEffect(() => {\n if (isLazyBundle(features)) {\n features().then(({ renderer, ...loadedFeatures }) => {\n loadFeatures(loadedFeatures);\n loadedRenderer.current = renderer;\n setIsLoaded(true);\n });\n }\n }, []);\n return (React.createElement(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict } }, children));\n}\nfunction isLazyBundle(features) {\n return typeof features === \"function\";\n}\n\nexport { LazyMotion };\n","import PropTypes from 'prop-types';\r\nimport { LazyMotion, m } from 'framer-motion';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// eslint-disable-next-line import/extensions\r\nconst loadFeatures = () => import('./features.js').then((res) => res.default);\r\n\r\nMotionLazyContainer.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function MotionLazyContainer({ children }) {\r\n return (\r\n \r\n {children} \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { alpha, useTheme } from '@mui/material/styles';\r\nimport { GlobalStyles } from '@mui/material';\r\n// utils\r\nimport { bgBlur } from '../../utils/cssStyles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function StyledChart() {\r\n const theme = useTheme();\r\n\r\n const inputGlobalStyles = (\r\n \r\n );\r\n\r\n return inputGlobalStyles;\r\n}\r\n","import merge from 'lodash/merge';\r\n// @mui\r\nimport { useTheme, alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function useChart(options) {\r\n const theme = useTheme();\r\n\r\n const LABEL_TOTAL = {\r\n show: true,\r\n label: 'Total',\r\n color: theme.palette.text.secondary,\r\n fontSize: theme.typography.subtitle2.fontSize,\r\n fontWeight: theme.typography.subtitle2.fontWeight,\r\n lineHeight: theme.typography.subtitle2.lineHeight,\r\n };\r\n\r\n const LABEL_VALUE = {\r\n offsetY: 8,\r\n color: theme.palette.text.primary,\r\n fontSize: theme.typography.h3.fontSize,\r\n fontWeight: theme.typography.h3.fontWeight,\r\n lineHeight: theme.typography.h3.lineHeight,\r\n };\r\n\r\n const baseOptions = {\r\n // Colors\r\n colors: [\r\n theme.palette.primary.main,\r\n theme.palette.warning.main,\r\n theme.palette.info.main,\r\n theme.palette.error.main,\r\n theme.palette.success.main,\r\n theme.palette.warning.dark,\r\n theme.palette.success.darker,\r\n theme.palette.info.dark,\r\n theme.palette.info.darker,\r\n ],\r\n\r\n // Chart\r\n chart: {\r\n toolbar: { show: false },\r\n zoom: { enabled: false },\r\n // animations: { enabled: false },\r\n foreColor: theme.palette.text.disabled,\r\n fontFamily: theme.typography.fontFamily,\r\n },\r\n\r\n // States\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'lighten',\r\n value: 0.04,\r\n },\r\n },\r\n active: {\r\n filter: {\r\n type: 'darken',\r\n value: 0.88,\r\n },\r\n },\r\n },\r\n\r\n // Fill\r\n fill: {\r\n opacity: 1,\r\n gradient: {\r\n type: 'vertical',\r\n shadeIntensity: 0,\r\n opacityFrom: 0.4,\r\n opacityTo: 0,\r\n stops: [0, 100],\r\n },\r\n },\r\n\r\n // Datalabels\r\n dataLabels: { enabled: false },\r\n\r\n // Stroke\r\n stroke: {\r\n width: 3,\r\n curve: 'smooth',\r\n lineCap: 'round',\r\n },\r\n\r\n // Grid\r\n grid: {\r\n strokeDashArray: 3,\r\n borderColor: theme.palette.divider,\r\n },\r\n\r\n // Xaxis\r\n xaxis: {\r\n axisBorder: { show: false },\r\n axisTicks: { show: false },\r\n },\r\n\r\n // Markers\r\n markers: {\r\n size: 0,\r\n strokeColors: theme.palette.background.paper,\r\n },\r\n\r\n // Tooltip\r\n tooltip: {\r\n x: {\r\n show: false,\r\n },\r\n },\r\n\r\n // Legend\r\n legend: {\r\n show: true,\r\n fontSize: String(13),\r\n position: 'top',\r\n horizontalAlign: 'right',\r\n markers: {\r\n radius: 12,\r\n },\r\n fontWeight: 500,\r\n itemMargin: { horizontal: 12 },\r\n labels: {\r\n colors: theme.palette.text.primary,\r\n },\r\n },\r\n\r\n // plotOptions\r\n plotOptions: {\r\n // Bar\r\n bar: {\r\n borderRadius: 4,\r\n columnWidth: '28%',\r\n borderRadiusApplication: 'end',\r\n borderRadiusWhenStacked: 'last',\r\n },\r\n\r\n // Pie + Donut\r\n pie: {\r\n donut: {\r\n labels: {\r\n show: true,\r\n value: LABEL_VALUE,\r\n total: LABEL_TOTAL,\r\n },\r\n },\r\n },\r\n\r\n // Radialbar\r\n radialBar: {\r\n track: {\r\n strokeWidth: '100%',\r\n background: alpha(theme.palette.grey[500], 0.16),\r\n },\r\n dataLabels: {\r\n value: LABEL_VALUE,\r\n total: LABEL_TOTAL,\r\n },\r\n },\r\n\r\n // Radar\r\n radar: {\r\n polygons: {\r\n fill: { colors: ['transparent'] },\r\n strokeColors: theme.palette.divider,\r\n connectorColors: theme.palette.divider,\r\n },\r\n },\r\n\r\n // polarArea\r\n polarArea: {\r\n rings: {\r\n strokeColor: theme.palette.divider,\r\n },\r\n spokes: {\r\n connectorColors: theme.palette.divider,\r\n },\r\n },\r\n },\r\n\r\n // Responsive\r\n responsive: [\r\n {\r\n // sm\r\n breakpoint: theme.breakpoints.values.sm,\r\n options: {\r\n plotOptions: { bar: { columnWidth: '40%' } },\r\n },\r\n },\r\n {\r\n // md\r\n breakpoint: theme.breakpoints.values.md,\r\n options: {\r\n plotOptions: { bar: { columnWidth: '32%' } },\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return merge(baseOptions, options);\r\n}\r\n","import Chart from 'react-apexcharts';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport { default as StyledChart } from './styles';\r\n\r\nexport { default as useChart } from './useChart';\r\n\r\nexport default Chart;\r\n","'use client';\n\nimport { usePreviousProps } from '@mui/utils';\n/**\n *\n * Demos:\n *\n * - [Badge](https://next.mui.com/base-ui/react-badge/#hook)\n *\n * API:\n *\n * - [useBadge API](https://next.mui.com/base-ui/react-badge/hooks-api/#use-badge)\n */\nfunction useBadge(parameters) {\n const {\n badgeContent: badgeContentProp,\n invisible: invisibleProp = false,\n max: maxProp = 99,\n showZero = false\n } = parameters;\n const prevProps = usePreviousProps({\n badgeContent: badgeContentProp,\n max: maxProp\n });\n let invisible = invisibleProp;\n if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n invisible = true;\n }\n const {\n badgeContent,\n max = maxProp\n } = invisible ? prevProps : parameters;\n const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n return {\n badgeContent,\n invisible,\n max,\n displayValue\n };\n}\nexport default useBadge;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular',\n// TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorOrigin\", \"className\", \"classes\", \"component\", \"components\", \"componentsProps\", \"children\", \"overlap\", \"color\", \"invisible\", \"max\", \"badgeContent\", \"slots\", \"slotProps\", \"showZero\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport usePreviousProps from '@mui/utils/usePreviousProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport useBadge from './useBadge';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport badgeClasses, { getBadgeUtilityClass } from './badgeClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\nconst useUtilityClasses = ownerState => {\n const {\n color,\n anchorOrigin,\n invisible,\n overlap,\n variant,\n classes = {}\n } = ownerState;\n const slots = {\n root: ['root'],\n badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n };\n return composeClasses(slots, getBadgeUtilityClass, classes);\n};\nconst BadgeRoot = styled('span', {\n name: 'MuiBadge',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n position: 'relative',\n display: 'inline-flex',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n name: 'MuiBadge',\n slot: 'Badge',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n }\n})(({\n theme\n}) => {\n var _theme$vars;\n return {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n boxSizing: 'border-box',\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(12),\n minWidth: RADIUS_STANDARD * 2,\n lineHeight: 1,\n padding: '0 6px',\n height: RADIUS_STANDARD * 2,\n borderRadius: RADIUS_STANDARD,\n zIndex: 1,\n // Render the badge on top of potential ripples.\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.enteringScreen\n }),\n variants: [...Object.keys(((_theme$vars = theme.vars) != null ? _theme$vars : theme).palette).filter(key => {\n var _theme$vars2, _theme$vars3;\n return ((_theme$vars2 = theme.vars) != null ? _theme$vars2 : theme).palette[key].main && ((_theme$vars3 = theme.vars) != null ? _theme$vars3 : theme).palette[key].contrastText;\n }).map(color => ({\n props: {\n color\n },\n style: {\n backgroundColor: (theme.vars || theme).palette[color].main,\n color: (theme.vars || theme).palette[color].contrastText\n }\n })), {\n props: {\n variant: 'dot'\n },\n style: {\n borderRadius: RADIUS_DOT,\n height: RADIUS_DOT * 2,\n minWidth: RADIUS_DOT * 2,\n padding: 0\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n style: {\n top: 0,\n right: 0,\n transform: 'scale(1) translate(50%, -50%)',\n transformOrigin: '100% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, -50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',\n style: {\n bottom: 0,\n right: 0,\n transform: 'scale(1) translate(50%, 50%)',\n transformOrigin: '100% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, 50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n style: {\n top: 0,\n left: 0,\n transform: 'scale(1) translate(-50%, -50%)',\n transformOrigin: '0% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, -50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',\n style: {\n bottom: 0,\n left: 0,\n transform: 'scale(1) translate(-50%, 50%)',\n transformOrigin: '0% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, 50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n style: {\n top: '14%',\n right: '14%',\n transform: 'scale(1) translate(50%, -50%)',\n transformOrigin: '100% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, -50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',\n style: {\n bottom: '14%',\n right: '14%',\n transform: 'scale(1) translate(50%, 50%)',\n transformOrigin: '100% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, 50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n style: {\n top: '14%',\n left: '14%',\n transform: 'scale(1) translate(-50%, -50%)',\n transformOrigin: '0% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, -50%)'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',\n style: {\n bottom: '14%',\n left: '14%',\n transform: 'scale(1) translate(-50%, 50%)',\n transformOrigin: '0% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, 50%)'\n }\n }\n }, {\n props: {\n invisible: true\n },\n style: {\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.leavingScreen\n })\n }\n }]\n };\n});\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$badge, _slotProps$root, _slotProps$badge;\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiBadge'\n });\n const {\n anchorOrigin: anchorOriginProp = {\n vertical: 'top',\n horizontal: 'right'\n },\n className,\n component,\n components = {},\n componentsProps = {},\n children,\n overlap: overlapProp = 'rectangular',\n color: colorProp = 'default',\n invisible: invisibleProp = false,\n max: maxProp = 99,\n badgeContent: badgeContentProp,\n slots,\n slotProps,\n showZero = false,\n variant: variantProp = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n badgeContent,\n invisible: invisibleFromHook,\n max,\n displayValue: displayValueFromHook\n } = useBadge({\n max: maxProp,\n invisible: invisibleProp,\n badgeContent: badgeContentProp,\n showZero\n });\n const prevProps = usePreviousProps({\n anchorOrigin: anchorOriginProp,\n color: colorProp,\n overlap: overlapProp,\n variant: variantProp,\n badgeContent: badgeContentProp\n });\n const invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';\n const {\n color = colorProp,\n overlap = overlapProp,\n anchorOrigin = anchorOriginProp,\n variant = variantProp\n } = invisible ? prevProps : props;\n const displayValue = variant !== 'dot' ? displayValueFromHook : undefined;\n const ownerState = _extends({}, props, {\n badgeContent,\n invisible,\n max,\n displayValue,\n showZero,\n anchorOrigin,\n color,\n overlap,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n\n // support both `slots` and `components` for backward compatibility\n const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : BadgeRoot;\n const BadgeSlot = (_ref2 = (_slots$badge = slots == null ? void 0 : slots.badge) != null ? _slots$badge : components.Badge) != null ? _ref2 : BadgeBadge;\n const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n const badgeSlotProps = (_slotProps$badge = slotProps == null ? void 0 : slotProps.badge) != null ? _slotProps$badge : componentsProps.badge;\n const rootProps = useSlotProps({\n elementType: RootSlot,\n externalSlotProps: rootSlotProps,\n externalForwardedProps: other,\n additionalProps: {\n ref,\n as: component\n },\n ownerState,\n className: clsx(rootSlotProps == null ? void 0 : rootSlotProps.className, classes.root, className)\n });\n const badgeProps = useSlotProps({\n elementType: BadgeSlot,\n externalSlotProps: badgeSlotProps,\n ownerState,\n className: clsx(classes.badge, badgeSlotProps == null ? void 0 : badgeSlotProps.className)\n });\n return /*#__PURE__*/_jsxs(RootSlot, _extends({}, rootProps, {\n children: [children, /*#__PURE__*/_jsx(BadgeSlot, _extends({}, badgeProps, {\n children: displayValue\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The anchor of the badge.\n * @default {\n * vertical: 'top',\n * horizontal: 'right',\n * }\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n }),\n /**\n * The content rendered within the badge.\n */\n badgeContent: PropTypes.node,\n /**\n * The badge will be added relative to this node.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'default'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Badge: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * If `true`, the badge is invisible.\n * @default false\n */\n invisible: PropTypes.bool,\n /**\n * Max count to show.\n * @default 99\n */\n max: PropTypes.number,\n /**\n * Wrapped shape the badge should overlap.\n * @default 'rectangular'\n */\n overlap: PropTypes.oneOf(['circular', 'rectangular']),\n /**\n * Controls whether the badge is hidden when `badgeContent` is zero.\n * @default false\n */\n showZero: PropTypes.bool,\n /**\n * The props used for each slot inside the Badge.\n * @default {}\n */\n slotProps: PropTypes.shape({\n badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Badge.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n badge: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'standard'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","import PropTypes from 'prop-types';\r\nimport { forwardRef } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Badge, Avatar } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst getCharAtName = (name) => name && name.charAt(0).toUpperCase();\r\n\r\nconst getColorByName = (name) => {\r\n if (['A', 'N', 'H', 'L', 'Q'].includes(getCharAtName(name))) return 'primary';\r\n if (['F', 'G', 'T', 'I', 'J'].includes(getCharAtName(name))) return 'info';\r\n if (['K', 'D', 'Y', 'B', 'O'].includes(getCharAtName(name))) return 'success';\r\n if (['P', 'E', 'R', 'S', 'U'].includes(getCharAtName(name))) return 'warning';\r\n if (['V', 'W', 'X', 'M', 'Z'].includes(getCharAtName(name))) return 'error';\r\n return 'default';\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CustomAvatar = forwardRef(({ color, name = '', BadgeProps, children, sx, src,...other }, ref) => {\r\n const theme = useTheme();\r\n\r\n const charAtName = getCharAtName(name);\r\n\r\n const colorByName = getColorByName(name);\r\n\r\n const colr = color || colorByName;\r\n\r\n const renderContent =\r\n colr === 'default' ? (\r\n \r\n {name && charAtName}\r\n {children}\r\n \r\n ) : (\r\n \r\n {name && charAtName}\r\n {children}\r\n \r\n );\r\n\r\n return BadgeProps ? (\r\n \r\n {renderContent}\r\n \r\n ) : (\r\n renderContent\r\n );\r\n});\r\n\r\nCustomAvatar.propTypes = {\r\n sx: PropTypes.object,\r\n name: PropTypes.string,\r\n src: PropTypes.string,\r\n children: PropTypes.node,\r\n BadgeProps: PropTypes.object,\r\n color: PropTypes.oneOf([\r\n 'default',\r\n 'primary',\r\n 'secondary',\r\n 'info',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n ]),\r\n};\r\n\r\nexport default CustomAvatar;\r\n","import { styled, alpha } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledEditor = styled(Box)(({ theme }) => ({\r\n overflow: 'hidden',\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n border: `solid 1px ${alpha(theme.palette.grey[500], 0.32)}`,\r\n '& .ql-container.ql-snow': {\r\n borderColor: 'transparent',\r\n ...theme.typography.body1,\r\n fontFamily: theme.typography.fontFamily,\r\n },\r\n '& .ql-editor': {\r\n minHeight: 200,\r\n maxHeight: 640,\r\n '&.ql-blank::before': {\r\n fontStyle: 'normal',\r\n color: theme.palette.text.disabled,\r\n },\r\n '& pre.ql-syntax': {\r\n ...theme.typography.body2,\r\n padding: theme.spacing(2),\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: theme.palette.grey[900],\r\n },\r\n },\r\n}));\r\n\r\nexport const StyledEditorToolbar = styled('div')(({ theme }) => {\r\n const isRTL = theme.direction === 'rtl';\r\n\r\n return {\r\n '& .ql-snow.ql-toolbar button:hover .ql-fill, .ql-snow .ql-toolbar button:hover .ql-fill, .ql-snow.ql-toolbar button:focus .ql-fill, .ql-snow .ql-toolbar button:focus .ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill':\r\n {\r\n fill: theme.palette.primary.main,\r\n },\r\n '& .ql-snow.ql-toolbar button:hover, .ql-snow .ql-toolbar button:hover, .ql-snow.ql-toolbar button:focus, .ql-snow .ql-toolbar button:focus, .ql-snow.ql-toolbar button.ql-active, .ql-snow .ql-toolbar button.ql-active, .ql-snow.ql-toolbar .ql-picker-label:hover, .ql-snow .ql-toolbar .ql-picker-label:hover, .ql-snow.ql-toolbar .ql-picker-label.ql-active, .ql-snow .ql-toolbar .ql-picker-label.ql-active, .ql-snow.ql-toolbar .ql-picker-item:hover, .ql-snow .ql-toolbar .ql-picker-item:hover, .ql-snow.ql-toolbar .ql-picker-item.ql-selected, .ql-snow .ql-toolbar .ql-picker-item.ql-selected':\r\n {\r\n color: theme.palette.primary.main,\r\n },\r\n '& .ql-snow.ql-toolbar button:hover .ql-stroke, .ql-snow .ql-toolbar button:hover .ql-stroke, .ql-snow.ql-toolbar button:focus .ql-stroke, .ql-snow .ql-toolbar button:focus .ql-stroke, .ql-snow.ql-toolbar button.ql-active .ql-stroke, .ql-snow .ql-toolbar button.ql-active .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow.ql-toolbar button:hover .ql-stroke-miter, .ql-snow .ql-toolbar button:hover .ql-stroke-miter, .ql-snow.ql-toolbar button:focus .ql-stroke-miter, .ql-snow .ql-toolbar button:focus .ql-stroke-miter, .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter':\r\n {\r\n stroke: theme.palette.primary.main,\r\n },\r\n '& .ql-stroke': {\r\n stroke: theme.palette.text.primary,\r\n },\r\n '& .ql-fill, .ql-stroke.ql-fill': {\r\n fill: theme.palette.text.primary,\r\n },\r\n '& .ql-picker, .ql-picker-options, .ql-picker-item, .ql-picker-label, button': {\r\n '&:focus': { outline: 'none' },\r\n },\r\n '& .ql-toolbar.ql-snow': {\r\n border: 'none',\r\n borderBottom: `solid 1px ${alpha(theme.palette.grey[500], 0.32)}`,\r\n '& .ql-formats': {\r\n '&:not(:last-of-type)': {\r\n marginRight: theme.spacing(2),\r\n },\r\n },\r\n\r\n // Button\r\n '& button': {\r\n padding: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: 4,\r\n color: theme.palette.text.primary,\r\n },\r\n\r\n // Icon svg\r\n '& button svg, span svg': {\r\n width: 20,\r\n height: 20,\r\n },\r\n\r\n // Select\r\n '& .ql-picker-label': {\r\n ...theme.typography.subtitle2,\r\n color: theme.palette.text.primary,\r\n '& .ql-stroke': {\r\n stroke: theme.palette.text.primary,\r\n },\r\n },\r\n '& .ql-picker-label svg': {\r\n ...(isRTL && {\r\n right: '0 !important',\r\n left: 'auto !important',\r\n }),\r\n },\r\n '& .ql-color,& .ql-background,& .ql-align ': {\r\n '& .ql-picker-label': {\r\n padding: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n },\r\n '& .ql-expanded': {\r\n '& .ql-picker-label': {\r\n borderRadius: 4,\r\n color: theme.palette.text.disabled,\r\n borderColor: 'transparent !important',\r\n backgroundColor: theme.palette.action.focus,\r\n '& .ql-stroke': { stroke: theme.palette.text.disabled },\r\n },\r\n '& .ql-picker-options': {\r\n padding: 0,\r\n marginTop: 4,\r\n border: 'none',\r\n maxHeight: 200,\r\n overflow: 'auto',\r\n boxShadow: theme.customShadows.z20,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n '& .ql-picker-item': {\r\n color: theme.palette.text.primary,\r\n },\r\n\r\n // Align\r\n '&.ql-align': {\r\n '& .ql-picker-options': { padding: 0, display: 'flex' },\r\n '& .ql-picker-item': {\r\n width: 32,\r\n height: 32,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n },\r\n // Color & Background\r\n '&.ql-color, &.ql-background': {\r\n '& .ql-picker-options': { padding: 8 },\r\n '& .ql-picker-item': {\r\n margin: 3,\r\n borderRadius: 4,\r\n '&.ql-selected': { border: 'solid 1px black' },\r\n },\r\n },\r\n // Font, Size, Header\r\n '&.ql-font, &.ql-size, &.ql-header': {\r\n '& .ql-picker-options': {\r\n padding: theme.spacing(1, 0),\r\n },\r\n '& .ql-picker-item': {\r\n padding: theme.spacing(0.5, 1.5),\r\n },\r\n },\r\n },\r\n },\r\n };\r\n});\r\n","import PropTypes from 'prop-types';\r\n//\r\nimport { StyledEditorToolbar } from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst HEADINGS = ['Heading 1', 'Heading 2', 'Heading 3', 'Heading 4', 'Heading 5', 'Heading 6'];\r\n\r\nexport const formats = [\r\n 'align',\r\n 'background',\r\n 'blockquote',\r\n 'bold',\r\n 'bullet',\r\n 'code',\r\n 'code-block',\r\n 'color',\r\n 'direction',\r\n 'font',\r\n 'formula',\r\n 'header',\r\n 'image',\r\n 'indent',\r\n 'italic',\r\n 'link',\r\n 'list',\r\n 'script',\r\n 'size',\r\n 'strike',\r\n 'table',\r\n 'underline',\r\n 'video',\r\n];\r\n\r\nEditorToolbar.propTypes = {\r\n id: PropTypes.string,\r\n isSimple: PropTypes.bool,\r\n};\r\n\r\nexport default function EditorToolbar({ id, isSimple, ...other }) {\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n {!isSimple && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n
\r\n
\r\n\r\n {!isSimple && (\r\n
\r\n
\r\n )}\r\n\r\n {!isSimple && (\r\n
\r\n
\r\n )}\r\n\r\n
\r\n \r\n \r\n \r\n {/* */}\r\n \r\n\r\n \r\n );\r\n}\r\n\r\nRHFAutocompleteCombo.propTypes = {\r\n name: PropTypes.string,\r\n onChange: PropTypes.func,\r\n label: PropTypes.string,\r\n helperText: PropTypes.node,\r\n selection: PropTypes.array,\r\n dialogTitle: PropTypes.string,\r\n dialogContent: PropTypes.string,\r\n onDialogChange: PropTypes.func,\r\n size: PropTypes.string,\r\n margin: PropTypes.string,\r\n};\r\nexport default RHFAutocompleteCombo;","import React from 'react';\n\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n const colonSeparated = value.split(\":\");\n if (value.slice(0, 1) === \"@\") {\n if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n return null;\n }\n provider = colonSeparated.shift().slice(1);\n }\n if (colonSeparated.length > 3 || !colonSeparated.length) {\n return null;\n }\n if (colonSeparated.length > 1) {\n const name2 = colonSeparated.pop();\n const prefix = colonSeparated.pop();\n const result = {\n // Allow provider without '@': \"provider:prefix:name\"\n provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n prefix,\n name: name2\n };\n return validate && !validateIconName(result) ? null : result;\n }\n const name = colonSeparated[0];\n const dashSeparated = name.split(\"-\");\n if (dashSeparated.length > 1) {\n const result = {\n provider,\n prefix: dashSeparated.shift(),\n name: dashSeparated.join(\"-\")\n };\n return validate && !validateIconName(result) ? null : result;\n }\n if (allowSimpleName && provider === \"\") {\n const result = {\n provider,\n prefix: \"\",\n name\n };\n return validate && !validateIconName(result, allowSimpleName) ? null : result;\n }\n return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n if (!icon) {\n return false;\n }\n return !!((icon.provider === \"\" || icon.provider.match(matchIconName)) && (allowSimpleName && icon.prefix === \"\" || icon.prefix.match(matchIconName)) && icon.name.match(matchIconName));\n};\n\nconst defaultIconDimensions = Object.freeze(\n {\n left: 0,\n top: 0,\n width: 16,\n height: 16\n }\n);\nconst defaultIconTransformations = Object.freeze({\n rotate: 0,\n vFlip: false,\n hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n ...defaultIconDimensions,\n ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n ...defaultIconProps,\n body: \"\",\n hidden: false\n});\n\nfunction mergeIconTransformations(obj1, obj2) {\n const result = {};\n if (!obj1.hFlip !== !obj2.hFlip) {\n result.hFlip = true;\n }\n if (!obj1.vFlip !== !obj2.vFlip) {\n result.vFlip = true;\n }\n const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n if (rotate) {\n result.rotate = rotate;\n }\n return result;\n}\n\nfunction mergeIconData(parent, child) {\n const result = mergeIconTransformations(parent, child);\n for (const key in defaultExtendedIconProps) {\n if (key in defaultIconTransformations) {\n if (key in parent && !(key in result)) {\n result[key] = defaultIconTransformations[key];\n }\n } else if (key in child) {\n result[key] = child[key];\n } else if (key in parent) {\n result[key] = parent[key];\n }\n }\n return result;\n}\n\nfunction getIconsTree(data, names) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n const resolved = /* @__PURE__ */ Object.create(null);\n function resolve(name) {\n if (icons[name]) {\n return resolved[name] = [];\n }\n if (!(name in resolved)) {\n resolved[name] = null;\n const parent = aliases[name] && aliases[name].parent;\n const value = parent && resolve(parent);\n if (value) {\n resolved[name] = [parent].concat(value);\n }\n }\n return resolved[name];\n }\n (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n return resolved;\n}\n\nfunction internalGetIconData(data, name, tree) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n let currentProps = {};\n function parse(name2) {\n currentProps = mergeIconData(\n icons[name2] || aliases[name2],\n currentProps\n );\n }\n parse(name);\n tree.forEach(parse);\n return mergeIconData(data, currentProps);\n}\n\nfunction parseIconSet(data, callback) {\n const names = [];\n if (typeof data !== \"object\" || typeof data.icons !== \"object\") {\n return names;\n }\n if (data.not_found instanceof Array) {\n data.not_found.forEach((name) => {\n callback(name, null);\n names.push(name);\n });\n }\n const tree = getIconsTree(data);\n for (const name in tree) {\n const item = tree[name];\n if (item) {\n callback(name, internalGetIconData(data, name, item));\n names.push(name);\n }\n }\n return names;\n}\n\nconst optionalPropertyDefaults = {\n provider: \"\",\n aliases: {},\n not_found: {},\n ...defaultIconDimensions\n};\nfunction checkOptionalProps(item, defaults) {\n for (const prop in defaults) {\n if (prop in item && typeof item[prop] !== typeof defaults[prop]) {\n return false;\n }\n }\n return true;\n}\nfunction quicklyValidateIconSet(obj) {\n if (typeof obj !== \"object\" || obj === null) {\n return null;\n }\n const data = obj;\n if (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") {\n return null;\n }\n if (!checkOptionalProps(obj, optionalPropertyDefaults)) {\n return null;\n }\n const icons = data.icons;\n for (const name in icons) {\n const icon = icons[name];\n if (!name.match(matchIconName) || typeof icon.body !== \"string\" || !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )) {\n return null;\n }\n }\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n for (const name in aliases) {\n const icon = aliases[name];\n const parent = icon.parent;\n if (!name.match(matchIconName) || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )) {\n return null;\n }\n }\n return data;\n}\n\nconst dataStorage = /* @__PURE__ */ Object.create(null);\nfunction newStorage(provider, prefix) {\n return {\n provider,\n prefix,\n icons: /* @__PURE__ */ Object.create(null),\n missing: /* @__PURE__ */ new Set()\n };\n}\nfunction getStorage(provider, prefix) {\n const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\nfunction addIconSet(storage, data) {\n if (!quicklyValidateIconSet(data)) {\n return [];\n }\n return parseIconSet(data, (name, icon) => {\n if (icon) {\n storage.icons[name] = icon;\n } else {\n storage.missing.add(name);\n }\n });\n}\nfunction addIconToStorage(storage, name, icon) {\n try {\n if (typeof icon.body === \"string\") {\n storage.icons[name] = { ...icon };\n return true;\n }\n } catch (err) {\n }\n return false;\n}\nfunction listIcons(provider, prefix) {\n let allIcons = [];\n const providers = typeof provider === \"string\" ? [provider] : Object.keys(dataStorage);\n providers.forEach((provider2) => {\n const prefixes = typeof provider2 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider2] || {});\n prefixes.forEach((prefix2) => {\n const storage = getStorage(provider2, prefix2);\n allIcons = allIcons.concat(\n Object.keys(storage.icons).map(\n (name) => (provider2 !== \"\" ? \"@\" + provider2 + \":\" : \"\") + prefix2 + \":\" + name\n )\n );\n });\n });\n return allIcons;\n}\n\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n if (typeof allow === \"boolean\") {\n simpleNames = allow;\n }\n return simpleNames;\n}\nfunction getIconData(name) {\n const icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n if (icon) {\n const storage = getStorage(icon.provider, icon.prefix);\n const iconName = icon.name;\n return storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n }\n}\nfunction addIcon(name, data) {\n const icon = stringToIcon(name, true, simpleNames);\n if (!icon) {\n return false;\n }\n const storage = getStorage(icon.provider, icon.prefix);\n return addIconToStorage(storage, icon.name, data);\n}\nfunction addCollection(data, provider) {\n if (typeof data !== \"object\") {\n return false;\n }\n if (typeof provider !== \"string\") {\n provider = data.provider || \"\";\n }\n if (simpleNames && !provider && !data.prefix) {\n let added = false;\n if (quicklyValidateIconSet(data)) {\n data.prefix = \"\";\n parseIconSet(data, (name, icon) => {\n if (icon && addIcon(name, icon)) {\n added = true;\n }\n });\n }\n return added;\n }\n const prefix = data.prefix;\n if (!validateIconName({\n provider,\n prefix,\n name: \"a\"\n })) {\n return false;\n }\n const storage = getStorage(provider, prefix);\n return !!addIconSet(storage, data);\n}\nfunction iconExists(name) {\n return !!getIconData(name);\n}\nfunction getIcon(name) {\n const result = getIconData(name);\n return result ? {\n ...defaultIconProps,\n ...result\n } : null;\n}\n\nconst defaultIconSizeCustomisations = Object.freeze({\n width: null,\n height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n // Dimensions\n ...defaultIconSizeCustomisations,\n // Transformations\n ...defaultIconTransformations\n});\n\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n if (ratio === 1) {\n return size;\n }\n precision = precision || 100;\n if (typeof size === \"number\") {\n return Math.ceil(size * ratio * precision) / precision;\n }\n if (typeof size !== \"string\") {\n return size;\n }\n const oldParts = size.split(unitsSplit);\n if (oldParts === null || !oldParts.length) {\n return size;\n }\n const newParts = [];\n let code = oldParts.shift();\n let isNumber = unitsTest.test(code);\n while (true) {\n if (isNumber) {\n const num = parseFloat(code);\n if (isNaN(num)) {\n newParts.push(code);\n } else {\n newParts.push(Math.ceil(num * ratio * precision) / precision);\n }\n } else {\n newParts.push(code);\n }\n code = oldParts.shift();\n if (code === void 0) {\n return newParts.join(\"\");\n }\n isNumber = !isNumber;\n }\n}\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n const fullIcon = {\n ...defaultIconProps,\n ...icon\n };\n const fullCustomisations = {\n ...defaultIconCustomisations,\n ...customisations\n };\n const box = {\n left: fullIcon.left,\n top: fullIcon.top,\n width: fullIcon.width,\n height: fullIcon.height\n };\n let body = fullIcon.body;\n [fullIcon, fullCustomisations].forEach((props) => {\n const transformations = [];\n const hFlip = props.hFlip;\n const vFlip = props.vFlip;\n let rotation = props.rotate;\n if (hFlip) {\n if (vFlip) {\n rotation += 2;\n } else {\n transformations.push(\n \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n );\n transformations.push(\"scale(-1 1)\");\n box.top = box.left = 0;\n }\n } else if (vFlip) {\n transformations.push(\n \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n );\n transformations.push(\"scale(1 -1)\");\n box.top = box.left = 0;\n }\n let tempValue;\n if (rotation < 0) {\n rotation -= Math.floor(rotation / 4) * 4;\n }\n rotation = rotation % 4;\n switch (rotation) {\n case 1:\n tempValue = box.height / 2 + box.top;\n transformations.unshift(\n \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n case 2:\n transformations.unshift(\n \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n );\n break;\n case 3:\n tempValue = box.width / 2 + box.left;\n transformations.unshift(\n \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n }\n if (rotation % 2 === 1) {\n if (box.left !== box.top) {\n tempValue = box.left;\n box.left = box.top;\n box.top = tempValue;\n }\n if (box.width !== box.height) {\n tempValue = box.width;\n box.width = box.height;\n box.height = tempValue;\n }\n }\n if (transformations.length) {\n body = '' + body + \"\";\n }\n });\n const customisationsWidth = fullCustomisations.width;\n const customisationsHeight = fullCustomisations.height;\n const boxWidth = box.width;\n const boxHeight = box.height;\n let width;\n let height;\n if (customisationsWidth === null) {\n height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n width = calculateSize(height, boxWidth / boxHeight);\n } else {\n width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n }\n const attributes = {};\n const setAttr = (prop, value) => {\n if (!isUnsetKeyword(value)) {\n attributes[prop] = value.toString();\n }\n };\n setAttr(\"width\", width);\n setAttr(\"height\", height);\n attributes.viewBox = box.left.toString() + \" \" + box.top.toString() + \" \" + boxWidth.toString() + \" \" + boxHeight.toString();\n return {\n attributes,\n body\n };\n}\n\nconst regex = /\\sid=\"(\\S+)\"/g;\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\nlet counter = 0;\nfunction replaceIDs(body, prefix = randomPrefix) {\n const ids = [];\n let match;\n while (match = regex.exec(body)) {\n ids.push(match[1]);\n }\n if (!ids.length) {\n return body;\n }\n const suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n ids.forEach((id) => {\n const newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n const escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n body = body.replace(\n // Allowed characters before id: [#;\"]\n // Allowed characters after id: [)\"], .[a-z]\n new RegExp('([#;\"])(' + escapedID + ')([\")]|\\\\.[a-z])', \"g\"),\n \"$1\" + newID + suffix + \"$3\"\n );\n });\n body = body.replace(new RegExp(suffix, \"g\"), \"\");\n return body;\n}\n\nconst storage = /* @__PURE__ */ Object.create(null);\nfunction setAPIModule(provider, item) {\n storage[provider] = item;\n}\nfunction getAPIModule(provider) {\n return storage[provider] || storage[\"\"];\n}\n\nfunction createAPIConfig(source) {\n let resources;\n if (typeof source.resources === \"string\") {\n resources = [source.resources];\n } else {\n resources = source.resources;\n if (!(resources instanceof Array) || !resources.length) {\n return null;\n }\n }\n const result = {\n // API hosts\n resources,\n // Root path\n path: source.path || \"/\",\n // URL length limit\n maxURL: source.maxURL || 500,\n // Timeout before next host is used.\n rotate: source.rotate || 750,\n // Timeout before failing query.\n timeout: source.timeout || 5e3,\n // Randomise default API end point.\n random: source.random === true,\n // Start index\n index: source.index || 0,\n // Receive data after time out (used if time out kicks in first, then API module sends data anyway).\n dataAfterTimeout: source.dataAfterTimeout !== false\n };\n return result;\n}\nconst configStorage = /* @__PURE__ */ Object.create(null);\nconst fallBackAPISources = [\n \"https://api.simplesvg.com\",\n \"https://api.unisvg.com\"\n];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) {\n if (fallBackAPISources.length === 1) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n if (Math.random() > 0.5) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n fallBackAPI.push(fallBackAPISources.pop());\n }\n }\n}\nconfigStorage[\"\"] = createAPIConfig({\n resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n});\nfunction addAPIProvider(provider, customConfig) {\n const config = createAPIConfig(customConfig);\n if (config === null) {\n return false;\n }\n configStorage[provider] = config;\n return true;\n}\nfunction getAPIConfig(provider) {\n return configStorage[provider];\n}\nfunction listAPIProviders() {\n return Object.keys(configStorage);\n}\n\nconst detectFetch = () => {\n let callback;\n try {\n callback = fetch;\n if (typeof callback === \"function\") {\n return callback;\n }\n } catch (err) {\n }\n};\nlet fetchModule = detectFetch();\nfunction setFetch(fetch2) {\n fetchModule = fetch2;\n}\nfunction getFetch() {\n return fetchModule;\n}\nfunction calculateMaxLength(provider, prefix) {\n const config = getAPIConfig(provider);\n if (!config) {\n return 0;\n }\n let result;\n if (!config.maxURL) {\n result = 0;\n } else {\n let maxHostLength = 0;\n config.resources.forEach((item) => {\n const host = item;\n maxHostLength = Math.max(maxHostLength, host.length);\n });\n const url = prefix + \".json?icons=\";\n result = config.maxURL - maxHostLength - config.path.length - url.length;\n }\n return result;\n}\nfunction shouldAbort(status) {\n return status === 404;\n}\nconst prepare = (provider, prefix, icons) => {\n const results = [];\n const maxLength = calculateMaxLength(provider, prefix);\n const type = \"icons\";\n let item = {\n type,\n provider,\n prefix,\n icons: []\n };\n let length = 0;\n icons.forEach((name, index) => {\n length += name.length + 1;\n if (length >= maxLength && index > 0) {\n results.push(item);\n item = {\n type,\n provider,\n prefix,\n icons: []\n };\n length = name.length;\n }\n item.icons.push(name);\n });\n results.push(item);\n return results;\n};\nfunction getPath(provider) {\n if (typeof provider === \"string\") {\n const config = getAPIConfig(provider);\n if (config) {\n return config.path;\n }\n }\n return \"/\";\n}\nconst send = (host, params, callback) => {\n if (!fetchModule) {\n callback(\"abort\", 424);\n return;\n }\n let path = getPath(params.provider);\n switch (params.type) {\n case \"icons\": {\n const prefix = params.prefix;\n const icons = params.icons;\n const iconsList = icons.join(\",\");\n const urlParams = new URLSearchParams({\n icons: iconsList\n });\n path += prefix + \".json?\" + urlParams.toString();\n break;\n }\n case \"custom\": {\n const uri = params.uri;\n path += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n break;\n }\n default:\n callback(\"abort\", 400);\n return;\n }\n let defaultError = 503;\n fetchModule(host + path).then((response) => {\n const status = response.status;\n if (status !== 200) {\n setTimeout(() => {\n callback(shouldAbort(status) ? \"abort\" : \"next\", status);\n });\n return;\n }\n defaultError = 501;\n return response.json();\n }).then((data) => {\n if (typeof data !== \"object\" || data === null) {\n setTimeout(() => {\n if (data === 404) {\n callback(\"abort\", data);\n } else {\n callback(\"next\", defaultError);\n }\n });\n return;\n }\n setTimeout(() => {\n callback(\"success\", data);\n });\n }).catch(() => {\n callback(\"next\", defaultError);\n });\n};\nconst fetchAPIModule = {\n prepare,\n send\n};\n\nfunction sortIcons(icons) {\n const result = {\n loaded: [],\n missing: [],\n pending: []\n };\n const storage = /* @__PURE__ */ Object.create(null);\n icons.sort((a, b) => {\n if (a.provider !== b.provider) {\n return a.provider.localeCompare(b.provider);\n }\n if (a.prefix !== b.prefix) {\n return a.prefix.localeCompare(b.prefix);\n }\n return a.name.localeCompare(b.name);\n });\n let lastIcon = {\n provider: \"\",\n prefix: \"\",\n name: \"\"\n };\n icons.forEach((icon) => {\n if (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) {\n return;\n }\n lastIcon = icon;\n const provider = icon.provider;\n const prefix = icon.prefix;\n const name = icon.name;\n const providerStorage = storage[provider] || (storage[provider] = /* @__PURE__ */ Object.create(null));\n const localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n let list;\n if (name in localStorage.icons) {\n list = result.loaded;\n } else if (prefix === \"\" || localStorage.missing.has(name)) {\n list = result.missing;\n } else {\n list = result.pending;\n }\n const item = {\n provider,\n prefix,\n name\n };\n list.push(item);\n });\n return result;\n}\n\nfunction removeCallback(storages, id) {\n storages.forEach((storage) => {\n const items = storage.loaderCallbacks;\n if (items) {\n storage.loaderCallbacks = items.filter((row) => row.id !== id);\n }\n });\n}\nfunction updateCallbacks(storage) {\n if (!storage.pendingCallbacksFlag) {\n storage.pendingCallbacksFlag = true;\n setTimeout(() => {\n storage.pendingCallbacksFlag = false;\n const items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n if (!items.length) {\n return;\n }\n let hasPending = false;\n const provider = storage.provider;\n const prefix = storage.prefix;\n items.forEach((item) => {\n const icons = item.icons;\n const oldLength = icons.pending.length;\n icons.pending = icons.pending.filter((icon) => {\n if (icon.prefix !== prefix) {\n return true;\n }\n const name = icon.name;\n if (storage.icons[name]) {\n icons.loaded.push({\n provider,\n prefix,\n name\n });\n } else if (storage.missing.has(name)) {\n icons.missing.push({\n provider,\n prefix,\n name\n });\n } else {\n hasPending = true;\n return true;\n }\n return false;\n });\n if (icons.pending.length !== oldLength) {\n if (!hasPending) {\n removeCallback([storage], item.id);\n }\n item.callback(\n icons.loaded.slice(0),\n icons.missing.slice(0),\n icons.pending.slice(0),\n item.abort\n );\n }\n });\n });\n }\n}\nlet idCounter = 0;\nfunction storeCallback(callback, icons, pendingSources) {\n const id = idCounter++;\n const abort = removeCallback.bind(null, pendingSources, id);\n if (!icons.pending.length) {\n return abort;\n }\n const item = {\n id,\n icons,\n callback,\n abort\n };\n pendingSources.forEach((storage) => {\n (storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n });\n return abort;\n}\n\nfunction listToIcons(list, validate = true, simpleNames = false) {\n const result = [];\n list.forEach((item) => {\n const icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n if (icon) {\n result.push(icon);\n }\n });\n return result;\n}\n\n// src/config.ts\nvar defaultConfig = {\n resources: [],\n index: 0,\n timeout: 2e3,\n rotate: 750,\n random: false,\n dataAfterTimeout: false\n};\n\n// src/query.ts\nfunction sendQuery(config, payload, query, done) {\n const resourcesCount = config.resources.length;\n const startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n let resources;\n if (config.random) {\n let list = config.resources.slice(0);\n resources = [];\n while (list.length > 1) {\n const nextIndex = Math.floor(Math.random() * list.length);\n resources.push(list[nextIndex]);\n list = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n }\n resources = resources.concat(list);\n } else {\n resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n }\n const startTime = Date.now();\n let status = \"pending\";\n let queriesSent = 0;\n let lastError;\n let timer = null;\n let queue = [];\n let doneCallbacks = [];\n if (typeof done === \"function\") {\n doneCallbacks.push(done);\n }\n function resetTimer() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function abort() {\n if (status === \"pending\") {\n status = \"aborted\";\n }\n resetTimer();\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function subscribe(callback, overwrite) {\n if (overwrite) {\n doneCallbacks = [];\n }\n if (typeof callback === \"function\") {\n doneCallbacks.push(callback);\n }\n }\n function getQueryStatus() {\n return {\n startTime,\n payload,\n status,\n queriesSent,\n queriesPending: queue.length,\n subscribe,\n abort\n };\n }\n function failQuery() {\n status = \"failed\";\n doneCallbacks.forEach((callback) => {\n callback(void 0, lastError);\n });\n }\n function clearQueue() {\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function moduleResponse(item, response, data) {\n const isError = response !== \"success\";\n queue = queue.filter((queued) => queued !== item);\n switch (status) {\n case \"pending\":\n break;\n case \"failed\":\n if (isError || !config.dataAfterTimeout) {\n return;\n }\n break;\n default:\n return;\n }\n if (response === \"abort\") {\n lastError = data;\n failQuery();\n return;\n }\n if (isError) {\n lastError = data;\n if (!queue.length) {\n if (!resources.length) {\n failQuery();\n } else {\n execNext();\n }\n }\n return;\n }\n resetTimer();\n clearQueue();\n if (!config.random) {\n const index = config.resources.indexOf(item.resource);\n if (index !== -1 && index !== config.index) {\n config.index = index;\n }\n }\n status = \"completed\";\n doneCallbacks.forEach((callback) => {\n callback(data);\n });\n }\n function execNext() {\n if (status !== \"pending\") {\n return;\n }\n resetTimer();\n const resource = resources.shift();\n if (resource === void 0) {\n if (queue.length) {\n timer = setTimeout(() => {\n resetTimer();\n if (status === \"pending\") {\n clearQueue();\n failQuery();\n }\n }, config.timeout);\n return;\n }\n failQuery();\n return;\n }\n const item = {\n status: \"pending\",\n resource,\n callback: (status2, data) => {\n moduleResponse(item, status2, data);\n }\n };\n queue.push(item);\n queriesSent++;\n timer = setTimeout(execNext, config.rotate);\n query(resource, payload, item.callback);\n }\n setTimeout(execNext);\n return getQueryStatus;\n}\n\n// src/index.ts\nfunction initRedundancy(cfg) {\n const config = {\n ...defaultConfig,\n ...cfg\n };\n let queries = [];\n function cleanup() {\n queries = queries.filter((item) => item().status === \"pending\");\n }\n function query(payload, queryCallback, doneCallback) {\n const query2 = sendQuery(\n config,\n payload,\n queryCallback,\n (data, error) => {\n cleanup();\n if (doneCallback) {\n doneCallback(data, error);\n }\n }\n );\n queries.push(query2);\n return query2;\n }\n function find(callback) {\n return queries.find((value) => {\n return callback(value);\n }) || null;\n }\n const instance = {\n query,\n find,\n setIndex: (index) => {\n config.index = index;\n },\n getIndex: () => config.index,\n cleanup\n };\n return instance;\n}\n\nfunction emptyCallback$1() {\n}\nconst redundancyCache = /* @__PURE__ */ Object.create(null);\nfunction getRedundancyCache(provider) {\n if (!redundancyCache[provider]) {\n const config = getAPIConfig(provider);\n if (!config) {\n return;\n }\n const redundancy = initRedundancy(config);\n const cachedReundancy = {\n config,\n redundancy\n };\n redundancyCache[provider] = cachedReundancy;\n }\n return redundancyCache[provider];\n}\nfunction sendAPIQuery(target, query, callback) {\n let redundancy;\n let send;\n if (typeof target === \"string\") {\n const api = getAPIModule(target);\n if (!api) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n send = api.send;\n const cached = getRedundancyCache(target);\n if (cached) {\n redundancy = cached.redundancy;\n }\n } else {\n const config = createAPIConfig(target);\n if (config) {\n redundancy = initRedundancy(config);\n const moduleKey = target.resources ? target.resources[0] : \"\";\n const api = getAPIModule(moduleKey);\n if (api) {\n send = api.send;\n }\n }\n }\n if (!redundancy || !send) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n return redundancy.query(query, send, callback)().abort;\n}\n\nconst browserCacheVersion = \"iconify2\";\nconst browserCachePrefix = \"iconify\";\nconst browserCacheCountKey = browserCachePrefix + \"-count\";\nconst browserCacheVersionKey = browserCachePrefix + \"-version\";\nconst browserStorageHour = 36e5;\nconst browserStorageCacheExpiration = 168;\n\nfunction getStoredItem(func, key) {\n try {\n return func.getItem(key);\n } catch (err) {\n }\n}\nfunction setStoredItem(func, key, value) {\n try {\n func.setItem(key, value);\n return true;\n } catch (err) {\n }\n}\nfunction removeStoredItem(func, key) {\n try {\n func.removeItem(key);\n } catch (err) {\n }\n}\n\nfunction setBrowserStorageItemsCount(storage, value) {\n return setStoredItem(storage, browserCacheCountKey, value.toString());\n}\nfunction getBrowserStorageItemsCount(storage) {\n return parseInt(getStoredItem(storage, browserCacheCountKey)) || 0;\n}\n\nconst browserStorageConfig = {\n local: true,\n session: true\n};\nconst browserStorageEmptyItems = {\n local: /* @__PURE__ */ new Set(),\n session: /* @__PURE__ */ new Set()\n};\nlet browserStorageStatus = false;\nfunction setBrowserStorageStatus(status) {\n browserStorageStatus = status;\n}\n\nlet _window = typeof window === \"undefined\" ? {} : window;\nfunction getBrowserStorage(key) {\n const attr = key + \"Storage\";\n try {\n if (_window && _window[attr] && typeof _window[attr].length === \"number\") {\n return _window[attr];\n }\n } catch (err) {\n }\n browserStorageConfig[key] = false;\n}\n\nfunction iterateBrowserStorage(key, callback) {\n const func = getBrowserStorage(key);\n if (!func) {\n return;\n }\n const version = getStoredItem(func, browserCacheVersionKey);\n if (version !== browserCacheVersion) {\n if (version) {\n const total2 = getBrowserStorageItemsCount(func);\n for (let i = 0; i < total2; i++) {\n removeStoredItem(func, browserCachePrefix + i.toString());\n }\n }\n setStoredItem(func, browserCacheVersionKey, browserCacheVersion);\n setBrowserStorageItemsCount(func, 0);\n return;\n }\n const minTime = Math.floor(Date.now() / browserStorageHour) - browserStorageCacheExpiration;\n const parseItem = (index) => {\n const name = browserCachePrefix + index.toString();\n const item = getStoredItem(func, name);\n if (typeof item !== \"string\") {\n return;\n }\n try {\n const data = JSON.parse(item);\n if (typeof data === \"object\" && typeof data.cached === \"number\" && data.cached > minTime && typeof data.provider === \"string\" && typeof data.data === \"object\" && typeof data.data.prefix === \"string\" && // Valid item: run callback\n callback(data, index)) {\n return true;\n }\n } catch (err) {\n }\n removeStoredItem(func, name);\n };\n let total = getBrowserStorageItemsCount(func);\n for (let i = total - 1; i >= 0; i--) {\n if (!parseItem(i)) {\n if (i === total - 1) {\n total--;\n setBrowserStorageItemsCount(func, total);\n } else {\n browserStorageEmptyItems[key].add(i);\n }\n }\n }\n}\n\nfunction initBrowserStorage() {\n if (browserStorageStatus) {\n return;\n }\n setBrowserStorageStatus(true);\n for (const key in browserStorageConfig) {\n iterateBrowserStorage(key, (item) => {\n const iconSet = item.data;\n const provider = item.provider;\n const prefix = iconSet.prefix;\n const storage = getStorage(\n provider,\n prefix\n );\n if (!addIconSet(storage, iconSet).length) {\n return false;\n }\n const lastModified = iconSet.lastModified || -1;\n storage.lastModifiedCached = storage.lastModifiedCached ? Math.min(storage.lastModifiedCached, lastModified) : lastModified;\n return true;\n });\n }\n}\n\nfunction updateLastModified(storage, lastModified) {\n const lastValue = storage.lastModifiedCached;\n if (\n // Matches or newer\n lastValue && lastValue >= lastModified\n ) {\n return lastValue === lastModified;\n }\n storage.lastModifiedCached = lastModified;\n if (lastValue) {\n for (const key in browserStorageConfig) {\n iterateBrowserStorage(key, (item) => {\n const iconSet = item.data;\n return item.provider !== storage.provider || iconSet.prefix !== storage.prefix || iconSet.lastModified === lastModified;\n });\n }\n }\n return true;\n}\nfunction storeInBrowserStorage(storage, data) {\n if (!browserStorageStatus) {\n initBrowserStorage();\n }\n function store(key) {\n let func;\n if (!browserStorageConfig[key] || !(func = getBrowserStorage(key))) {\n return;\n }\n const set = browserStorageEmptyItems[key];\n let index;\n if (set.size) {\n set.delete(index = Array.from(set).shift());\n } else {\n index = getBrowserStorageItemsCount(func);\n if (!setBrowserStorageItemsCount(func, index + 1)) {\n return;\n }\n }\n const item = {\n cached: Math.floor(Date.now() / browserStorageHour),\n provider: storage.provider,\n data\n };\n return setStoredItem(\n func,\n browserCachePrefix + index.toString(),\n JSON.stringify(item)\n );\n }\n if (data.lastModified && !updateLastModified(storage, data.lastModified)) {\n return;\n }\n if (!Object.keys(data.icons).length) {\n return;\n }\n if (data.not_found) {\n data = Object.assign({}, data);\n delete data.not_found;\n }\n if (!store(\"local\")) {\n store(\"session\");\n }\n}\n\nfunction emptyCallback() {\n}\nfunction loadedNewIcons(storage) {\n if (!storage.iconsLoaderFlag) {\n storage.iconsLoaderFlag = true;\n setTimeout(() => {\n storage.iconsLoaderFlag = false;\n updateCallbacks(storage);\n });\n }\n}\nfunction loadNewIcons(storage, icons) {\n if (!storage.iconsToLoad) {\n storage.iconsToLoad = icons;\n } else {\n storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n }\n if (!storage.iconsQueueFlag) {\n storage.iconsQueueFlag = true;\n setTimeout(() => {\n storage.iconsQueueFlag = false;\n const { provider, prefix } = storage;\n const icons2 = storage.iconsToLoad;\n delete storage.iconsToLoad;\n let api;\n if (!icons2 || !(api = getAPIModule(provider))) {\n return;\n }\n const params = api.prepare(provider, prefix, icons2);\n params.forEach((item) => {\n sendAPIQuery(provider, item, (data) => {\n if (typeof data !== \"object\") {\n item.icons.forEach((name) => {\n storage.missing.add(name);\n });\n } else {\n try {\n const parsed = addIconSet(\n storage,\n data\n );\n if (!parsed.length) {\n return;\n }\n const pending = storage.pendingIcons;\n if (pending) {\n parsed.forEach((name) => {\n pending.delete(name);\n });\n }\n storeInBrowserStorage(storage, data);\n } catch (err) {\n console.error(err);\n }\n }\n loadedNewIcons(storage);\n });\n });\n });\n }\n}\nconst loadIcons = (icons, callback) => {\n const cleanedIcons = listToIcons(icons, true, allowSimpleNames());\n const sortedIcons = sortIcons(cleanedIcons);\n if (!sortedIcons.pending.length) {\n let callCallback = true;\n if (callback) {\n setTimeout(() => {\n if (callCallback) {\n callback(\n sortedIcons.loaded,\n sortedIcons.missing,\n sortedIcons.pending,\n emptyCallback\n );\n }\n });\n }\n return () => {\n callCallback = false;\n };\n }\n const newIcons = /* @__PURE__ */ Object.create(null);\n const sources = [];\n let lastProvider, lastPrefix;\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix } = icon;\n if (prefix === lastPrefix && provider === lastProvider) {\n return;\n }\n lastProvider = provider;\n lastPrefix = prefix;\n sources.push(getStorage(provider, prefix));\n const providerNewIcons = newIcons[provider] || (newIcons[provider] = /* @__PURE__ */ Object.create(null));\n if (!providerNewIcons[prefix]) {\n providerNewIcons[prefix] = [];\n }\n });\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix, name } = icon;\n const storage = getStorage(provider, prefix);\n const pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n if (!pendingQueue.has(name)) {\n pendingQueue.add(name);\n newIcons[provider][prefix].push(name);\n }\n });\n sources.forEach((storage) => {\n const { provider, prefix } = storage;\n if (newIcons[provider][prefix].length) {\n loadNewIcons(storage, newIcons[provider][prefix]);\n }\n });\n return callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\nconst loadIcon = (icon) => {\n return new Promise((fulfill, reject) => {\n const iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n if (!iconObj) {\n reject(icon);\n return;\n }\n loadIcons([iconObj || icon], (loaded) => {\n if (loaded.length && iconObj) {\n const data = getIconData(iconObj);\n if (data) {\n fulfill({\n ...defaultIconProps,\n ...data\n });\n return;\n }\n }\n reject(icon);\n });\n });\n};\n\nfunction toggleBrowserCache(storage, value) {\n switch (storage) {\n case \"local\":\n case \"session\":\n browserStorageConfig[storage] = value;\n break;\n case \"all\":\n for (const key in browserStorageConfig) {\n browserStorageConfig[key] = value;\n }\n break;\n }\n}\n\nfunction mergeCustomisations(defaults, item) {\n const result = {\n ...defaults\n };\n for (const key in item) {\n const value = item[key];\n const valueType = typeof value;\n if (key in defaultIconSizeCustomisations) {\n if (value === null || value && (valueType === \"string\" || valueType === \"number\")) {\n result[key] = value;\n }\n } else if (valueType === typeof result[key]) {\n result[key] = key === \"rotate\" ? value % 4 : value;\n }\n }\n return result;\n}\n\nconst separator = /[\\s,]+/;\nfunction flipFromString(custom, flip) {\n flip.split(separator).forEach((str) => {\n const value = str.trim();\n switch (value) {\n case \"horizontal\":\n custom.hFlip = true;\n break;\n case \"vertical\":\n custom.vFlip = true;\n break;\n }\n });\n}\n\nfunction rotateFromString(value, defaultValue = 0) {\n const units = value.replace(/^-?[0-9.]*/, \"\");\n function cleanup(value2) {\n while (value2 < 0) {\n value2 += 4;\n }\n return value2 % 4;\n }\n if (units === \"\") {\n const num = parseInt(value);\n return isNaN(num) ? 0 : cleanup(num);\n } else if (units !== value) {\n let split = 0;\n switch (units) {\n case \"%\":\n split = 25;\n break;\n case \"deg\":\n split = 90;\n }\n if (split) {\n let num = parseFloat(value.slice(0, value.length - units.length));\n if (isNaN(num)) {\n return 0;\n }\n num = num / split;\n return num % 1 === 0 ? cleanup(num) : 0;\n }\n }\n return defaultValue;\n}\n\nfunction iconToHTML(body, attributes) {\n let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n for (const attr in attributes) {\n renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n }\n return '\" + body + \"\";\n}\n\nfunction encodeSVGforURL(svg) {\n return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(//g, \"%3E\").replace(/\\s+/g, \" \");\n}\nfunction svgToData(svg) {\n return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\nfunction svgToURL(svg) {\n return 'url(\"' + svgToData(svg) + '\")';\n}\n\nlet policy;\nfunction createPolicy() {\n try {\n policy = window.trustedTypes.createPolicy(\"iconify\", {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n createHTML: (s) => s\n });\n } catch (err) {\n policy = null;\n }\n}\nfunction cleanUpInnerHTML(html) {\n if (policy === void 0) {\n createPolicy();\n }\n return policy ? policy.createHTML(html) : html;\n}\n\nconst defaultExtendedIconCustomisations = {\n ...defaultIconCustomisations,\n inline: false,\n};\n\n/**\n * Default SVG attributes\n */\nconst svgDefaults = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlnsXlink': 'http://www.w3.org/1999/xlink',\n 'aria-hidden': true,\n 'role': 'img',\n};\n/**\n * Style modes\n */\nconst commonProps = {\n display: 'inline-block',\n};\nconst monotoneProps = {\n backgroundColor: 'currentColor',\n};\nconst coloredProps = {\n backgroundColor: 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n Image: 'var(--svg)',\n Repeat: 'no-repeat',\n Size: '100% 100%',\n};\nconst propsToAddTo = {\n WebkitMask: monotoneProps,\n mask: monotoneProps,\n background: coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n const list = propsToAddTo[prefix];\n for (const prop in propsToAdd) {\n list[prefix + prop] = propsToAdd[prop];\n }\n}\n/**\n * Default values for customisations for inline icon\n */\nconst inlineDefaults = {\n ...defaultExtendedIconCustomisations,\n inline: true,\n};\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n return value + (value.match(/^[-0-9.]+$/) ? 'px' : '');\n}\n/**\n * Render icon\n */\nconst render = (\n// Icon must be validated before calling this function\nicon, \n// Partial properties\nprops, \n// True if icon should have vertical-align added\ninline, \n// Optional reference for SVG/SPAN, extracted by React.forwardRef()\nref) => {\n // Get default properties\n const defaultProps = inline\n ? inlineDefaults\n : defaultExtendedIconCustomisations;\n // Get all customisations\n const customisations = mergeCustomisations(defaultProps, props);\n // Check mode\n const mode = props.mode || 'svg';\n // Create style\n const style = {};\n const customStyle = props.style || {};\n // Create SVG component properties\n const componentProps = {\n ...(mode === 'svg' ? svgDefaults : {}),\n ref,\n };\n // Get element properties\n for (let key in props) {\n const value = props[key];\n if (value === void 0) {\n continue;\n }\n switch (key) {\n // Properties to ignore\n case 'icon':\n case 'style':\n case 'children':\n case 'onLoad':\n case 'mode':\n case '_ref':\n case '_inline':\n break;\n // Boolean attributes\n case 'inline':\n case 'hFlip':\n case 'vFlip':\n customisations[key] =\n value === true || value === 'true' || value === 1;\n break;\n // Flip as string: 'horizontal,vertical'\n case 'flip':\n if (typeof value === 'string') {\n flipFromString(customisations, value);\n }\n break;\n // Color: copy to style\n case 'color':\n style.color = value;\n break;\n // Rotation as string\n case 'rotate':\n if (typeof value === 'string') {\n customisations[key] = rotateFromString(value);\n }\n else if (typeof value === 'number') {\n customisations[key] = value;\n }\n break;\n // Remove aria-hidden\n case 'ariaHidden':\n case 'aria-hidden':\n if (value !== true && value !== 'true') {\n delete componentProps['aria-hidden'];\n }\n break;\n // Copy missing property if it does not exist in customisations\n default:\n if (defaultProps[key] === void 0) {\n componentProps[key] = value;\n }\n }\n }\n // Generate icon\n const item = iconToSVG(icon, customisations);\n const renderAttribs = item.attributes;\n // Inline display\n if (customisations.inline) {\n style.verticalAlign = '-0.125em';\n }\n if (mode === 'svg') {\n // Add style\n componentProps.style = {\n ...style,\n ...customStyle,\n };\n // Add icon stuff\n Object.assign(componentProps, renderAttribs);\n // Counter for ids based on \"id\" property to render icons consistently on server and client\n let localCounter = 0;\n let id = props.id;\n if (typeof id === 'string') {\n // Convert '-' to '_' to avoid errors in animations\n id = id.replace(/-/g, '_');\n }\n // Add icon stuff\n componentProps.dangerouslySetInnerHTML = {\n __html: cleanUpInnerHTML(replaceIDs(item.body, id ? () => id + 'ID' + localCounter++ : 'iconifyReact')),\n };\n return React.createElement('svg', componentProps);\n }\n // Render with style\n const { body, width, height } = icon;\n const useMask = mode === 'mask' ||\n (mode === 'bg' ? false : body.indexOf('currentColor') !== -1);\n // Generate SVG\n const html = iconToHTML(body, {\n ...renderAttribs,\n width: width + '',\n height: height + '',\n });\n // Generate style\n componentProps.style = {\n ...style,\n '--svg': svgToURL(html),\n 'width': fixSize(renderAttribs.width),\n 'height': fixSize(renderAttribs.height),\n ...commonProps,\n ...(useMask ? monotoneProps : coloredProps),\n ...customStyle,\n };\n return React.createElement('span', componentProps);\n};\n\n/**\n * Enable cache\n */\nfunction enableCache(storage) {\n toggleBrowserCache(storage, true);\n}\n/**\n * Disable cache\n */\nfunction disableCache(storage) {\n toggleBrowserCache(storage, false);\n}\n/**\n * Initialise stuff\n */\n// Enable short names\nallowSimpleNames(true);\n// Set API module\nsetAPIModule('', fetchAPIModule);\n/**\n * Browser stuff\n */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // Set cache and load existing cache\n initBrowserStorage();\n const _window = window;\n // Load icons from global \"IconifyPreload\"\n if (_window.IconifyPreload !== void 0) {\n const preload = _window.IconifyPreload;\n const err = 'Invalid IconifyPreload syntax.';\n if (typeof preload === 'object' && preload !== null) {\n (preload instanceof Array ? preload : [preload]).forEach((item) => {\n try {\n if (\n // Check if item is an object and not null/array\n typeof item !== 'object' ||\n item === null ||\n item instanceof Array ||\n // Check for 'icons' and 'prefix'\n typeof item.icons !== 'object' ||\n typeof item.prefix !== 'string' ||\n // Add icon set\n !addCollection(item)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n });\n }\n }\n // Set API from global \"IconifyProviders\"\n if (_window.IconifyProviders !== void 0) {\n const providers = _window.IconifyProviders;\n if (typeof providers === 'object' && providers !== null) {\n for (let key in providers) {\n const err = 'IconifyProviders[' + key + '] is invalid.';\n try {\n const value = providers[key];\n if (typeof value !== 'object' ||\n !value ||\n value.resources === void 0) {\n continue;\n }\n if (!addAPIProvider(key, value)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n }\n }\n }\n}\nclass IconComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n // Render placeholder before component is mounted\n icon: null,\n };\n }\n /**\n * Abort loading icon\n */\n _abortLoading() {\n if (this._loading) {\n this._loading.abort();\n this._loading = null;\n }\n }\n /**\n * Update state\n */\n _setData(icon) {\n if (this.state.icon !== icon) {\n this.setState({\n icon,\n });\n }\n }\n /**\n * Check if icon should be loaded\n */\n _checkIcon(changed) {\n const state = this.state;\n const icon = this.props.icon;\n // Icon is an object\n if (typeof icon === 'object' &&\n icon !== null &&\n typeof icon.body === 'string') {\n // Stop loading\n this._icon = '';\n this._abortLoading();\n if (changed || state.icon === null) {\n // Set data if it was changed\n this._setData({\n data: icon,\n });\n }\n return;\n }\n // Invalid icon?\n let iconName;\n if (typeof icon !== 'string' ||\n (iconName = stringToIcon(icon, false, true)) === null) {\n this._abortLoading();\n this._setData(null);\n return;\n }\n // Load icon\n const data = getIconData(iconName);\n if (!data) {\n // Icon data is not available\n if (!this._loading || this._loading.name !== icon) {\n // New icon to load\n this._abortLoading();\n this._icon = '';\n this._setData(null);\n if (data !== null) {\n // Icon was not loaded\n this._loading = {\n name: icon,\n abort: loadIcons([iconName], this._checkIcon.bind(this, false)),\n };\n }\n }\n return;\n }\n // Icon data is available\n if (this._icon !== icon || state.icon === null) {\n // New icon or icon has been loaded\n this._abortLoading();\n this._icon = icon;\n // Add classes\n const classes = ['iconify'];\n if (iconName.prefix !== '') {\n classes.push('iconify--' + iconName.prefix);\n }\n if (iconName.provider !== '') {\n classes.push('iconify--' + iconName.provider);\n }\n // Set data\n this._setData({\n data,\n classes,\n });\n if (this.props.onLoad) {\n this.props.onLoad(icon);\n }\n }\n }\n /**\n * Component mounted\n */\n componentDidMount() {\n this._checkIcon(false);\n }\n /**\n * Component updated\n */\n componentDidUpdate(oldProps) {\n if (oldProps.icon !== this.props.icon) {\n this._checkIcon(true);\n }\n }\n /**\n * Abort loading\n */\n componentWillUnmount() {\n this._abortLoading();\n }\n /**\n * Render\n */\n render() {\n const props = this.props;\n const icon = this.state.icon;\n if (icon === null) {\n // Render placeholder\n return props.children\n ? props.children\n : React.createElement('span', {});\n }\n // Add classes\n let newProps = props;\n if (icon.classes) {\n newProps = {\n ...props,\n className: (typeof props.className === 'string'\n ? props.className + ' '\n : '') + icon.classes.join(' '),\n };\n }\n // Render icon\n return render({\n ...defaultIconProps,\n ...icon.data,\n }, newProps, props._inline, props._ref);\n }\n}\n/**\n * Block icon\n *\n * @param props - Component properties\n */\nconst Icon = React.forwardRef(function Icon(props, ref) {\n const newProps = {\n ...props,\n _ref: ref,\n _inline: false,\n };\n return React.createElement(IconComponent, newProps);\n});\n/**\n * Inline icon (has negative verticalAlign that makes it behave like icon font)\n *\n * @param props - Component properties\n */\nconst InlineIcon = React.forwardRef(function InlineIcon(props, ref) {\n const newProps = {\n ...props,\n _ref: ref,\n _inline: true,\n };\n return React.createElement(IconComponent, newProps);\n});\n/**\n * Internal API\n */\nconst _api = {\n getAPIConfig,\n setAPIModule,\n sendAPIQuery,\n setFetch,\n getFetch,\n listAPIProviders,\n};\n\nexport { Icon, InlineIcon, _api, addAPIProvider, addCollection, addIcon, iconToSVG as buildIcon, calculateSize, disableCache, enableCache, getIcon, iconExists, listIcons, loadIcon, loadIcons, replaceIDs };\n","import PropTypes from 'prop-types';\r\nimport { forwardRef } from 'react';\r\n// icons\r\nimport { Icon } from '@iconify/react';\r\n// @mui\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst Iconify = forwardRef(({ icon, width = 20, sx, ...other }, ref) => (\r\n \r\n));\r\n\r\nIconify.propTypes = {\r\n sx: PropTypes.object,\r\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n icon: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\r\n};\r\n\r\nexport default Iconify;\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function getRatio(ratio = '1/1') {\r\n return {\r\n '4/3': 'calc(100% / 4 * 3)',\r\n '3/4': 'calc(100% / 3 * 4)',\r\n '6/4': 'calc(100% / 6 * 4)',\r\n '4/6': 'calc(100% / 4 * 6)',\r\n '16/9': 'calc(100% / 16 * 9)',\r\n '9/16': 'calc(100% / 9 * 16)',\r\n '21/9': 'calc(100% / 21 * 9)',\r\n '9/21': 'calc(100% / 9 * 21)',\r\n '1/1': '100%',\r\n }[ratio];\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { forwardRef } from 'react';\r\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\r\n// @mui\r\nimport { Box } from '@mui/material';\r\n//\r\nimport getRatio from './getRatio';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst Image = forwardRef(\r\n ({ ratio, disabledEffect = false, effect = 'blur', sx, ...other }, ref) => {\r\n const content = (\r\n {\r\n console.error('Image failed to load:', event.target.src);\r\n }}\r\n {...other}\r\n />\r\n );\r\n\r\n if (ratio) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n }\r\n);\r\n\r\nImage.propTypes = {\r\n sx: PropTypes.object,\r\n effect: PropTypes.string,\r\n disabledEffect: PropTypes.bool,\r\n ratio: PropTypes.oneOf(['4/3', '3/4', '6/4', '4/6', '16/9', '9/16', '21/9', '9/21', '1/1']),\r\n};\r\n\r\nexport default Image;\r\n","// @mui\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledLabel = styled(Box)(({ theme, ownerState }) => {\r\n const isLight = theme.palette.mode === 'light';\r\n\r\n const filledVariant = ownerState.variant === 'filled';\r\n\r\n const outlinedVariant = ownerState.variant === 'outlined';\r\n\r\n const softVariant = ownerState.variant === 'soft';\r\n\r\n const defaultStyle = {\r\n ...(ownerState.color === 'default' && {\r\n // OUTLINED\r\n ...(outlinedVariant && {\r\n backgroundColor: 'transparent',\r\n color: theme.palette.text.primary,\r\n border: `1px solid ${alpha(theme.palette.grey[500], 0.32)}`,\r\n }),\r\n // SOFT\r\n ...(softVariant && {\r\n color: isLight ? theme.palette.text.primary : theme.palette.common.white,\r\n backgroundColor: alpha(theme.palette.grey[500], 0.16),\r\n }),\r\n }),\r\n };\r\n\r\n const colorStyle = {\r\n ...(ownerState.color !== 'default' && {\r\n // FILLED\r\n ...(filledVariant && {\r\n color: theme.palette[ownerState.color].contrastText,\r\n backgroundColor: theme.palette[ownerState.color].main,\r\n }),\r\n // OUTLINED\r\n ...(outlinedVariant && {\r\n backgroundColor: 'transparent',\r\n color: theme.palette[ownerState.color].main,\r\n border: `1px solid ${theme.palette[ownerState.color].main}`,\r\n }),\r\n // SOFT\r\n ...(softVariant && {\r\n color: theme.palette[ownerState.color][isLight ? 'dark' : 'light'],\r\n backgroundColor: alpha(theme.palette[ownerState.color].main, 0.16),\r\n }),\r\n }),\r\n };\r\n\r\n return {\r\n height: 24,\r\n minWidth: 22,\r\n lineHeight: 0,\r\n borderRadius: 6,\r\n cursor: 'default',\r\n alignItems: 'center',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-flex',\r\n justifyContent: 'center',\r\n textTransform: 'capitalize',\r\n padding: theme.spacing(0, 1),\r\n color: theme.palette.grey[800],\r\n fontSize: theme.typography.pxToRem(12),\r\n fontFamily: theme.typography.fontFamily,\r\n backgroundColor: theme.palette.grey[300],\r\n fontWeight: theme.typography.fontWeightBold,\r\n ...colorStyle,\r\n ...defaultStyle,\r\n };\r\n});\r\n","import PropTypes from 'prop-types';\r\nimport { forwardRef } from 'react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n//\r\nimport { StyledLabel } from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst Label = forwardRef(\r\n ({ children, color = 'default', variant = 'soft', startIcon, endIcon, sx, ...other }, ref) => {\r\n const theme = useTheme();\r\n\r\n const iconStyle = {\r\n width: 16,\r\n height: 16,\r\n '& svg, img': { width: 1, height: 1, objectFit: 'cover' },\r\n };\r\n\r\n return (\r\n \r\n {startIcon && {startIcon} }\r\n\r\n {children}\r\n\r\n {endIcon && {endIcon} }\r\n \r\n );\r\n }\r\n);\r\n\r\nLabel.propTypes = {\r\n sx: PropTypes.object,\r\n endIcon: PropTypes.node,\r\n children: PropTypes.node,\r\n startIcon: PropTypes.node,\r\n variant: PropTypes.oneOf(['filled', 'outlined', 'ghost', 'soft']),\r\n color: PropTypes.oneOf([\r\n 'default',\r\n 'primary',\r\n 'secondary',\r\n 'info',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n ]),\r\n};\r\n\r\nexport default Label;\r\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"value\", \"valueBuffer\", \"variant\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4,\n _t5,\n _t6;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css } from '@mui/system';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getLinearProgressUtilityClass } from './linearProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes(_t || (_t = _`\n 0% {\n left: -35%;\n right: 100%;\n }\n\n 60% {\n left: 100%;\n right: -90%;\n }\n\n 100% {\n left: 100%;\n right: -90%;\n }\n`));\nconst indeterminate2Keyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n left: -200%;\n right: 100%;\n }\n\n 60% {\n left: 107%;\n right: -8%;\n }\n\n 100% {\n left: 107%;\n right: -8%;\n }\n`));\nconst bufferKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n opacity: 1;\n background-position: 0 -23px;\n }\n\n 60% {\n opacity: 0;\n background-position: 0 -23px;\n }\n\n 100% {\n opacity: 1;\n background-position: -200px -23px;\n }\n`));\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, variant],\n dashed: ['dashed', `dashedColor${capitalize(color)}`],\n bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n };\n return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n if (color === 'inherit') {\n return 'currentColor';\n }\n if (theme.vars) {\n return theme.vars.palette.LinearProgress[`${color}Bg`];\n }\n return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n position: 'relative',\n overflow: 'hidden',\n display: 'block',\n height: 4,\n zIndex: 0,\n // Fix Safari's bug during composition of different paint.\n '@media print': {\n colorAdjust: 'exact'\n },\n backgroundColor: getColorShade(theme, ownerState.color)\n}, ownerState.color === 'inherit' && ownerState.variant !== 'buffer' && {\n backgroundColor: 'none',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'currentColor',\n opacity: 0.3\n }\n}, ownerState.variant === 'buffer' && {\n backgroundColor: 'transparent'\n}, ownerState.variant === 'query' && {\n transform: 'rotate(180deg)'\n}));\nconst LinearProgressDashed = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Dashed',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n }\n})(({\n ownerState,\n theme\n}) => {\n const backgroundColor = getColorShade(theme, ownerState.color);\n return _extends({\n position: 'absolute',\n marginTop: 0,\n height: '100%',\n width: '100%'\n }, ownerState.color === 'inherit' && {\n opacity: 0.3\n }, {\n backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`,\n backgroundSize: '10px 10px',\n backgroundPosition: '0 -23px'\n });\n}, css(_t4 || (_t4 = _`\n animation: ${0} 3s infinite linear;\n `), bufferKeyframe));\nconst LinearProgressBar1 = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Bar1',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n width: '100%',\n position: 'absolute',\n left: 0,\n bottom: 0,\n top: 0,\n transition: 'transform 0.2s linear',\n transformOrigin: 'left',\n backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.variant === 'determinate' && {\n transition: `transform .${TRANSITION_DURATION}s linear`\n}, ownerState.variant === 'buffer' && {\n zIndex: 1,\n transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t5 || (_t5 = _`\n width: auto;\n animation: ${0} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n `), indeterminate1Keyframe));\nconst LinearProgressBar2 = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Bar2',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n width: '100%',\n position: 'absolute',\n left: 0,\n bottom: 0,\n top: 0,\n transition: 'transform 0.2s linear',\n transformOrigin: 'left'\n}, ownerState.variant !== 'buffer' && {\n backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.color === 'inherit' && {\n opacity: 0.3\n}, ownerState.variant === 'buffer' && {\n backgroundColor: getColorShade(theme, ownerState.color),\n transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t6 || (_t6 = _`\n width: auto;\n animation: ${0} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n `), indeterminate2Keyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiLinearProgress'\n });\n const {\n className,\n color = 'primary',\n value,\n valueBuffer,\n variant = 'indeterminate'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const isRtl = useRtl();\n const rootProps = {};\n const inlineStyles = {\n bar1: {},\n bar2: {}\n };\n if (variant === 'determinate' || variant === 'buffer') {\n if (value !== undefined) {\n rootProps['aria-valuenow'] = Math.round(value);\n rootProps['aria-valuemin'] = 0;\n rootProps['aria-valuemax'] = 100;\n let transform = value - 100;\n if (isRtl) {\n transform = -transform;\n }\n inlineStyles.bar1.transform = `translateX(${transform}%)`;\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n }\n }\n if (variant === 'buffer') {\n if (valueBuffer !== undefined) {\n let transform = (valueBuffer || 0) - 100;\n if (isRtl) {\n transform = -transform;\n }\n inlineStyles.bar2.transform = `translateX(${transform}%)`;\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n }\n }\n return /*#__PURE__*/_jsxs(LinearProgressRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n role: \"progressbar\"\n }, rootProps, {\n ref: ref\n }, other, {\n children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n className: classes.dashed,\n ownerState: ownerState\n }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n className: classes.bar1,\n ownerState: ownerState,\n style: inlineStyles.bar1\n }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n className: classes.bar2,\n ownerState: ownerState,\n style: inlineStyles.bar2\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the progress indicator for the determinate and buffer variants.\n * Value between 0 and 100.\n */\n value: PropTypes.number,\n /**\n * The value for the buffer variant.\n * Value between 0 and 100.\n */\n valueBuffer: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate or query when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;","// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport GlobalStyles from '@mui/material/GlobalStyles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function StyledProgressBar() {\r\n const theme = useTheme();\r\n\r\n const inputGlobalStyles = (\r\n \r\n );\r\n\r\n return inputGlobalStyles;\r\n}\r\n","import { useEffect, useMemo } from 'react';\r\nimport NProgress from 'nprogress';\r\n//\r\nimport StyledProgressBar from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function ProgressBar() {\r\n NProgress.configure({\r\n showSpinner: false,\r\n });\r\n\r\n useMemo(() => {\r\n NProgress.start();\r\n }, []);\r\n\r\n useEffect(() => {\r\n NProgress.done();\r\n }, []);\r\n\r\n return ;\r\n}\r\n","import { m } from 'framer-motion';\r\nimport { useLocation } from 'react-router-dom';\r\n// @mui\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, LinearProgress } from '@mui/material';\r\n// hooks\r\nimport useResponsive from '../../hooks/useResponsive';\r\n// config\r\nimport { NAV } from '../../config-global';\r\n// auth\r\nimport { useAuthContext } from '../../auth/useAuthContext';\r\n//\r\nimport Logo from '../logo';\r\nimport ProgressBar from '../progress-bar';\r\nimport { useSettingsContext } from '../settings';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst StyledRoot = styled('div')(({ theme }) => ({\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 9998,\r\n width: '100%',\r\n height: '100%',\r\n position: 'fixed',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: theme.palette.background.default,\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function LoadingScreen() {\r\n const { pathname } = useLocation();\r\n\r\n const isDesktop = useResponsive('up', 'lg');\r\n\r\n const { isInitialized } = useAuthContext();\r\n\r\n const { themeLayout } = useSettingsContext();\r\n\r\n const isDashboard = isInitialized && pathname.includes('/dashboard') && isDesktop;\r\n\r\n const size =\r\n (themeLayout === 'mini' && NAV.W_DASHBOARD_MINI) ||\r\n (themeLayout === 'vertical' && NAV.W_DASHBOARD) ||\r\n 128;\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n {isDashboard ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n\r\n `solid 3px ${alpha(theme.palette.primary.dark, 0.24)}`,\r\n }}\r\n />\r\n\r\n `solid 8px ${alpha(theme.palette.primary.dark, 0.24)}`,\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { forwardRef } from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { Box, Link } from '@mui/material';\r\n// assets\r\nimport logoImage from '../../assets/logo/logo.png';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst Logo = forwardRef(({ disabledLink = false, sx, ...other }, ref) => {\r\n const theme = useTheme();\r\n\r\n const PRIMARY_LIGHT = theme.palette.primary.light;\r\n\r\n const PRIMARY_MAIN = theme.palette.primary.main;\r\n\r\n const PRIMARY_DARK = theme.palette.primary.dark;\r\n\r\n const logo = (\r\n \r\n );\r\n\r\n if (disabledLink) {\r\n return logo;\r\n }\r\n\r\n return (\r\n \r\n {logo}\r\n \r\n );\r\n});\r\n\r\nLogo.propTypes = {\r\n sx: PropTypes.object,\r\n disabledLink: PropTypes.bool,\r\n};\r\n\r\nexport default Logo;\r\n","// @mui\r\nimport { styled, alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledArrow = styled('span')(({ arrow, theme }) => {\r\n const SIZE = 12;\r\n\r\n const POSITION = -(SIZE / 2);\r\n\r\n const borderStyle = `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`;\r\n\r\n const topStyle = {\r\n borderRadius: '0 0 3px 0',\r\n top: POSITION,\r\n borderBottom: borderStyle,\r\n borderRight: borderStyle,\r\n };\r\n\r\n const bottomStyle = {\r\n borderRadius: '3px 0 0 0',\r\n bottom: POSITION,\r\n borderTop: borderStyle,\r\n borderLeft: borderStyle,\r\n };\r\n\r\n const leftStyle = {\r\n borderRadius: '0 3px 0 0',\r\n left: POSITION,\r\n borderTop: borderStyle,\r\n borderRight: borderStyle,\r\n };\r\n\r\n const rightStyle = {\r\n borderRadius: '0 0 0 3px',\r\n right: POSITION,\r\n borderBottom: borderStyle,\r\n borderLeft: borderStyle,\r\n };\r\n\r\n return {\r\n display: 'none',\r\n [theme.breakpoints.up('sm')]: {\r\n zIndex: 1,\r\n width: SIZE,\r\n height: SIZE,\r\n content: \"''\",\r\n display: 'block',\r\n position: 'absolute',\r\n transform: 'rotate(-135deg)',\r\n background: theme.palette.background.paper,\r\n },\r\n // Top\r\n ...(arrow === 'top-left' && { ...topStyle, left: 20 }),\r\n ...(arrow === 'top-center' && { ...topStyle, left: 0, right: 0, margin: 'auto' }),\r\n ...(arrow === 'top-right' && { ...topStyle, right: 20 }),\r\n // Bottom\r\n ...(arrow === 'bottom-left' && { ...bottomStyle, left: 20 }),\r\n ...(arrow === 'bottom-center' && { ...bottomStyle, left: 0, right: 0, margin: 'auto' }),\r\n ...(arrow === 'bottom-right' && { ...bottomStyle, right: 20 }),\r\n // Left\r\n ...(arrow === 'left-top' && { ...leftStyle, top: 20 }),\r\n ...(arrow === 'left-center' && { ...leftStyle, top: 0, bottom: 0, margin: 'auto' }),\r\n ...(arrow === 'left-bottom' && { ...leftStyle, bottom: 20 }),\r\n // Right\r\n ...(arrow === 'right-top' && { ...rightStyle, top: 20 }),\r\n ...(arrow === 'right-center' && { ...rightStyle, top: 0, bottom: 0, margin: 'auto' }),\r\n ...(arrow === 'right-bottom' && { ...rightStyle, bottom: 20 }),\r\n };\r\n});\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { Popover } from '@mui/material';\r\n//\r\nimport getPosition from './getPosition';\r\nimport { StyledArrow } from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMenuPopover.propTypes = {\r\n sx: PropTypes.object,\r\n open: PropTypes.object,\r\n children: PropTypes.node,\r\n disabledArrow: PropTypes.bool,\r\n arrow: PropTypes.oneOf([\r\n 'top-left',\r\n 'top-center',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-center',\r\n 'bottom-right',\r\n 'left-top',\r\n 'left-center',\r\n 'left-bottom',\r\n 'right-top',\r\n 'right-center',\r\n 'right-bottom',\r\n ]),\r\n};\r\n\r\nexport default function MenuPopover({\r\n open,\r\n children,\r\n arrow = 'top-right',\r\n disabledArrow,\r\n sx,\r\n ...other\r\n}) {\r\n const { style, anchorOrigin, transformOrigin } = getPosition(arrow);\r\n\r\n return (\r\n \r\n {!disabledArrow && }\r\n\r\n {children}\r\n \r\n );\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function getPosition(arrow) {\r\n let props;\r\n\r\n switch (arrow) {\r\n case 'top-left':\r\n props = {\r\n style: { ml: -0.75 },\r\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' },\r\n transformOrigin: { vertical: 'top', horizontal: 'left' },\r\n };\r\n break;\r\n case 'top-center':\r\n props = {\r\n style: {},\r\n anchorOrigin: { vertical: 'bottom', horizontal: 'center' },\r\n transformOrigin: { vertical: 'top', horizontal: 'center' },\r\n };\r\n break;\r\n case 'top-right':\r\n props = {\r\n style: { ml: 0.75 },\r\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\r\n transformOrigin: { vertical: 'top', horizontal: 'right' },\r\n };\r\n break;\r\n case 'bottom-left':\r\n props = {\r\n style: { ml: -0.75 },\r\n anchorOrigin: { vertical: 'top', horizontal: 'left' },\r\n transformOrigin: { vertical: 'bottom', horizontal: 'left' },\r\n };\r\n break;\r\n case 'bottom-center':\r\n props = {\r\n style: {},\r\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\r\n transformOrigin: { vertical: 'bottom', horizontal: 'center' },\r\n };\r\n break;\r\n case 'bottom-right':\r\n props = {\r\n style: { ml: 0.75 },\r\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\r\n transformOrigin: { vertical: 'bottom', horizontal: 'right' },\r\n };\r\n break;\r\n case 'left-top':\r\n props = {\r\n style: { mt: -0.75 },\r\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\r\n transformOrigin: { vertical: 'top', horizontal: 'left' },\r\n };\r\n break;\r\n case 'left-center':\r\n props = {\r\n anchorOrigin: { vertical: 'center', horizontal: 'right' },\r\n transformOrigin: { vertical: 'center', horizontal: 'left' },\r\n };\r\n break;\r\n case 'left-bottom':\r\n props = {\r\n style: { mt: 0.75 },\r\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\r\n transformOrigin: { vertical: 'bottom', horizontal: 'left' },\r\n };\r\n break;\r\n case 'right-top':\r\n props = {\r\n style: { mt: -0.75 },\r\n anchorOrigin: { vertical: 'top', horizontal: 'left' },\r\n transformOrigin: { vertical: 'top', horizontal: 'right' },\r\n };\r\n break;\r\n case 'right-center':\r\n props = {\r\n anchorOrigin: { vertical: 'center', horizontal: 'left' },\r\n transformOrigin: { vertical: 'center', horizontal: 'right' },\r\n };\r\n break;\r\n case 'right-bottom':\r\n props = {\r\n style: { mt: 0.75 },\r\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' },\r\n transformOrigin: { vertical: 'bottom', horizontal: 'right' },\r\n };\r\n break;\r\n\r\n // top-right\r\n default:\r\n props = {\r\n style: { ml: 0.75 },\r\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\r\n transformOrigin: { vertical: 'top', horizontal: 'right' },\r\n };\r\n }\r\n\r\n return props;\r\n}\r\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","var resizeObservers = [];\nexport { resizeObservers };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n function ResizeObserverSize(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","// Helper function to retrieve options from element attributes\nexport const getOptions = function(obj) {\n const options = Array.prototype.reduce.call(\n obj,\n (acc, attribute) => {\n const option = attribute.name.match(/data-simplebar-(.+)/);\n if (option) {\n const key = option[1].replace(/\\W+(.)/g, (x, chr) => chr.toUpperCase());\n switch (attribute.value) {\n case 'true':\n acc[key] = true;\n break;\n case 'false':\n acc[key] = false;\n break;\n case undefined:\n acc[key] = true;\n break;\n default:\n acc[key] = attribute.value;\n }\n }\n return acc;\n },\n {}\n );\n return options;\n};\n\nexport function getElementWindow(element) {\n if (\n !element ||\n !element.ownerDocument ||\n !element.ownerDocument.defaultView\n ) {\n return window;\n }\n return element.ownerDocument.defaultView;\n}\n\nexport function getElementDocument(element) {\n if (!element || !element.ownerDocument) {\n return document;\n }\n return element.ownerDocument;\n}\n","import canUseDOM from 'can-use-dom';\nimport { getElementDocument } from \"./helpers\";\n\nlet cachedScrollbarWidth = null;\nlet cachedDevicePixelRatio = null;\n\nif (canUseDOM) {\n window.addEventListener('resize', () => {\n if (cachedDevicePixelRatio !== window.devicePixelRatio) {\n cachedDevicePixelRatio = window.devicePixelRatio;\n cachedScrollbarWidth = null;\n }\n });\n}\n\nexport default function scrollbarWidth(el) {\n if (cachedScrollbarWidth === null) {\n \n const document = getElementDocument(el);\n \n if (typeof document === 'undefined') {\n cachedScrollbarWidth = 0;\n return cachedScrollbarWidth;\n }\n const body = document.body;\n const box = document.createElement('div');\n\n box.classList.add('simplebar-hide-scrollbar');\n\n body.appendChild(box);\n\n const width = box.getBoundingClientRect().right;\n\n body.removeChild(box);\n\n cachedScrollbarWidth = width;\n }\n\n return cachedScrollbarWidth;\n}\n","import throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport memoize from 'lodash.memoize';\nimport { ResizeObserver } from '@juggle/resize-observer';\nimport canUseDOM from 'can-use-dom';\nimport scrollbarWidth from './scrollbar-width';\nimport { getElementWindow, getElementDocument } from './helpers';\n\nexport default class SimpleBar {\n constructor(element, options) {\n this.el = element;\n this.minScrollbarWidth = 20;\n this.options = { ...SimpleBar.defaultOptions, ...options };\n this.classNames = {\n ...SimpleBar.defaultOptions.classNames,\n ...this.options.classNames\n };\n this.axis = {\n x: {\n scrollOffsetAttr: 'scrollLeft',\n sizeAttr: 'width',\n scrollSizeAttr: 'scrollWidth',\n offsetSizeAttr: 'offsetWidth',\n offsetAttr: 'left',\n overflowAttr: 'overflowX',\n dragOffset: 0,\n isOverflowing: true,\n isVisible: false,\n forceVisible: false,\n track: {},\n scrollbar: {}\n },\n y: {\n scrollOffsetAttr: 'scrollTop',\n sizeAttr: 'height',\n scrollSizeAttr: 'scrollHeight',\n offsetSizeAttr: 'offsetHeight',\n offsetAttr: 'top',\n overflowAttr: 'overflowY',\n dragOffset: 0,\n isOverflowing: true,\n isVisible: false,\n forceVisible: false,\n track: {},\n scrollbar: {}\n }\n };\n this.removePreventClickId = null;\n\n // Don't re-instantiate over an existing one\n if (SimpleBar.instances.has(this.el)) {\n return;\n }\n\n this.recalculate = throttle(this.recalculate.bind(this), 64);\n this.onMouseMove = throttle(this.onMouseMove.bind(this), 64);\n this.hideScrollbars = debounce(\n this.hideScrollbars.bind(this),\n this.options.timeout\n );\n this.onWindowResize = debounce(this.onWindowResize.bind(this), 64, {\n leading: true\n });\n\n SimpleBar.getRtlHelpers = memoize(SimpleBar.getRtlHelpers);\n\n this.init();\n }\n\n /**\n * Static properties\n */\n\n /**\n * Helper to fix browsers inconsistency on RTL:\n * - Firefox inverts the scrollbar initial position\n * - IE11 inverts both scrollbar position and scrolling offset\n * Directly inspired by @KingSora's OverlayScrollbars https://github.com/KingSora/OverlayScrollbars/blob/master/js/OverlayScrollbars.js#L1634\n */\n static getRtlHelpers() {\n const dummyDiv = document.createElement('div');\n dummyDiv.innerHTML =\n '
';\n const scrollbarDummyEl = dummyDiv.firstElementChild;\n document.body.appendChild(scrollbarDummyEl);\n const dummyContainerChild = scrollbarDummyEl.firstElementChild;\n scrollbarDummyEl.scrollLeft = 0;\n const dummyContainerOffset = SimpleBar.getOffset(scrollbarDummyEl);\n const dummyContainerChildOffset = SimpleBar.getOffset(dummyContainerChild);\n scrollbarDummyEl.scrollLeft = 999;\n const dummyContainerScrollOffsetAfterScroll = SimpleBar.getOffset(\n dummyContainerChild\n );\n\n return {\n // determines if the scrolling is responding with negative values\n isRtlScrollingInverted:\n dummyContainerOffset.left !== dummyContainerChildOffset.left &&\n dummyContainerChildOffset.left -\n dummyContainerScrollOffsetAfterScroll.left !==\n 0,\n // determines if the origin scrollbar position is inverted or not (positioned on left or right)\n isRtlScrollbarInverted:\n dummyContainerOffset.left !== dummyContainerChildOffset.left\n };\n }\n\n static defaultOptions = {\n autoHide: true,\n forceVisible: false,\n clickOnTrack: true,\n clickOnTrackSpeed: 40,\n classNames: {\n contentEl: 'simplebar-content',\n contentWrapper: 'simplebar-content-wrapper',\n offset: 'simplebar-offset',\n mask: 'simplebar-mask',\n wrapper: 'simplebar-wrapper',\n placeholder: 'simplebar-placeholder',\n scrollbar: 'simplebar-scrollbar',\n track: 'simplebar-track',\n heightAutoObserverWrapperEl: 'simplebar-height-auto-observer-wrapper',\n heightAutoObserverEl: 'simplebar-height-auto-observer',\n visible: 'simplebar-visible',\n horizontal: 'simplebar-horizontal',\n vertical: 'simplebar-vertical',\n hover: 'simplebar-hover',\n dragging: 'simplebar-dragging'\n },\n scrollbarMinSize: 25,\n scrollbarMaxSize: 0,\n timeout: 1000\n };\n\n static getOffset(el) {\n const rect = el.getBoundingClientRect();\n const elDocument = getElementDocument(el);\n const elWindow = getElementWindow(el);\n\n return {\n top:\n rect.top +\n (elWindow.pageYOffset || elDocument.documentElement.scrollTop),\n left:\n rect.left +\n (elWindow.pageXOffset || elDocument.documentElement.scrollLeft)\n };\n }\n\n static instances = new WeakMap();\n\n init() {\n // Save a reference to the instance, so we know this DOM node has already been instancied\n SimpleBar.instances.set(this.el, this);\n\n // We stop here on server-side\n if (canUseDOM) {\n this.initDOM();\n\n this.setAccessibilityAttributes();\n\n this.scrollbarWidth = this.getScrollbarWidth();\n\n this.recalculate();\n\n this.initListeners();\n }\n }\n\n initDOM() {\n // make sure this element doesn't have the elements yet\n if (\n Array.prototype.filter.call(this.el.children, child =>\n child.classList.contains(this.classNames.wrapper)\n ).length\n ) {\n // assume that element has his DOM already initiated\n this.wrapperEl = this.el.querySelector(`.${this.classNames.wrapper}`);\n this.contentWrapperEl =\n this.options.scrollableNode ||\n this.el.querySelector(`.${this.classNames.contentWrapper}`);\n this.contentEl =\n this.options.contentNode ||\n this.el.querySelector(`.${this.classNames.contentEl}`);\n\n this.offsetEl = this.el.querySelector(`.${this.classNames.offset}`);\n this.maskEl = this.el.querySelector(`.${this.classNames.mask}`);\n\n this.placeholderEl = this.findChild(\n this.wrapperEl,\n `.${this.classNames.placeholder}`\n );\n this.heightAutoObserverWrapperEl = this.el.querySelector(\n `.${this.classNames.heightAutoObserverWrapperEl}`\n );\n this.heightAutoObserverEl = this.el.querySelector(\n `.${this.classNames.heightAutoObserverEl}`\n );\n this.axis.x.track.el = this.findChild(\n this.el,\n `.${this.classNames.track}.${this.classNames.horizontal}`\n );\n this.axis.y.track.el = this.findChild(\n this.el,\n `.${this.classNames.track}.${this.classNames.vertical}`\n );\n } else {\n // Prepare DOM\n this.wrapperEl = document.createElement('div');\n this.contentWrapperEl = document.createElement('div');\n this.offsetEl = document.createElement('div');\n this.maskEl = document.createElement('div');\n this.contentEl = document.createElement('div');\n this.placeholderEl = document.createElement('div');\n this.heightAutoObserverWrapperEl = document.createElement('div');\n this.heightAutoObserverEl = document.createElement('div');\n\n this.wrapperEl.classList.add(this.classNames.wrapper);\n this.contentWrapperEl.classList.add(this.classNames.contentWrapper);\n this.offsetEl.classList.add(this.classNames.offset);\n this.maskEl.classList.add(this.classNames.mask);\n this.contentEl.classList.add(this.classNames.contentEl);\n this.placeholderEl.classList.add(this.classNames.placeholder);\n this.heightAutoObserverWrapperEl.classList.add(\n this.classNames.heightAutoObserverWrapperEl\n );\n this.heightAutoObserverEl.classList.add(\n this.classNames.heightAutoObserverEl\n );\n\n while (this.el.firstChild) {\n this.contentEl.appendChild(this.el.firstChild);\n }\n\n this.contentWrapperEl.appendChild(this.contentEl);\n this.offsetEl.appendChild(this.contentWrapperEl);\n this.maskEl.appendChild(this.offsetEl);\n this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl);\n this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl);\n this.wrapperEl.appendChild(this.maskEl);\n this.wrapperEl.appendChild(this.placeholderEl);\n this.el.appendChild(this.wrapperEl);\n }\n\n if (!this.axis.x.track.el || !this.axis.y.track.el) {\n const track = document.createElement('div');\n const scrollbar = document.createElement('div');\n\n track.classList.add(this.classNames.track);\n scrollbar.classList.add(this.classNames.scrollbar);\n\n track.appendChild(scrollbar);\n\n this.axis.x.track.el = track.cloneNode(true);\n this.axis.x.track.el.classList.add(this.classNames.horizontal);\n\n this.axis.y.track.el = track.cloneNode(true);\n this.axis.y.track.el.classList.add(this.classNames.vertical);\n\n this.el.appendChild(this.axis.x.track.el);\n this.el.appendChild(this.axis.y.track.el);\n }\n\n this.axis.x.scrollbar.el = this.axis.x.track.el.querySelector(\n `.${this.classNames.scrollbar}`\n );\n this.axis.y.scrollbar.el = this.axis.y.track.el.querySelector(\n `.${this.classNames.scrollbar}`\n );\n\n if (!this.options.autoHide) {\n this.axis.x.scrollbar.el.classList.add(this.classNames.visible);\n this.axis.y.scrollbar.el.classList.add(this.classNames.visible);\n }\n\n this.el.setAttribute('data-simplebar', 'init');\n }\n\n setAccessibilityAttributes() {\n const ariaLabel = this.options.ariaLabel || 'scrollable content';\n\n this.contentWrapperEl.setAttribute('tabindex', '0');\n this.contentWrapperEl.setAttribute('role', 'region');\n this.contentWrapperEl.setAttribute('aria-label', ariaLabel);\n }\n\n initListeners() {\n const elWindow = getElementWindow(this.el);\n // Event listeners\n if (this.options.autoHide) {\n this.el.addEventListener('mouseenter', this.onMouseEnter);\n }\n\n ['mousedown', 'click', 'dblclick'].forEach(e => {\n this.el.addEventListener(e, this.onPointerEvent, true);\n });\n\n ['touchstart', 'touchend', 'touchmove'].forEach(e => {\n this.el.addEventListener(e, this.onPointerEvent, {\n capture: true,\n passive: true\n });\n });\n\n this.el.addEventListener('mousemove', this.onMouseMove);\n this.el.addEventListener('mouseleave', this.onMouseLeave);\n\n this.contentWrapperEl.addEventListener('scroll', this.onScroll);\n\n // Browser zoom triggers a window resize\n elWindow.addEventListener('resize', this.onWindowResize);\n\n // Hack for https://github.com/WICG/ResizeObserver/issues/38\n let resizeObserverStarted = false;\n let resizeAnimationFrameId = null;\n const resizeObserver = elWindow.ResizeObserver || ResizeObserver;\n\n this.resizeObserver = new resizeObserver(() => {\n if (!resizeObserverStarted || resizeAnimationFrameId !== null) return;\n\n resizeAnimationFrameId = elWindow.requestAnimationFrame(() => {\n this.recalculate();\n resizeAnimationFrameId = null;\n });\n });\n\n this.resizeObserver.observe(this.el);\n this.resizeObserver.observe(this.contentEl);\n\n elWindow.requestAnimationFrame(() => {\n resizeObserverStarted = true;\n });\n\n // This is required to detect horizontal scroll. Vertical scroll only needs the resizeObserver.\n this.mutationObserver = new elWindow.MutationObserver(this.recalculate);\n\n this.mutationObserver.observe(this.contentEl, {\n childList: true,\n subtree: true,\n characterData: true\n });\n }\n\n recalculate() {\n const elWindow = getElementWindow(this.el);\n this.elStyles = elWindow.getComputedStyle(this.el);\n this.isRtl = this.elStyles.direction === 'rtl';\n\n const isHeightAuto = this.heightAutoObserverEl.offsetHeight <= 1;\n const isWidthAuto = this.heightAutoObserverEl.offsetWidth <= 1;\n const contentElOffsetWidth = this.contentEl.offsetWidth;\n\n const contentWrapperElOffsetWidth = this.contentWrapperEl.offsetWidth;\n\n const elOverflowX = this.elStyles.overflowX;\n const elOverflowY = this.elStyles.overflowY;\n\n this.contentEl.style.padding = `${this.elStyles.paddingTop} ${this.elStyles.paddingRight} ${this.elStyles.paddingBottom} ${this.elStyles.paddingLeft}`;\n this.wrapperEl.style.margin = `-${this.elStyles.paddingTop} -${this.elStyles.paddingRight} -${this.elStyles.paddingBottom} -${this.elStyles.paddingLeft}`;\n\n const contentElScrollHeight = this.contentEl.scrollHeight;\n const contentElScrollWidth = this.contentEl.scrollWidth;\n\n this.contentWrapperEl.style.height = isHeightAuto ? 'auto' : '100%';\n\n // Determine placeholder size\n this.placeholderEl.style.width = isWidthAuto\n ? `${contentElOffsetWidth}px`\n : 'auto';\n this.placeholderEl.style.height = `${contentElScrollHeight}px`;\n\n const contentWrapperElOffsetHeight = this.contentWrapperEl.offsetHeight;\n\n this.axis.x.isOverflowing = contentElScrollWidth > contentElOffsetWidth;\n this.axis.y.isOverflowing =\n contentElScrollHeight > contentWrapperElOffsetHeight;\n\n // Set isOverflowing to false if user explicitely set hidden overflow\n this.axis.x.isOverflowing =\n elOverflowX === 'hidden' ? false : this.axis.x.isOverflowing;\n this.axis.y.isOverflowing =\n elOverflowY === 'hidden' ? false : this.axis.y.isOverflowing;\n\n this.axis.x.forceVisible =\n this.options.forceVisible === 'x' || this.options.forceVisible === true;\n this.axis.y.forceVisible =\n this.options.forceVisible === 'y' || this.options.forceVisible === true;\n\n this.hideNativeScrollbar();\n\n // Set isOverflowing to false if scrollbar is not necessary (content is shorter than offset)\n let offsetForXScrollbar = this.axis.x.isOverflowing\n ? this.scrollbarWidth\n : 0;\n let offsetForYScrollbar = this.axis.y.isOverflowing\n ? this.scrollbarWidth\n : 0;\n\n this.axis.x.isOverflowing =\n this.axis.x.isOverflowing &&\n contentElScrollWidth > contentWrapperElOffsetWidth - offsetForYScrollbar;\n this.axis.y.isOverflowing =\n this.axis.y.isOverflowing &&\n contentElScrollHeight >\n contentWrapperElOffsetHeight - offsetForXScrollbar;\n\n this.axis.x.scrollbar.size = this.getScrollbarSize('x');\n this.axis.y.scrollbar.size = this.getScrollbarSize('y');\n\n this.axis.x.scrollbar.el.style.width = `${this.axis.x.scrollbar.size}px`;\n this.axis.y.scrollbar.el.style.height = `${this.axis.y.scrollbar.size}px`;\n\n this.positionScrollbar('x');\n this.positionScrollbar('y');\n\n this.toggleTrackVisibility('x');\n this.toggleTrackVisibility('y');\n }\n\n /**\n * Calculate scrollbar size\n */\n getScrollbarSize(axis = 'y') {\n if (!this.axis[axis].isOverflowing) {\n return 0;\n }\n\n const contentSize = this.contentEl[this.axis[axis].scrollSizeAttr];\n const trackSize = this.axis[axis].track.el[this.axis[axis].offsetSizeAttr];\n let scrollbarSize;\n\n let scrollbarRatio = trackSize / contentSize;\n\n // Calculate new height/position of drag handle.\n scrollbarSize = Math.max(\n ~~(scrollbarRatio * trackSize),\n this.options.scrollbarMinSize\n );\n\n if (this.options.scrollbarMaxSize) {\n scrollbarSize = Math.min(scrollbarSize, this.options.scrollbarMaxSize);\n }\n\n return scrollbarSize;\n }\n\n positionScrollbar(axis = 'y') {\n if (!this.axis[axis].isOverflowing) {\n return;\n }\n\n const contentSize = this.contentWrapperEl[this.axis[axis].scrollSizeAttr];\n const trackSize = this.axis[axis].track.el[this.axis[axis].offsetSizeAttr];\n const hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);\n const scrollbar = this.axis[axis].scrollbar;\n\n let scrollOffset = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];\n scrollOffset =\n axis === 'x' &&\n this.isRtl &&\n SimpleBar.getRtlHelpers().isRtlScrollingInverted\n ? -scrollOffset\n : scrollOffset;\n let scrollPourcent = scrollOffset / (contentSize - hostSize);\n\n let handleOffset = ~~((trackSize - scrollbar.size) * scrollPourcent);\n handleOffset =\n axis === 'x' &&\n this.isRtl &&\n SimpleBar.getRtlHelpers().isRtlScrollbarInverted\n ? handleOffset + (trackSize - scrollbar.size)\n : handleOffset;\n\n scrollbar.el.style.transform =\n axis === 'x'\n ? `translate3d(${handleOffset}px, 0, 0)`\n : `translate3d(0, ${handleOffset}px, 0)`;\n }\n\n toggleTrackVisibility(axis = 'y') {\n const track = this.axis[axis].track.el;\n const scrollbar = this.axis[axis].scrollbar.el;\n\n if (this.axis[axis].isOverflowing || this.axis[axis].forceVisible) {\n track.style.visibility = 'visible';\n this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'scroll';\n } else {\n track.style.visibility = 'hidden';\n this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'hidden';\n }\n\n // Even if forceVisible is enabled, scrollbar itself should be hidden\n if (this.axis[axis].isOverflowing) {\n scrollbar.style.display = 'block';\n } else {\n scrollbar.style.display = 'none';\n }\n }\n\n hideNativeScrollbar() {\n this.offsetEl.style[this.isRtl ? 'left' : 'right'] =\n this.axis.y.isOverflowing || this.axis.y.forceVisible\n ? `-${this.scrollbarWidth}px`\n : 0;\n this.offsetEl.style.bottom =\n this.axis.x.isOverflowing || this.axis.x.forceVisible\n ? `-${this.scrollbarWidth}px`\n : 0;\n }\n\n /**\n * On scroll event handling\n */\n onScroll = () => {\n const elWindow = getElementWindow(this.el);\n if (!this.scrollXTicking) {\n elWindow.requestAnimationFrame(this.scrollX);\n this.scrollXTicking = true;\n }\n\n if (!this.scrollYTicking) {\n elWindow.requestAnimationFrame(this.scrollY);\n this.scrollYTicking = true;\n }\n };\n\n scrollX = () => {\n if (this.axis.x.isOverflowing) {\n this.showScrollbar('x');\n this.positionScrollbar('x');\n }\n\n this.scrollXTicking = false;\n };\n\n scrollY = () => {\n if (this.axis.y.isOverflowing) {\n this.showScrollbar('y');\n this.positionScrollbar('y');\n }\n\n this.scrollYTicking = false;\n };\n\n onMouseEnter = () => {\n this.showScrollbar('x');\n this.showScrollbar('y');\n };\n\n onMouseMove = e => {\n this.mouseX = e.clientX;\n this.mouseY = e.clientY;\n\n if (this.axis.x.isOverflowing || this.axis.x.forceVisible) {\n this.onMouseMoveForAxis('x');\n }\n\n if (this.axis.y.isOverflowing || this.axis.y.forceVisible) {\n this.onMouseMoveForAxis('y');\n }\n };\n\n onMouseMoveForAxis(axis = 'y') {\n this.axis[axis].track.rect = this.axis[\n axis\n ].track.el.getBoundingClientRect();\n this.axis[axis].scrollbar.rect = this.axis[\n axis\n ].scrollbar.el.getBoundingClientRect();\n\n const isWithinScrollbarBoundsX = this.isWithinBounds(\n this.axis[axis].scrollbar.rect\n );\n\n if (isWithinScrollbarBoundsX) {\n this.axis[axis].scrollbar.el.classList.add(this.classNames.hover);\n } else {\n this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);\n }\n\n if (this.isWithinBounds(this.axis[axis].track.rect)) {\n this.showScrollbar(axis);\n this.axis[axis].track.el.classList.add(this.classNames.hover);\n } else {\n this.axis[axis].track.el.classList.remove(this.classNames.hover);\n }\n }\n\n onMouseLeave = () => {\n this.onMouseMove.cancel();\n\n if (this.axis.x.isOverflowing || this.axis.x.forceVisible) {\n this.onMouseLeaveForAxis('x');\n }\n\n if (this.axis.y.isOverflowing || this.axis.y.forceVisible) {\n this.onMouseLeaveForAxis('y');\n }\n\n this.mouseX = -1;\n this.mouseY = -1;\n };\n\n onMouseLeaveForAxis(axis = 'y') {\n this.axis[axis].track.el.classList.remove(this.classNames.hover);\n this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);\n }\n\n onWindowResize = () => {\n // Recalculate scrollbarWidth in case it's a zoom\n this.scrollbarWidth = this.getScrollbarWidth();\n\n this.hideNativeScrollbar();\n };\n\n /**\n * Show scrollbar\n */\n showScrollbar(axis = 'y') {\n let scrollbar = this.axis[axis].scrollbar.el;\n\n if (!this.axis[axis].isVisible) {\n scrollbar.classList.add(this.classNames.visible);\n this.axis[axis].isVisible = true;\n }\n\n if (this.options.autoHide) {\n this.hideScrollbars();\n }\n }\n\n /**\n * Hide Scrollbar\n */\n hideScrollbars = () => {\n this.axis.x.track.rect = this.axis.x.track.el.getBoundingClientRect();\n this.axis.y.track.rect = this.axis.y.track.el.getBoundingClientRect();\n\n if (!this.isWithinBounds(this.axis.y.track.rect)) {\n this.axis.y.scrollbar.el.classList.remove(this.classNames.visible);\n this.axis.y.isVisible = false;\n }\n\n if (!this.isWithinBounds(this.axis.x.track.rect)) {\n this.axis.x.scrollbar.el.classList.remove(this.classNames.visible);\n this.axis.x.isVisible = false;\n }\n };\n\n onPointerEvent = e => {\n let isWithinTrackXBounds, isWithinTrackYBounds;\n\n this.axis.x.track.rect = this.axis.x.track.el.getBoundingClientRect();\n this.axis.y.track.rect = this.axis.y.track.el.getBoundingClientRect();\n\n if (this.axis.x.isOverflowing || this.axis.x.forceVisible) {\n isWithinTrackXBounds = this.isWithinBounds(this.axis.x.track.rect);\n }\n\n if (this.axis.y.isOverflowing || this.axis.y.forceVisible) {\n isWithinTrackYBounds = this.isWithinBounds(this.axis.y.track.rect);\n }\n\n // If any pointer event is called on the scrollbar\n if (isWithinTrackXBounds || isWithinTrackYBounds) {\n // Preventing the event's default action stops text being\n // selectable during the drag.\n e.preventDefault();\n // Prevent event leaking\n e.stopPropagation();\n\n if (e.type === 'mousedown') {\n if (isWithinTrackXBounds) {\n this.axis.x.scrollbar.rect = this.axis.x.scrollbar.el.getBoundingClientRect();\n\n if (this.isWithinBounds(this.axis.x.scrollbar.rect)) {\n this.onDragStart(e, 'x');\n } else {\n this.onTrackClick(e, 'x');\n }\n }\n\n if (isWithinTrackYBounds) {\n this.axis.y.scrollbar.rect = this.axis.y.scrollbar.el.getBoundingClientRect();\n\n if (this.isWithinBounds(this.axis.y.scrollbar.rect)) {\n this.onDragStart(e, 'y');\n } else {\n this.onTrackClick(e, 'y');\n }\n }\n }\n }\n };\n\n /**\n * on scrollbar handle drag movement starts\n */\n onDragStart(e, axis = 'y') {\n const elDocument = getElementDocument(this.el);\n const elWindow = getElementWindow(this.el);\n const scrollbar = this.axis[axis].scrollbar;\n\n // Measure how far the user's mouse is from the top of the scrollbar drag handle.\n const eventOffset = axis === 'y' ? e.pageY : e.pageX;\n this.axis[axis].dragOffset =\n eventOffset - scrollbar.rect[this.axis[axis].offsetAttr];\n this.draggedAxis = axis;\n\n this.el.classList.add(this.classNames.dragging);\n\n elDocument.addEventListener('mousemove', this.drag, true);\n elDocument.addEventListener('mouseup', this.onEndDrag, true);\n if (this.removePreventClickId === null) {\n elDocument.addEventListener('click', this.preventClick, true);\n elDocument.addEventListener('dblclick', this.preventClick, true);\n } else {\n elWindow.clearTimeout(this.removePreventClickId);\n this.removePreventClickId = null;\n }\n }\n\n /**\n * Drag scrollbar handle\n */\n drag = e => {\n let eventOffset;\n const track = this.axis[this.draggedAxis].track;\n const trackSize = track.rect[this.axis[this.draggedAxis].sizeAttr];\n const scrollbar = this.axis[this.draggedAxis].scrollbar;\n const contentSize = this.contentWrapperEl[\n this.axis[this.draggedAxis].scrollSizeAttr\n ];\n const hostSize = parseInt(\n this.elStyles[this.axis[this.draggedAxis].sizeAttr],\n 10\n );\n\n e.preventDefault();\n e.stopPropagation();\n\n if (this.draggedAxis === 'y') {\n eventOffset = e.pageY;\n } else {\n eventOffset = e.pageX;\n }\n\n // Calculate how far the user's mouse is from the top/left of the scrollbar (minus the dragOffset).\n let dragPos =\n eventOffset -\n track.rect[this.axis[this.draggedAxis].offsetAttr] -\n this.axis[this.draggedAxis].dragOffset;\n // Convert the mouse position into a percentage of the scrollbar height/width.\n let dragPerc = dragPos / (trackSize - scrollbar.size);\n\n // Scroll the content by the same percentage.\n let scrollPos = dragPerc * (contentSize - hostSize);\n\n // Fix browsers inconsistency on RTL\n if (this.draggedAxis === 'x') {\n scrollPos =\n this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollbarInverted\n ? scrollPos - (trackSize + scrollbar.size)\n : scrollPos;\n scrollPos =\n this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollingInverted\n ? -scrollPos\n : scrollPos;\n }\n\n this.contentWrapperEl[\n this.axis[this.draggedAxis].scrollOffsetAttr\n ] = scrollPos;\n };\n\n /**\n * End scroll handle drag\n */\n onEndDrag = e => {\n const elDocument = getElementDocument(this.el);\n const elWindow = getElementWindow(this.el);\n e.preventDefault();\n e.stopPropagation();\n\n this.el.classList.remove(this.classNames.dragging);\n\n elDocument.removeEventListener('mousemove', this.drag, true);\n elDocument.removeEventListener('mouseup', this.onEndDrag, true);\n this.removePreventClickId = elWindow.setTimeout(() => {\n // Remove these asynchronously so we still suppress click events\n // generated simultaneously with mouseup.\n elDocument.removeEventListener('click', this.preventClick, true);\n elDocument.removeEventListener('dblclick', this.preventClick, true);\n this.removePreventClickId = null;\n });\n };\n\n /**\n * Handler to ignore click events during drag\n */\n preventClick = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n onTrackClick(e, axis = 'y') {\n if (!this.options.clickOnTrack) return;\n\n const elWindow = getElementWindow(this.el);\n this.axis[axis].scrollbar.rect = this.axis[\n axis\n ].scrollbar.el.getBoundingClientRect();\n const scrollbar = this.axis[axis].scrollbar;\n const scrollbarOffset = scrollbar.rect[this.axis[axis].offsetAttr];\n const hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);\n let scrolled = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];\n const t =\n axis === 'y'\n ? this.mouseY - scrollbarOffset\n : this.mouseX - scrollbarOffset;\n const dir = t < 0 ? -1 : 1;\n const scrollSize = dir === -1 ? scrolled - hostSize : scrolled + hostSize;\n\n const scrollTo = () => {\n if (dir === -1) {\n if (scrolled > scrollSize) {\n scrolled -= this.options.clickOnTrackSpeed;\n this.contentWrapperEl.scrollTo({\n [this.axis[axis].offsetAttr]: scrolled\n });\n elWindow.requestAnimationFrame(scrollTo);\n }\n } else {\n if (scrolled < scrollSize) {\n scrolled += this.options.clickOnTrackSpeed;\n this.contentWrapperEl.scrollTo({\n [this.axis[axis].offsetAttr]: scrolled\n });\n elWindow.requestAnimationFrame(scrollTo);\n }\n }\n };\n\n scrollTo();\n }\n\n /**\n * Getter for content element\n */\n getContentElement() {\n return this.contentEl;\n }\n\n /**\n * Getter for original scrolling element\n */\n getScrollElement() {\n return this.contentWrapperEl;\n }\n\n getScrollbarWidth() {\n // Try/catch for FF 56 throwing on undefined computedStyles\n try {\n // Detect browsers supporting CSS scrollbar styling and do not calculate\n if (\n getComputedStyle(this.contentWrapperEl, '::-webkit-scrollbar')\n .display === 'none' ||\n 'scrollbarWidth' in document.documentElement.style ||\n '-ms-overflow-style' in document.documentElement.style\n ) {\n return 0;\n } else {\n return scrollbarWidth(this.el);\n }\n } catch (e) {\n return scrollbarWidth(this.el);\n }\n }\n\n removeListeners() {\n const elWindow = getElementWindow(this.el);\n // Event listeners\n if (this.options.autoHide) {\n this.el.removeEventListener('mouseenter', this.onMouseEnter);\n }\n\n ['mousedown', 'click', 'dblclick'].forEach(e => {\n this.el.removeEventListener(e, this.onPointerEvent, true);\n });\n\n ['touchstart', 'touchend', 'touchmove'].forEach(e => {\n this.el.removeEventListener(e, this.onPointerEvent, {\n capture: true,\n passive: true\n });\n });\n\n this.el.removeEventListener('mousemove', this.onMouseMove);\n this.el.removeEventListener('mouseleave', this.onMouseLeave);\n\n if (this.contentWrapperEl) {\n this.contentWrapperEl.removeEventListener('scroll', this.onScroll);\n }\n\n elWindow.removeEventListener('resize', this.onWindowResize);\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n // Cancel all debounced functions\n this.recalculate.cancel();\n this.onMouseMove.cancel();\n this.hideScrollbars.cancel();\n this.onWindowResize.cancel();\n }\n\n /**\n * UnMount mutation observer and delete SimpleBar instance from DOM element\n */\n unMount() {\n this.removeListeners();\n SimpleBar.instances.delete(this.el);\n }\n\n /**\n * Check if mouse is within bounds\n */\n isWithinBounds(bbox) {\n return (\n this.mouseX >= bbox.left &&\n this.mouseX <= bbox.left + bbox.width &&\n this.mouseY >= bbox.top &&\n this.mouseY <= bbox.top + bbox.height\n );\n }\n\n /**\n * Find element children matches query\n */\n findChild(el, query) {\n const matches =\n el.matches ||\n el.webkitMatchesSelector ||\n el.mozMatchesSelector ||\n el.msMatchesSelector;\n return Array.prototype.filter.call(el.children, child =>\n matches.call(child, query)\n )[0];\n }\n}\n","/**\n * simplebar-react - v2.4.3\n * React component for SimpleBar\n * https://grsmto.github.io/simplebar/\n *\n * Made by Adrien Denat\n * Under MIT License\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport SimpleBarJS from 'simplebar/dist/simplebar-core.esm';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar _excluded = [\"children\", \"scrollableNodeProps\", \"tag\"];\n/* Deprecated\n * Hardcore this here until we can safely deprecated it.\n * Helper function to retrieve options from element attributes\n */\n\nvar getOptions = function getOptions(obj) {\n var options = Array.prototype.reduce.call(obj, function (acc, attribute) {\n var option = attribute.name.match(/data-simplebar-(.+)/);\n\n if (option) {\n var key = option[1].replace(/\\W+(.)/g, function (x, chr) {\n return chr.toUpperCase();\n });\n\n switch (attribute.value) {\n case 'true':\n acc[key] = true;\n break;\n\n case 'false':\n acc[key] = false;\n break;\n\n case undefined:\n acc[key] = true;\n break;\n\n default:\n acc[key] = attribute.value;\n }\n }\n\n return acc;\n }, {});\n return options;\n};\n\nvar SimpleBar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var children = _ref.children,\n _ref$scrollableNodePr = _ref.scrollableNodeProps,\n scrollableNodeProps = _ref$scrollableNodePr === void 0 ? {} : _ref$scrollableNodePr,\n _ref$tag = _ref.tag,\n tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var RootTag = tag;\n var instance;\n var scrollableNodeRef = useRef();\n var elRef = useRef();\n var contentNodeRef = useRef();\n var options = {};\n var rest = {};\n var deprecatedOptions = [];\n Object.keys(otherProps).forEach(function (key) {\n if (Object.prototype.hasOwnProperty.call(SimpleBarJS.defaultOptions, key)) {\n options[key] = otherProps[key];\n } else if (key.match(/data-simplebar-(.+)/) && key !== 'data-simplebar-direction') {\n deprecatedOptions.push({\n name: key,\n value: otherProps[key]\n });\n } else {\n rest[key] = otherProps[key];\n }\n });\n\n if (deprecatedOptions.length) {\n console.warn(\"simplebar-react: this way of passing options is deprecated. Pass it like normal props instead:\\n 'data-simplebar-auto-hide=\\\"false\\\"' \\u2014> 'autoHide=\\\"false\\\"'\\n \");\n }\n\n useEffect(function () {\n scrollableNodeRef = scrollableNodeProps.ref || scrollableNodeRef;\n\n if (elRef.current) {\n instance = new SimpleBarJS(elRef.current, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, getOptions(deprecatedOptions)), options), scrollableNodeRef && {\n scrollableNode: scrollableNodeRef.current\n }), contentNodeRef.current && {\n contentNode: contentNodeRef.current\n }));\n\n if (typeof ref === 'function') {\n ref(instance);\n } else if (ref) {\n ref.current = instance;\n }\n }\n\n return function () {\n instance.unMount();\n instance = null;\n\n if (typeof ref === 'function') {\n ref(null);\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(RootTag, _extends({\n ref: elRef,\n \"data-simplebar\": true\n }, rest), /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-wrapper\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-height-auto-observer-wrapper\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-height-auto-observer\"\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-mask\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-offset\"\n }, typeof children === 'function' ? children({\n scrollableNodeRef: scrollableNodeRef,\n contentNodeRef: contentNodeRef\n }) : /*#__PURE__*/React.createElement(\"div\", _extends({}, scrollableNodeProps, {\n className: \"simplebar-content-wrapper\".concat(scrollableNodeProps.className ? \" \".concat(scrollableNodeProps.className) : '')\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-content\"\n }, children)))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-placeholder\"\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-track simplebar-horizontal\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-scrollbar\"\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-track simplebar-vertical\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"simplebar-scrollbar\"\n })));\n});\nSimpleBar.displayName = 'SimpleBar';\nSimpleBar.propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n scrollableNodeProps: PropTypes.object,\n tag: PropTypes.string\n};\n\nexport default SimpleBar;\n","import SimpleBar from 'simplebar-react';\r\n// @mui\r\nimport { alpha, styled } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledRootScrollbar = styled('div')(() => ({\r\n flexGrow: 1,\r\n height: '100%',\r\n overflow: 'hidden',\r\n}));\r\n\r\nexport const StyledScrollbar = styled(SimpleBar)(({ theme }) => ({\r\n maxHeight: '100%',\r\n '& .simplebar-scrollbar': {\r\n '&:before': {\r\n backgroundColor: alpha(theme.palette.grey[600], 0.48),\r\n },\r\n '&.simplebar-visible:before': {\r\n opacity: 1,\r\n },\r\n },\r\n '& .simplebar-track.simplebar-vertical': {\r\n width: 10,\r\n },\r\n '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': {\r\n height: 6,\r\n },\r\n '& .simplebar-mask': {\r\n zIndex: 'inherit',\r\n },\r\n}));\r\n","import PropTypes from 'prop-types';\r\nimport { memo } from 'react';\r\n// @mui\r\nimport { Box } from '@mui/material';\r\n//\r\nimport { StyledRootScrollbar, StyledScrollbar } from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nScrollbar.propTypes = {\r\n sx: PropTypes.object,\r\n children: PropTypes.node,\r\n};\r\n\r\nfunction Scrollbar({ children, sx, ...other }) {\r\n const userAgent = typeof navigator === 'undefined' ? 'SSR' : navigator.userAgent;\r\n\r\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);\r\n\r\n if (isMobile) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(Scrollbar);\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { Paper, Typography } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nSearchNotFound.propTypes = {\r\n query: PropTypes.string,\r\n sx: PropTypes.object,\r\n};\r\n\r\nexport default function SearchNotFound({ query, sx, ...other }) {\r\n return query ? (\r\n \r\n \r\n Not found\r\n \r\n\r\n \r\n No results found for  \r\n "{query}".\r\n
Try checking for typos or using complete words.\r\n
\r\n \r\n ) : (\r\n \r\n Please enter keywords\r\n \r\n );\r\n}\r\n","// PLEASE REMOVE `LOCAL STORAGE` WHEN YOU CHANGE SETTINGS.\r\n// ----------------------------------------------------------------------\r\n\r\nexport const defaultSettings = {\r\n themeMode: 'light',\r\n themeDirection: 'ltr',\r\n themeContrast: 'default',\r\n themeLayout: 'vertical',\r\n themeColorPresets: 'default',\r\n themeStretch: false,\r\n};\r\n","// theme\r\nimport palette from '../../theme/palette';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst themePalette = palette('light');\r\n\r\nexport const presets = [\r\n // DEFAULT\r\n {\r\n name: 'default',\r\n ...themePalette.primary,\r\n },\r\n // CYAN\r\n {\r\n name: 'cyan',\r\n lighter: '#CCF4FE',\r\n light: '#68CDF9',\r\n main: '#078DEE',\r\n dark: '#0351AB',\r\n darker: '#012972',\r\n contrastText: '#FFFFFF',\r\n },\r\n // PURPLE\r\n {\r\n name: 'purple',\r\n lighter: '#EBD6FD',\r\n light: '#B985F4',\r\n main: '#7635dc',\r\n dark: '#431A9E',\r\n darker: '#200A69',\r\n contrastText: '#FFFFFF',\r\n },\r\n // BLUE\r\n {\r\n name: 'blue',\r\n lighter: '#D1E9FC',\r\n light: '#76B0F1',\r\n main: '#2065D1',\r\n dark: '#103996',\r\n darker: '#061B64',\r\n contrastText: '#FFFFFF',\r\n },\r\n // ORANGE\r\n {\r\n name: 'orange',\r\n lighter: '#FEF4D4',\r\n light: '#FED680',\r\n main: '#fda92d',\r\n dark: '#B66816',\r\n darker: '#793908',\r\n contrastText: themePalette.grey[800],\r\n },\r\n // RED\r\n {\r\n name: 'red',\r\n lighter: '#FFE3D5',\r\n light: '#FFC1AC',\r\n main: '#FF3030',\r\n dark: '#B71833',\r\n darker: '#7A0930',\r\n contrastText: '#FFFFFF',\r\n },\r\n // THEME OF THE PROJECT\r\n {\r\n name: 'theme',\r\n lighter: '#03c5dd',\r\n light: '#0291a3',\r\n main: '#028090',\r\n dark: '#026f7d',\r\n darker: '#014c56',\r\n contrastText: '#FFFFFF',\r\n },\r\n];\r\n\r\nexport const defaultPreset = presets[6];\r\nexport const cyanPreset = presets[1];\r\nexport const purplePreset = presets[2];\r\nexport const bluePreset = presets[3];\r\nexport const orangePreset = presets[4];\r\nexport const redPreset = presets[5];\r\nexport const themePreset = presets[0];\r\n\r\nexport const presetsOption = presets.map((color) => ({\r\n name: color.name,\r\n value: color.main,\r\n}));\r\n\r\nexport function getPresets(key) {\r\n return {\r\n default: themePreset,\r\n cyan: cyanPreset,\r\n purple: purplePreset,\r\n blue: bluePreset,\r\n orange: orangePreset,\r\n red: redPreset,\r\n theme: defaultPreset,\r\n }[key];\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { createContext, useEffect, useContext, useMemo, useCallback } from 'react';\r\n// hooks\r\nimport useLocalStorage from '../../hooks/useLocalStorage';\r\n// utils\r\nimport localStorageAvailable from '../../utils/localStorageAvailable';\r\n//\r\nimport { defaultSettings } from './config-setting';\r\nimport { defaultPreset, getPresets, presetsOption } from './presets';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst initialState = {\r\n ...defaultSettings,\r\n // Mode\r\n onToggleMode: () => {},\r\n onChangeMode: () => {},\r\n // Direction\r\n onToggleDirection: () => {},\r\n onChangeDirection: () => {},\r\n onChangeDirectionByLang: () => {},\r\n // Layout\r\n onToggleLayout: () => {},\r\n onChangeLayout: () => {},\r\n // Contrast\r\n onToggleContrast: () => {},\r\n onChangeContrast: () => {},\r\n // Color\r\n onChangeColorPresets: () => {},\r\n presetsColor: defaultPreset,\r\n presetsOption: [],\r\n // Stretch\r\n onToggleStretch: () => {},\r\n // Reset\r\n onResetSetting: () => {},\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const SettingsContext = createContext(initialState);\r\n\r\nexport const useSettingsContext = () => {\r\n const context = useContext(SettingsContext);\r\n\r\n if (!context) throw new Error('useSettingsContext must be use inside SettingsProvider');\r\n\r\n return context;\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nSettingsProvider.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport function SettingsProvider({ children }) {\r\n const [settings, setSettings] = useLocalStorage('settings', defaultSettings);\r\n\r\n const storageAvailable = localStorageAvailable();\r\n\r\n const langStorage = storageAvailable ? localStorage.getItem('i18nextLng') : '';\r\n\r\n const isArabic = langStorage === 'ar';\r\n\r\n useEffect(() => {\r\n if (isArabic) {\r\n onChangeDirectionByLang('ar');\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isArabic]);\r\n\r\n // Mode\r\n const onToggleMode = useCallback(() => {\r\n const themeMode = settings.themeMode === 'light' ? 'dark' : 'light';\r\n setSettings({ ...settings, themeMode });\r\n }, [setSettings, settings]);\r\n\r\n const onChangeMode = useCallback(\r\n (event) => {\r\n const themeMode = event.target.value;\r\n setSettings({ ...settings, themeMode });\r\n },\r\n [setSettings, settings]\r\n );\r\n\r\n // Direction\r\n const onToggleDirection = useCallback(() => {\r\n const themeDirection = settings.themeDirection === 'rtl' ? 'ltr' : 'rtl';\r\n setSettings({ ...settings, themeDirection });\r\n }, [setSettings, settings]);\r\n\r\n const onChangeDirection = useCallback(\r\n (event) => {\r\n const themeDirection = event.target.value;\r\n setSettings({ ...settings, themeDirection });\r\n },\r\n [setSettings, settings]\r\n );\r\n\r\n const onChangeDirectionByLang = useCallback(\r\n (lang) => {\r\n const themeDirection = lang === 'ar' ? 'rtl' : 'ltr';\r\n setSettings({ ...settings, themeDirection });\r\n },\r\n [setSettings, settings]\r\n );\r\n\r\n // Layout\r\n const onToggleLayout = useCallback(() => {\r\n const themeLayout = settings.themeLayout === 'vertical' ? 'mini' : 'vertical';\r\n setSettings({ ...settings, themeLayout });\r\n }, [setSettings, settings]);\r\n\r\n const onChangeLayout = useCallback(\r\n (event) => {\r\n const themeLayout = event.target.value;\r\n setSettings({ ...settings, themeLayout });\r\n },\r\n [setSettings, settings]\r\n );\r\n\r\n // Contrast\r\n const onToggleContrast = useCallback(() => {\r\n const themeContrast = settings.themeContrast === 'default' ? 'bold' : 'default';\r\n setSettings({ ...settings, themeContrast });\r\n }, [setSettings, settings]);\r\n\r\n const onChangeContrast = useCallback(\r\n (event) => {\r\n const themeContrast = event.target.value;\r\n setSettings({ ...settings, themeContrast });\r\n },\r\n [setSettings, settings]\r\n );\r\n\r\n // Color\r\n const onChangeColorPresets = useCallback(\r\n (event) => {\r\n const themeColorPresets = event.target.value;\r\n setSettings({ ...settings, themeColorPresets });\r\n },\r\n [setSettings, settings]\r\n );\r\n\r\n // Stretch\r\n const onToggleStretch = useCallback(() => {\r\n const themeStretch = !settings.themeStretch;\r\n setSettings({ ...settings, themeStretch });\r\n }, [setSettings, settings]);\r\n\r\n // Reset\r\n const onResetSetting = useCallback(() => {\r\n setSettings(defaultSettings);\r\n }, [setSettings]);\r\n\r\n const memoizedValue = useMemo(\r\n () => ({\r\n ...settings,\r\n // Mode\r\n onToggleMode,\r\n onChangeMode,\r\n // Direction\r\n onToggleDirection,\r\n onChangeDirection,\r\n onChangeDirectionByLang,\r\n // Layout\r\n onToggleLayout,\r\n onChangeLayout,\r\n // Contrast\r\n onChangeContrast,\r\n onToggleContrast,\r\n // Stretch\r\n onToggleStretch,\r\n // Color\r\n onChangeColorPresets,\r\n presetsOption,\r\n presetsColor: getPresets(settings.themeColorPresets),\r\n // Reset\r\n onResetSetting,\r\n }),\r\n [\r\n settings,\r\n // Mode\r\n onToggleMode,\r\n onChangeMode,\r\n // Direction\r\n onToggleDirection,\r\n onChangeDirection,\r\n onChangeDirectionByLang,\r\n // Layout\r\n onToggleLayout,\r\n onChangeLayout,\r\n onChangeContrast,\r\n // Contrast\r\n onToggleContrast,\r\n // Stretch\r\n onToggleStretch,\r\n // Color\r\n onChangeColorPresets,\r\n // Reset\r\n onResetSetting,\r\n ]\r\n );\r\n\r\n return {children};\r\n}\r\n","import { useState, useEffect } from 'react';\r\n// utils\r\nimport localStorageAvailable from '../utils/localStorageAvailable';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function useLocalStorage(key, defaultValue) {\r\n const storageAvailable = localStorageAvailable();\r\n\r\n const [value, setValue] = useState(() => {\r\n const storedValue = storageAvailable ? localStorage.getItem(key) : null;\r\n\r\n return storedValue === null ? defaultValue : JSON.parse(storedValue);\r\n });\r\n\r\n useEffect(() => {\r\n const listener = (e) => {\r\n if (e.storageArea === localStorage && e.key === key) {\r\n setValue(e.newValue ? JSON.parse(e.newValue) : e.newValue);\r\n }\r\n };\r\n window.addEventListener('storage', listener);\r\n\r\n return () => {\r\n window.removeEventListener('storage', listener);\r\n };\r\n }, [key, defaultValue]);\r\n\r\n const setValueInLocalStorage = (newValue) => {\r\n setValue((currentValue) => {\r\n const result = typeof newValue === 'function' ? newValue(currentValue) : newValue;\r\n\r\n if (storageAvailable) {\r\n localStorage.setItem(key, JSON.stringify(result));\r\n }\r\n\r\n return result;\r\n });\r\n };\r\n\r\n return [value, setValueInLocalStorage];\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport merge from 'lodash/merge';\r\nimport { useMemo } from 'react';\r\n// @mui\r\nimport { ThemeProvider, createTheme, useTheme } from '@mui/material/styles';\r\nimport { CssBaseline } from '@mui/material';\r\n//\r\nimport { useSettingsContext } from './SettingsContext';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nThemeContrast.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function ThemeContrast({ children }) {\r\n const outerTheme = useTheme();\r\n\r\n const { themeContrast, themeMode } = useSettingsContext();\r\n\r\n const isLight = themeMode === 'light';\r\n\r\n const isContrastBold = themeContrast === 'bold';\r\n\r\n const themeOptions = useMemo(\r\n () => ({\r\n palette: {\r\n background: {\r\n ...(isContrastBold && {\r\n default: isLight ? outerTheme.palette.grey[100] : outerTheme.palette.grey[900],\r\n }),\r\n },\r\n },\r\n components: {\r\n MuiCard: {\r\n styleOverrides: {\r\n ...(isContrastBold && {\r\n root: {\r\n boxShadow: outerTheme.customShadows.z4,\r\n },\r\n }),\r\n },\r\n },\r\n },\r\n }),\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [isLight, themeContrast]\r\n );\r\n\r\n const theme = createTheme(merge(outerTheme, themeOptions));\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n );\r\n}\r\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599:\n\t\t\treturn WEBKIT + value + value\n\t\t// mask-composite\n\t\tcase 4855:\n\t\t\treturn WEBKIT + value.replace('add', 'source-over').replace('substract', 'source-out').replace('intersect', 'source-in').replace('exclude', 'xor') + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /space-between/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n",null,"import PropTypes from 'prop-types';\r\nimport { useEffect } from 'react';\r\n// rtl\r\nimport { prefixer } from 'stylis';\r\nimport rtlPlugin from 'stylis-plugin-rtl';\r\n// emotion\r\nimport createCache from '@emotion/cache';\r\nimport { CacheProvider } from '@emotion/react';\r\n// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nThemeRtlLayout.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function ThemeRtlLayout({ children }) {\r\n const theme = useTheme();\r\n\r\n useEffect(() => {\r\n document.dir = theme.direction;\r\n }, [theme.direction]);\r\n\r\n const cacheRtl = createCache({\r\n key: theme.direction === 'rtl' ? 'rtl' : 'css',\r\n stylisPlugins: theme.direction === 'rtl' ? [prefixer, rtlPlugin] : [],\r\n });\r\n\r\n return {children};\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport merge from 'lodash/merge';\r\nimport { useMemo } from 'react';\r\n// @mui\r\nimport { alpha, ThemeProvider, createTheme, useTheme } from '@mui/material/styles';\r\n//\r\nimport { useSettingsContext } from './SettingsContext';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nThemeColorPresets.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function ThemeColorPresets({ children }) {\r\n const outerTheme = useTheme();\r\n\r\n const { presetsColor } = useSettingsContext();\r\n\r\n const themeOptions = useMemo(\r\n () => ({\r\n palette: {\r\n primary: presetsColor,\r\n },\r\n customShadows: {\r\n primary: `0 8px 16px 0 ${alpha(presetsColor.main, 0.24)}`,\r\n },\r\n }),\r\n [presetsColor]\r\n );\r\n\r\n const theme = createTheme(merge(outerTheme, themeOptions));\r\n\r\n return {children};\r\n}\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { Stack, Tooltip, Typography } from '@mui/material';\r\n//\r\nimport Iconify from '../../iconify';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst SPACING = 2.5;\r\n\r\nBlock.propTypes = {\r\n sx: PropTypes.object,\r\n title: PropTypes.string,\r\n tooltip: PropTypes.string,\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function Block({ title, tooltip, children, sx, ...other }) {\r\n return (\r\n \r\n \r\n \r\n {title}\r\n \r\n\r\n {tooltip && (\r\n \r\n \r\n \r\n )}\r\n \r\n\r\n {children}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nBadgeDot.propTypes = {\r\n sx: PropTypes.object,\r\n};\r\n\r\nexport default function BadgeDot({ sx, ...other }) {\r\n return (\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { CardActionArea, Radio, FormControlLabel, Stack, Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledWrap = styled(Box)(() => ({\r\n gap: 8,\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2, 1fr)',\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledCard = styled(CardActionArea, {\r\n shouldForwardProp: (prop) => prop !== 'selected',\r\n})(({ selected, theme }) => ({\r\n height: 72,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.text.disabled,\r\n borderRadius: theme.shape.borderRadius,\r\n border: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`,\r\n '& .svg-color': {\r\n width: 28,\r\n height: 28,\r\n },\r\n ...(selected && {\r\n color: theme.palette.primary.main,\r\n boxShadow: theme.customShadows.z12,\r\n borderColor: alpha(theme.palette.grey[500], 0.24),\r\n }),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledCircleColor = styled('div', {\r\n shouldForwardProp: (prop) => prop !== 'selected',\r\n})(({ selected, color, theme }) => ({\r\n width: 12,\r\n height: 12,\r\n borderRadius: '50%',\r\n backgroundColor: color,\r\n transition: theme.transitions.create(['width', 'height'], {\r\n easing: theme.transitions.easing.easeInOut,\r\n duration: theme.transitions.duration.shorter,\r\n }),\r\n ...(selected && {\r\n width: 24,\r\n height: 24,\r\n boxShadow: `-2px 4px 8px 0px ${alpha(color, 0.48)}`,\r\n }),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMaskControl.propTypes = {\r\n value: PropTypes.string,\r\n};\r\n\r\nexport function MaskControl({ value }) {\r\n return (\r\n }\r\n sx={{\r\n m: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n position: 'absolute',\r\n }}\r\n />\r\n );\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nLayoutIcon.propTypes = {\r\n layout: PropTypes.string,\r\n};\r\n\r\nexport function LayoutIcon({ layout }) {\r\n const WIDTH = 16;\r\n\r\n const HEIGHT = 10;\r\n\r\n const SPACING = 0.5;\r\n\r\n const RADIUS = 0.5;\r\n\r\n const isNavHorizontal = layout === 'horizontal';\r\n\r\n const isNavMini = layout === 'mini';\r\n\r\n const styles = {\r\n width: 1,\r\n height: 1,\r\n borderRadius: RADIUS,\r\n position: 'absolute',\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { RadioGroup } from '@mui/material';\r\n//\r\nimport SvgColor from '../../svg-color';\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport { StyledCard, StyledWrap, MaskControl } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst OPTIONS = ['light', 'dark'];\r\n\r\nexport default function ModeOptions() {\r\n const { themeMode, onChangeMode } = useSettingsContext();\r\n\r\n return (\r\n \r\n \r\n {OPTIONS.map((mode) => (\r\n \r\n \r\n\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { RadioGroup } from '@mui/material';\r\n//\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport { StyledCard, StyledWrap, MaskControl, LayoutIcon } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst OPTIONS = ['vertical', 'horizontal', 'mini'];\r\n\r\nexport default function LayoutOptions() {\r\n const { themeLayout, onChangeLayout } = useSettingsContext();\r\n\r\n return (\r\n \r\n \r\n {OPTIONS.map((layout) => (\r\n \r\n \r\n\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { Stack, Box } from '@mui/material';\r\n//\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport Iconify from '../../iconify';\r\nimport { StyledCard } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function StretchOptions() {\r\n const { themeStretch, onToggleStretch } = useSettingsContext();\r\n\r\n return (\r\n \r\n theme.transitions.create('width'),\r\n ...(themeStretch && {\r\n width: 0.5,\r\n }),\r\n }}\r\n >\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { RadioGroup } from '@mui/material';\r\n//\r\nimport SvgColor from '../../svg-color';\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport { StyledCard, StyledWrap, MaskControl } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst OPTIONS = ['default', 'bold'];\r\n\r\nexport default function ContrastOptions() {\r\n const { themeContrast, onChangeContrast } = useSettingsContext();\r\n\r\n return (\r\n \r\n \r\n {OPTIONS.map((contrast) => (\r\n \r\n \r\n\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { RadioGroup } from '@mui/material';\r\n//\r\nimport SvgColor from '../../svg-color';\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport { StyledCard, StyledWrap, MaskControl } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst OPTIONS = ['ltr', 'rtl'];\r\n\r\nexport default function DirectionOptions() {\r\n const { themeDirection, onChangeDirection } = useSettingsContext();\r\n\r\n return (\r\n \r\n \r\n {OPTIONS.map((direction) => (\r\n \r\n \r\n\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","import { useState } from 'react';\r\n//\r\nimport SvgColor from '../../svg-color';\r\nimport { StyledCard } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function FullScreenOptions() {\r\n const [fullscreen, setFullscreen] = useState(false);\r\n\r\n const onToggleFullScreen = () => {\r\n if (!document.fullscreenElement) {\r\n document.documentElement.requestFullscreen();\r\n setFullscreen(true);\r\n } else if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n setFullscreen(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {fullscreen ? 'Exit Fullscreen' : 'Fullscreen'}\r\n\r\n \r\n \r\n );\r\n}\r\n","// @mui\r\nimport { alpha } from '@mui/material/styles';\r\nimport { RadioGroup } from '@mui/material';\r\n//\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport { StyledCard, StyledWrap, MaskControl, StyledCircleColor } from '../styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function ColorPresetsOptions() {\r\n const { themeColorPresets, onChangeColorPresets, presetsOption } = useSettingsContext();\r\n\r\n return (\r\n \r\n \r\n {presetsOption.map((color) => {\r\n const { name, value } = color;\r\n\r\n const selected = themeColorPresets === name;\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n}\r\n","import { useState } from 'react';\r\n// @mui\r\nimport { alpha, useTheme } from '@mui/material/styles';\r\nimport { Box, Divider, Drawer, Stack, Typography, Tooltip, IconButton } from '@mui/material';\r\n// utils\r\nimport { bgBlur } from '../../../utils/cssStyles';\r\n// config\r\nimport { NAV } from '../../../config-global';\r\n//\r\nimport Iconify from '../../iconify';\r\nimport Scrollbar from '../../scrollbar';\r\n//\r\nimport { defaultSettings } from '../config-setting';\r\nimport { useSettingsContext } from '../SettingsContext';\r\nimport Block from './Block';\r\nimport BadgeDot from './BadgeDot';\r\nimport ToggleButton from './ToggleButton';\r\nimport ModeOptions from './ModeOptions';\r\nimport LayoutOptions from './LayoutOptions';\r\nimport StretchOptions from './StretchOptions';\r\nimport ContrastOptions from './ContrastOptions';\r\nimport DirectionOptions from './DirectionOptions';\r\nimport FullScreenOptions from './FullScreenOptions';\r\nimport ColorPresetsOptions from './ColorPresetsOptions';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst SPACING = 2.5;\r\n\r\nexport default function SettingsDrawer() {\r\n const {\r\n themeMode,\r\n themeLayout,\r\n themeStretch,\r\n themeContrast,\r\n themeDirection,\r\n themeColorPresets,\r\n onResetSetting,\r\n } = useSettingsContext();\r\n\r\n const theme = useTheme();\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n setOpen(!open);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const notDefault =\r\n themeMode !== defaultSettings.themeMode ||\r\n themeLayout !== defaultSettings.themeLayout ||\r\n themeStretch !== defaultSettings.themeStretch ||\r\n themeContrast !== defaultSettings.themeContrast ||\r\n themeDirection !== defaultSettings.themeDirection ||\r\n themeColorPresets !== defaultSettings.themeColorPresets;\r\n\r\n return (\r\n <>\r\n {/* {!open && } */}\r\n\r\n \r\n \r\n \r\n Settings\r\n \r\n\r\n \r\n \r\n {notDefault && }\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n 1600px (xl)\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport ThemeContrast from './ThemeContrast';\r\nimport ThemeRtlLayout from './ThemeRtlLayout';\r\nimport ThemeColorPresets from './ThemeColorPresets';\r\nimport SettingsDrawer from './drawer';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nThemeSettings.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function ThemeSettings({ children }) {\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t : never` once generatePropTypes runs with TS 4.1\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n const {\n children,\n disableReactTree = false,\n mouseEvent = 'onClick',\n onClickAway,\n touchEvent = 'onTouchEnd'\n } = props;\n const movedRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n React.useEffect(() => {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n setTimeout(() => {\n activatedRef.current = true;\n }, 0);\n return () => {\n activatedRef.current = false;\n };\n }, []);\n const handleRef = useForkRef(getReactElementRef(children), nodeRef);\n\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n const handleClickAway = useEventCallback(event => {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current);\n\n // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n }\n\n // Do not act if user performed touchmove\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n let insideDOM;\n\n // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(\n // @ts-expect-error returns `false` as intended when not dispatched from a Node\n event.target) || nodeRef.current.contains(\n // @ts-expect-error returns `false` as intended when not dispatched from a Node\n event.target);\n }\n if (!insideDOM && (disableReactTree || !insideReactTree)) {\n onClickAway(event);\n }\n });\n\n // Keep track of mouse/touch events that bubbled up through the portal.\n const createHandleSynthetic = handlerName => event => {\n syntheticEventRef.current = true;\n const childrenPropsHandler = children.props[handlerName];\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n const childrenProps = {\n ref: handleRef\n };\n if (touchEvent !== false) {\n childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n }\n React.useEffect(() => {\n if (touchEvent !== false) {\n const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n const doc = ownerDocument(nodeRef.current);\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n return undefined;\n }, [handleClickAway, touchEvent]);\n if (mouseEvent !== false) {\n childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n }\n React.useEffect(() => {\n if (mouseEvent !== false) {\n const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return () => {\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n return undefined;\n }, [handleClickAway, mouseEvent]);\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The wrapped element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * If `true`, the React tree is ignored and only the DOM tree is considered.\n * This prop changes how portaled elements are handled.\n * @default false\n */\n disableReactTree: PropTypes.bool,\n /**\n * The mouse event to listen to. You can disable the listener by providing `false`.\n * @default 'onClick'\n */\n mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n /**\n * Callback fired when a \"click away\" event is detected.\n */\n onClickAway: PropTypes.func.isRequired,\n /**\n * The touch event to listen to. You can disable the listener by providing `false`.\n * @default 'onTouchEnd'\n */\n touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport { ClickAwayListener };","import React from 'react';\nimport { ProviderContext } from '.';\n\n// @ts-ignore\nexport default React.createContext();\n","import Slide from '@mui/material/Slide';\nimport { SnackbarClassKey } from '@mui/material/Snackbar';\nimport { CloseReason, ContainerClassKey, SnackbarProviderProps, VariantType, SnackbarOrigin, VariantClassKey } from '../index';\nimport { SnackbarItemProps } from '../SnackbarItem';\nimport { Snack } from '../SnackbarProvider';\n\nexport const allClasses: {\n mui: Record;\n container: Record;\n} = {\n mui: {\n root: {},\n anchorOriginTopCenter: {},\n anchorOriginBottomCenter: {},\n anchorOriginTopRight: {},\n anchorOriginBottomRight: {},\n anchorOriginTopLeft: {},\n anchorOriginBottomLeft: {},\n },\n container: {\n containerRoot: {},\n containerAnchorOriginTopCenter: {},\n containerAnchorOriginBottomCenter: {},\n containerAnchorOriginTopRight: {},\n containerAnchorOriginBottomRight: {},\n containerAnchorOriginTopLeft: {},\n containerAnchorOriginBottomLeft: {},\n },\n};\n\nexport const MESSAGES = {\n NO_PERSIST_ALL: 'WARNING - notistack: Reached maxSnack while all enqueued snackbars have \\'persist\\' flag. Notistack will dismiss the oldest snackbar anyway to allow other ones in the queue to be presented.',\n};\n\nexport const SNACKBAR_INDENTS = {\n view: { default: 20, dense: 4 },\n snackbar: { default: 6, dense: 2 },\n};\n\nexport const DEFAULTS = {\n maxSnack: 3,\n dense: false,\n hideIconVariant: false,\n variant: 'default' as VariantType,\n autoHideDuration: 5000,\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' } as SnackbarOrigin,\n TransitionComponent: Slide,\n transitionDuration: {\n enter: 225,\n exit: 195,\n },\n};\n\nexport const capitalise = (text: string): string => text.charAt(0).toUpperCase() + text.slice(1);\n\nexport const originKeyExtractor = (anchor: Snack['anchorOrigin']): string => (\n `${capitalise(anchor.vertical)}${capitalise(anchor.horizontal)}`\n);\n\n/**\n * Omit SnackbarContainer class keys that are not needed for SnackbarItem\n */\nexport const omitContainerKeys = (classes: SnackbarProviderProps['classes']): SnackbarItemProps['classes'] => (\n // @ts-ignore\n Object.keys(classes).filter(key => !allClasses.container[key]).reduce((obj, key) => ({ ...obj, [key]: classes[key] }), {})\n);\n\nexport const REASONS: { [key: string]: CloseReason } = {\n TIMEOUT: 'timeout',\n CLICKAWAY: 'clickaway',\n MAXSNACK: 'maxsnack',\n INSTRUCTED: 'instructed',\n};\n\n/** Tranforms classes name */\nexport const transformer = {\n toContainerAnchorOrigin: (origin: string) => `containerAnchorOrigin${origin}` as ContainerClassKey,\n toAnchorOrigin: ({ vertical, horizontal }: SnackbarOrigin) => (\n `anchorOrigin${capitalise(vertical)}${capitalise(horizontal)}` as SnackbarClassKey\n ),\n toVariant: (variant: VariantType) => `variant${capitalise(variant)}` as VariantClassKey,\n};\n\nexport const isDefined = (value: string | null | undefined | number): boolean => (!!value || value === 0);\n\nconst numberOrNull = (numberish?: number | null) => (\n typeof numberish === 'number' || numberish === null\n);\n\n// @ts-ignore\nexport const merge = (options, props, defaults) => (name: keyof Snack): any => {\n if (name === 'autoHideDuration') {\n if (numberOrNull(options.autoHideDuration)) return options.autoHideDuration;\n if (numberOrNull(props.autoHideDuration)) return props.autoHideDuration;\n return DEFAULTS.autoHideDuration;\n }\n\n return options[name] || props[name] || defaults[name];\n};\n\nexport function objectMerge(options = {}, props = {}, defaults = {}) {\n return {\n ...defaults,\n ...props,\n ...options,\n };\n}\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { SnackbarContentProps } from '../index';\n\nconst componentName = 'SnackbarContent';\n\nconst classes = {\n root: `${componentName}-root`,\n};\n\nconst Root = styled('div')(({ theme }) => ({\n [`&.${classes.root}`]: {\n display: 'flex',\n flexWrap: 'wrap',\n flexGrow: 1,\n [theme.breakpoints.up('sm')]: {\n flexGrow: 'initial',\n minWidth: 288,\n },\n },\n}));\n\nconst SnackbarContent = forwardRef(({ className, ...props }, ref) => (\n \n));\n\nexport default SnackbarContent;\n","import { Snack } from '../SnackbarProvider';\n\nconst DIRECTION = {\n right: 'left',\n left: 'right',\n bottom: 'up',\n top: 'down',\n} as const;\nexport type DirectionType = typeof DIRECTION[keyof typeof DIRECTION]\n\nexport const getTransitionDirection = (anchorOrigin: Snack['anchorOrigin']): DirectionType => {\n if (anchorOrigin.horizontal !== 'center') {\n return DIRECTION[anchorOrigin.horizontal];\n }\n return DIRECTION[anchorOrigin.vertical];\n};\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon';\nimport { IconVariant } from '../index';\n\ntype Icon = (props: SvgIconProps) => JSX.Element;\n\nconst CheckIcon: Icon = props => (\n \n \n \n);\n\nconst WarningIcon: Icon = props => (\n \n \n \n);\n\nconst ErrorIcon: Icon = props => (\n \n \n \n);\n\nconst InfoIcon: Icon = props => (\n \n \n \n);\n\nconst iconStyles = {\n fontSize: 20,\n marginInlineEnd: 8,\n};\n\nconst defaultIconVariants: IconVariant = {\n default: undefined,\n success: ,\n warning: ,\n error: ,\n info: ,\n};\n\nexport default defaultIconVariants;\n","/**\n * @link https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/utils/createChainedFunction.js\n */\nexport default function createChainedFunction(funcs, extraArg) {\n return funcs.reduce((acc, func) => {\n if (func == null) return acc;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n // eslint-disable-next-line no-console\n console.error('Invalid Argument Type. must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction(...args) {\n const argums = [...args];\n if (extraArg && argums.indexOf(extraArg) === -1) {\n argums.push(extraArg);\n }\n acc.apply(this, argums);\n func.apply(this, argums);\n };\n }, () => { });\n}\n","/**\n * @link https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/utils/useEventCallback.js\n */\nimport * as React from 'react';\n\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((...args) => (0, ref.current)(...args), []);\n}\n","/**\n * @link https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Snackbar/Snackbar.js\n */\nimport * as React from 'react';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport { REASONS } from '../utils/constants';\nimport useEventCallback from '../utils/useEventCallback';\n\nconst Snackbar = React.forwardRef((props, ref) => {\n const {\n children,\n autoHideDuration,\n ClickAwayListenerProps,\n disableWindowBlurListener = false,\n onClose,\n onMouseEnter,\n onMouseLeave,\n open,\n resumeHideDuration,\n ...other\n } = props;\n\n const timerAutoHide = React.useRef();\n\n const handleClose = useEventCallback((...args) => {\n if (onClose) {\n onClose(...args);\n }\n });\n\n const setAutoHideTimer = useEventCallback((autoHideDurationParam) => {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n handleClose(null, REASONS.TIMEOUT);\n }, autoHideDurationParam);\n });\n\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n /**\n * Pause the timer when the user is interacting with the Snackbar\n * or when the user hide the window.\n */\n const handlePause = () => {\n clearTimeout(timerAutoHide.current);\n };\n\n /**\n * Restart the timer when the user is no longer interacting with the Snackbar\n * or when the window is shown back.\n */\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n\n const handleMouseEnter = (event) => {\n if (onMouseEnter) {\n onMouseEnter(event);\n }\n handlePause();\n };\n\n const handleMouseLeave = (event) => {\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n handleResume();\n };\n\n const handleClickAway = (event) => {\n if (onClose) {\n onClose(event, REASONS.CLICKAWAY);\n }\n };\n\n React.useEffect(() => {\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n\n return () => {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]);\n\n return (\n \n
\n {children}\n
\n
\n );\n});\n\nexport default Snackbar;\n","import React, { useState, useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport { emphasize, styled } from '@mui/material/styles';\nimport Collapse from '@mui/material/Collapse';\nimport type { SnackbarClassKey } from '@mui/material';\nimport SnackbarContent from '../SnackbarContent';\nimport { getTransitionDirection } from './SnackbarItem.util';\nimport { REASONS, objectMerge, DEFAULTS, transformer } from '../utils/constants';\nimport { SharedProps, RequiredBy, TransitionHandlerProps, SnackbarProviderProps as ProviderProps, ClassNameMap } from '../index';\nimport defaultIconVariants from '../utils/defaultIconVariants';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport { Snack } from '../SnackbarProvider';\nimport Snackbar from './Snackbar';\n\nconst componentName = 'SnackbarItem';\n\nconst classes = {\n contentRoot: `${componentName}-contentRoot`,\n lessPadding: `${componentName}-lessPadding`,\n variantSuccess: `${componentName}-variantSuccess`,\n variantError: `${componentName}-variantError`,\n variantInfo: `${componentName}-variantInfo`,\n variantWarning: `${componentName}-variantWarning`,\n message: `${componentName}-message`,\n action: `${componentName}-action`,\n wrappedRoot: `${componentName}-wrappedRoot`,\n};\n\nconst StyledSnackbar = styled(Snackbar)(({ theme }) => {\n const mode = theme.palette.mode || theme.palette.type;\n const backgroundColor = emphasize(theme.palette.background.default, mode === 'light' ? 0.8 : 0.98);\n\n return {\n [`&.${classes.wrappedRoot}`]: {\n position: 'relative',\n transform: 'translateX(0)',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n [`.${classes.contentRoot}`]: {\n ...theme.typography.body2,\n backgroundColor,\n color: theme.palette.getContrastText(backgroundColor),\n alignItems: 'center',\n padding: '6px 16px',\n borderRadius: '4px',\n boxShadow: '0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)',\n },\n [`.${classes.lessPadding}`]: {\n paddingLeft: 8 * 2.5,\n },\n [`.${classes.variantSuccess}`]: {\n backgroundColor: '#43a047', // green\n color: '#fff',\n },\n [`.${classes.variantError}`]: {\n backgroundColor: '#d32f2f', // dark red\n color: '#fff',\n },\n [`.${classes.variantInfo}`]: {\n backgroundColor: '#2196f3', // nice blue\n color: '#fff',\n },\n [`.${classes.variantWarning}`]: {\n backgroundColor: '#ff9800', // amber\n color: '#fff',\n },\n [`.${classes.message}`]: {\n display: 'flex',\n alignItems: 'center',\n padding: '8px 0',\n },\n [`.${classes.action}`]: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8,\n },\n };\n});\n\ntype RemovedProps =\n | 'variant' // the one received from Provider is processed and passed to snack prop\n | 'anchorOrigin' // same as above\n | 'autoHideDuration' // same as above\n | 'preventDuplicate' // the one recevied from enqueueSnackbar is processed in provider, therefore shouldn't be passed to SnackbarItem */\n\nexport interface SnackbarItemProps extends RequiredBy, 'onEntered' | 'onExited' | 'onClose'> {\n snack: Snack;\n dense: ProviderProps['dense'];\n iconVariant: ProviderProps['iconVariant'];\n hideIconVariant: ProviderProps['hideIconVariant'];\n classes: Partial>;\n}\n\nconst SnackbarItem: React.FC = ({ classes: propClasses, ...props }) => {\n const timeout = useRef>();\n const [collapsed, setCollapsed] = useState(true);\n\n useEffect(() => (): void => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n }, []);\n\n const handleClose = createChainedFunction([props.snack.onClose, props.onClose], props.snack.key);\n\n const handleEntered: TransitionHandlerProps['onEntered'] = () => {\n if (props.snack.requestClose) {\n handleClose(null, REASONS.INSTRCUTED);\n }\n };\n\n const handleExitedScreen = (): void => {\n timeout.current = setTimeout(() => {\n setCollapsed(!collapsed);\n }, 125);\n };\n\n const {\n style,\n dense,\n ariaAttributes: otherAriaAttributes,\n className: otherClassName,\n hideIconVariant,\n iconVariant,\n snack,\n action: otherAction,\n content: otherContent,\n TransitionComponent: otherTranComponent,\n TransitionProps: otherTranProps,\n transitionDuration: otherTranDuration,\n onEnter: ignoredOnEnter,\n onEntered: ignoredOnEntered,\n onEntering: ignoredOnEntering,\n onExit: ignoredOnExit,\n onExited: ignoredOnExited,\n onExiting: ignoredOnExiting,\n ...other\n } = props;\n\n const {\n persist,\n key,\n open,\n entered,\n requestClose,\n className: singleClassName,\n variant,\n content: singleContent,\n action: singleAction,\n ariaAttributes: singleAriaAttributes,\n anchorOrigin,\n message: snackMessage,\n TransitionComponent: singleTranComponent,\n TransitionProps: singleTranProps,\n transitionDuration: singleTranDuration,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n ...singleSnackProps\n } = snack;\n\n const icon = {\n ...defaultIconVariants,\n ...iconVariant,\n }[variant];\n\n const ariaAttributes = {\n 'aria-describedby': 'notistack-snackbar',\n ...objectMerge(singleAriaAttributes, otherAriaAttributes),\n };\n\n const TransitionComponent = singleTranComponent || otherTranComponent || DEFAULTS.TransitionComponent;\n const transitionDuration = objectMerge(singleTranDuration, otherTranDuration, DEFAULTS.transitionDuration);\n const transitionProps = {\n direction: getTransitionDirection(anchorOrigin),\n ...objectMerge(singleTranProps, otherTranProps),\n };\n\n let action = singleAction || otherAction;\n if (typeof action === 'function') {\n action = action(key);\n }\n\n let content = singleContent || otherContent;\n if (typeof content === 'function') {\n content = content(key, snack.message);\n }\n\n // eslint-disable-next-line operator-linebreak\n const callbacks: { [key in keyof TransitionHandlerProps]?: any } =\n ['onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'].reduce((acc, cbName) => ({\n ...acc,\n [cbName]: createChainedFunction([\n props.snack[cbName as keyof Snack],\n props[cbName as keyof SnackbarItemProps],\n ], props.snack.key),\n }), {});\n\n return (\n \n \n \n {/* @ts-ignore */}\n {content || (\n \n
\n {!hideIconVariant ? icon : null}\n {snackMessage}\n
\n {action && (\n
{action}
\n )}\n \n )}\n \n \n \n );\n};\n\nexport default SnackbarItem;\n","import React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { SNACKBAR_INDENTS } from './utils/constants';\nimport { SnackbarProviderProps } from '.';\n\nconst collapse = {\n // Material-UI 4.12.x and above uses MuiCollapse-root; earlier versions use\n // Mui-Collapse-container. https://github.com/mui-org/material-ui/pull/24084\n container: '& > .MuiCollapse-container, & > .MuiCollapse-root',\n wrapper: '& > .MuiCollapse-container > .MuiCollapse-wrapper, & > .MuiCollapse-root > .MuiCollapse-wrapper',\n};\n\nconst xsWidthMargin = 16;\n\nconst componentName = 'SnackbarContainer';\n\nconst classes = {\n root: `${componentName}-root`,\n rootDense: `${componentName}-rootDense`,\n top: `${componentName}-top`,\n bottom: `${componentName}-bottom`,\n left: `${componentName}-left`,\n right: `${componentName}-right`,\n center: `${componentName}-center`,\n};\n\nconst Root = styled('div')(({ theme }) => ({\n [`&.${classes.root}`]: {\n boxSizing: 'border-box',\n display: 'flex',\n maxHeight: '100%',\n position: 'fixed',\n zIndex: theme.zIndex.snackbar,\n height: 'auto',\n width: 'auto',\n transition: 'top 300ms ease 0ms, right 300ms ease 0ms, bottom 300ms ease 0ms, left 300ms ease 0ms, margin 300ms ease 0ms, max-width 300ms ease 0ms',\n // container itself is invisible and should not block clicks, clicks should be passed to its children\n pointerEvents: 'none',\n [collapse.container]: {\n pointerEvents: 'all',\n },\n [collapse.wrapper]: {\n padding: `${SNACKBAR_INDENTS.snackbar.default}px 0px`,\n transition: 'padding 300ms ease 0ms',\n },\n maxWidth: `calc(100% - ${SNACKBAR_INDENTS.view.default * 2}px)`,\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n maxWidth: `calc(100% - ${xsWidthMargin * 2}px)`,\n },\n },\n [`&.${classes.rootDense}`]: {\n [collapse.wrapper]: {\n padding: `${SNACKBAR_INDENTS.snackbar.dense}px 0px`,\n },\n },\n [`&.${classes.top}`]: {\n top: SNACKBAR_INDENTS.view.default - SNACKBAR_INDENTS.snackbar.default,\n flexDirection: 'column',\n },\n [`&.${classes.bottom}`]: {\n bottom: SNACKBAR_INDENTS.view.default - SNACKBAR_INDENTS.snackbar.default,\n flexDirection: 'column-reverse',\n },\n [`&.${classes.left}`]: {\n left: SNACKBAR_INDENTS.view.default,\n [theme.breakpoints.up('sm')]: {\n alignItems: 'flex-start',\n },\n [theme.breakpoints.down('sm')]: {\n left: `${xsWidthMargin}px`,\n },\n },\n [`&.${classes.right}`]: {\n right: SNACKBAR_INDENTS.view.default,\n [theme.breakpoints.up('sm')]: {\n alignItems: 'flex-end',\n },\n [theme.breakpoints.down('sm')]: {\n right: `${xsWidthMargin}px`,\n },\n },\n [`&.${classes.center}`]: {\n left: '50%',\n transform: 'translateX(-50%)',\n [theme.breakpoints.up('sm')]: {\n alignItems: 'center',\n },\n },\n}));\n\ninterface SnackbarContainerProps {\n children: JSX.Element | JSX.Element[];\n className?: string;\n dense: SnackbarProviderProps['dense'];\n anchorOrigin: NonNullable;\n}\n\nconst SnackbarContainer: React.FC = (props) => {\n const { className, anchorOrigin, dense, ...other } = props;\n\n const combinedClassname = clsx(\n classes[anchorOrigin.vertical],\n classes[anchorOrigin.horizontal],\n { [classes.rootDense]: dense },\n classes.root, // root should come after others to override maxWidth\n className,\n );\n\n return (\n \n );\n};\n\nexport default React.memo(SnackbarContainer);\n","import React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport clsx from 'clsx';\nimport SnackbarContext from './SnackbarContext';\nimport { MESSAGES, REASONS, originKeyExtractor, omitContainerKeys, DEFAULTS, merge, transformer, isDefined } from './utils/constants';\nimport SnackbarItem from './SnackbarItem';\nimport SnackbarContainer from './SnackbarContainer';\nimport warning from './utils/warning';\nimport { SnackbarProviderProps, SnackbarKey, SnackbarMessage, OptionsObject, RequiredBy, ProviderContext, TransitionHandlerProps } from '.';\nimport createChainedFunction from './utils/createChainedFunction';\n\ntype Reducer = (state: State) => State;\ntype SnacksByPosition = { [key: string]: Snack[] };\n\nexport interface Snack extends RequiredBy {\n message: SnackbarMessage;\n open: boolean;\n entered: boolean;\n requestClose: boolean;\n}\n\ninterface State {\n snacks: Snack[];\n queue: Snack[];\n contextValue: ProviderContext;\n}\n\nclass SnackbarProvider extends Component {\n constructor(props: SnackbarProviderProps) {\n super(props);\n this.state = {\n snacks: [],\n queue: [], // eslint-disable-line react/no-unused-state\n contextValue: {\n enqueueSnackbar: this.enqueueSnackbar.bind(this),\n closeSnackbar: this.closeSnackbar.bind(this),\n },\n };\n }\n\n get maxSnack(): number {\n return this.props.maxSnack || DEFAULTS.maxSnack;\n }\n\n /**\n * Adds a new snackbar to the queue to be presented.\n * Returns generated or user defined key referencing the new snackbar or null\n */\n enqueueSnackbar = (message: SnackbarMessage, opts: OptionsObject = {}): SnackbarKey => {\n const {\n key,\n preventDuplicate,\n ...options\n } = opts;\n\n const hasSpecifiedKey = isDefined(key);\n const id = hasSpecifiedKey ? (key as SnackbarKey) : new Date().getTime() + Math.random();\n\n const merger = merge(options, this.props, DEFAULTS);\n const snack: Snack = {\n key: id,\n ...options,\n message,\n open: true,\n entered: false,\n requestClose: false,\n variant: merger('variant'),\n anchorOrigin: merger('anchorOrigin'),\n autoHideDuration: merger('autoHideDuration'),\n };\n\n if (options.persist) {\n snack.autoHideDuration = undefined;\n }\n\n this.setState((state) => {\n if ((preventDuplicate === undefined && this.props.preventDuplicate) || preventDuplicate) {\n const compareFunction = (item: Snack): boolean => (\n hasSpecifiedKey ? item.key === key : item.message === message\n );\n\n const inQueue = state.queue.findIndex(compareFunction) > -1;\n const inView = state.snacks.findIndex(compareFunction) > -1;\n if (inQueue || inView) {\n return state;\n }\n }\n\n return this.handleDisplaySnack({\n ...state,\n queue: [...state.queue, snack],\n });\n });\n\n return id;\n };\n\n /**\n * Reducer: Display snack if there's space for it. Otherwise, immediately\n * begin dismissing the oldest message to start showing the new one.\n */\n handleDisplaySnack: Reducer = (state) => {\n const { snacks } = state;\n if (snacks.length >= this.maxSnack) {\n return this.handleDismissOldest(state);\n }\n return this.processQueue(state);\n };\n\n /**\n * Reducer: Display items (notifications) in the queue if there's space for them.\n */\n processQueue: Reducer = (state) => {\n const { queue, snacks } = state;\n if (queue.length > 0) {\n return {\n ...state,\n snacks: [...snacks, queue[0]],\n queue: queue.slice(1, queue.length),\n };\n }\n return state;\n };\n\n /**\n * Reducer: Hide oldest snackbar on the screen because there exists a new one which we have to display.\n * (ignoring the one with 'persist' flag. i.e. explicitly told by user not to get dismissed).\n *\n * Note 1: If there is already a message leaving the screen, no new messages are dismissed.\n * Note 2: If the oldest message has not yet entered the screen, only a request to close the\n * snackbar is made. Once it entered the screen, it will be immediately dismissed.\n */\n handleDismissOldest: Reducer = (state) => {\n if (state.snacks.some(item => !item.open || item.requestClose)) {\n return state;\n }\n\n let popped = false;\n let ignore = false;\n\n const persistentCount = state.snacks.reduce((acc, current) => (\n acc + (current.open && current.persist ? 1 : 0)\n ), 0);\n\n if (persistentCount === this.maxSnack) {\n warning(MESSAGES.NO_PERSIST_ALL);\n ignore = true;\n }\n\n const snacks = state.snacks.map((item) => {\n if (!popped && (!item.persist || ignore)) {\n popped = true;\n\n if (!item.entered) {\n return {\n ...item,\n requestClose: true,\n };\n }\n\n if (item.onClose) item.onClose(null, REASONS.MAXSNACK, item.key);\n if (this.props.onClose) this.props.onClose(null, REASONS.MAXSNACK, item.key);\n\n return {\n ...item,\n open: false,\n };\n }\n\n return { ...item };\n });\n\n return { ...state, snacks };\n };\n\n /**\n * Set the entered state of the snackbar with the given key.\n */\n handleEnteredSnack: TransitionHandlerProps['onEntered'] = (node, isAppearing, key) => {\n if (!isDefined(key)) {\n throw new Error('handleEnteredSnack Cannot be called with undefined key');\n }\n\n this.setState(({ snacks }) => ({\n snacks: snacks.map(item => (\n item.key === key ? { ...item, entered: true } : { ...item }\n )),\n }));\n }\n\n /**\n * Hide a snackbar after its timeout.\n */\n handleCloseSnack: TransitionHandlerProps['onClose'] = (event, reason, key) => {\n // should not use createChainedFunction for onClose.\n // because this.closeSnackbar called this function\n if (this.props.onClose) {\n this.props.onClose(event, reason, key);\n }\n\n if (reason === REASONS.CLICKAWAY) return;\n const shouldCloseAll = key === undefined;\n\n this.setState(({ snacks, queue }) => ({\n snacks: snacks.map((item) => {\n if (!shouldCloseAll && item.key !== key) {\n return { ...item };\n }\n\n return item.entered\n ? { ...item, open: false }\n : { ...item, requestClose: true };\n }),\n queue: queue.filter(item => item.key !== key), // eslint-disable-line react/no-unused-state\n }));\n };\n\n /**\n * Close snackbar with the given key\n */\n closeSnackbar: ProviderContext['closeSnackbar'] = (key) => {\n // call individual snackbar onClose callback passed through options parameter\n const toBeClosed = this.state.snacks.find(item => item.key === key);\n if (isDefined(key) && toBeClosed && toBeClosed.onClose) {\n toBeClosed.onClose(null, REASONS.INSTRUCTED, key);\n }\n\n this.handleCloseSnack(null, REASONS.INSTRUCTED, key);\n }\n\n /**\n * When we set open attribute of a snackbar to false (i.e. after we hide a snackbar),\n * it leaves the screen and immediately after leaving animation is done, this method\n * gets called. We remove the hidden snackbar from state and then display notifications\n * waiting in the queue (if any). If after this process the queue is not empty, the\n * oldest message is dismissed.\n */\n // @ts-ignore\n handleExitedSnack: TransitionHandlerProps['onExited'] = (event, key1, key2) => {\n const key = key1 || key2;\n if (!isDefined(key)) {\n throw new Error('handleExitedSnack Cannot be called with undefined key');\n }\n\n this.setState((state) => {\n const newState = this.processQueue({\n ...state,\n snacks: state.snacks.filter(item => item.key !== key),\n });\n\n if (newState.queue.length === 0) {\n return newState;\n }\n\n return this.handleDismissOldest(newState);\n });\n };\n\n render(): JSX.Element {\n const { contextValue } = this.state;\n const {\n maxSnack: dontspread1,\n preventDuplicate: dontspread2,\n variant: dontspread3,\n anchorOrigin: dontspread4,\n iconVariant,\n dense = DEFAULTS.dense,\n hideIconVariant = DEFAULTS.hideIconVariant,\n domRoot,\n children,\n classes = {},\n ...props\n } = this.props;\n\n const categ = this.state.snacks.reduce((acc, current) => {\n const category = originKeyExtractor(current.anchorOrigin);\n const existingOfCategory = acc[category] || [];\n return {\n ...acc,\n [category]: [...existingOfCategory, current],\n };\n }, {});\n\n const snackbars = Object.keys(categ).map((origin) => {\n const snacks = categ[origin];\n return (\n \n {snacks.map(snack => (\n \n ))}\n \n );\n });\n\n return (\n \n {children}\n {domRoot ? createPortal(snackbars, domRoot) : snackbars}\n \n );\n }\n}\n\nexport default SnackbarProvider;\n","import { useContext } from 'react';\nimport SnackbarContext from './SnackbarContext';\nimport { ProviderContext } from '.';\n\nexport default (): ProviderContext => useContext(SnackbarContext);\n","// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { GlobalStyles } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function StyledNotistack() {\r\n const theme = useTheme();\r\n\r\n const isLight = theme.palette.mode === 'light';\r\n\r\n const inputGlobalStyles = (\r\n \r\n );\r\n\r\n return inputGlobalStyles;\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { useRef } from 'react';\r\nimport { SnackbarProvider as NotistackProvider } from 'notistack';\r\n// @mui\r\nimport { alpha } from '@mui/material/styles';\r\nimport { Box, Collapse, IconButton } from '@mui/material';\r\n//\r\nimport { useSettingsContext } from '../settings';\r\nimport Iconify from '../iconify';\r\n//\r\nimport StyledNotistack from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nSnackbarProvider.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default function SnackbarProvider({ children }) {\r\n const { themeDirection } = useSettingsContext();\r\n\r\n const isRTL = themeDirection === 'rtl';\r\n\r\n const notistackRef = useRef(null);\r\n\r\n const onClose = (key) => () => {\r\n notistackRef.current.closeSnackbar(key);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n\r\n ,\r\n success: ,\r\n warning: ,\r\n error: ,\r\n }}\r\n // With close as default\r\n action={(key) => (\r\n \r\n \r\n \r\n )}\r\n >\r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nSnackbarIcon.propTypes = {\r\n icon: PropTypes.string,\r\n color: PropTypes.oneOf(['primary', 'secondary', 'info', 'success', 'warning', 'error']),\r\n};\r\n\r\nfunction SnackbarIcon({ icon, color }) {\r\n return (\r\n alpha(theme.palette[color].main, 0.16),\r\n }}\r\n >\r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { forwardRef } from 'react';\r\n// @mui\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst SvgColor = forwardRef(({ src, sx, ...other }, ref) => (\r\n \r\n));\r\n\r\nSvgColor.propTypes = {\r\n src: PropTypes.string,\r\n sx: PropTypes.object,\r\n};\r\n\r\nexport default SvgColor;\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { alpha } from '@mui/material/styles';\r\nimport { Box, Paper, Typography } from '@mui/material';\r\n// utils\r\nimport { fData } from '../../../utils/formatNumber';\r\n//\r\nimport { fileData } from '../../file-thumbnail';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nRejectionFiles.propTypes = {\r\n fileRejections: PropTypes.array,\r\n};\r\n\r\nexport default function RejectionFiles({ fileRejections }) {\r\n if (!fileRejections.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n alpha(theme.palette.error.main, 0.08),\r\n borderColor: (theme) => alpha(theme.palette.error.main, 0.24),\r\n }}\r\n >\r\n {fileRejections.map(({ file, errors }) => {\r\n const { path, size } = fileData(file);\r\n\r\n return (\r\n \r\n \r\n {path} - {size ? fData(size) : ''}\r\n \r\n\r\n {errors.map((error) => (\r\n \r\n - {error.message}\r\n \r\n ))}\r\n \r\n );\r\n })}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n//\r\nimport Image from '../../image';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nAvatarPreview.propTypes = {\r\n file: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n};\r\n\r\nexport default function AvatarPreview({ file }) {\r\n if (!file) {\r\n return null;\r\n }\r\n\r\n const imgUrl = typeof file === 'string' ? file : file.preview;\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { m, AnimatePresence } from 'framer-motion';\r\n// @mui\r\nimport { alpha } from '@mui/material/styles';\r\nimport { IconButton, Stack, Typography } from '@mui/material';\r\n// utils\r\nimport { fData } from '../../../utils/formatNumber';\r\n//\r\nimport Iconify from '../../iconify';\r\nimport { varFade } from '../../animate';\r\nimport FileThumbnail, { fileData } from '../../file-thumbnail';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMultiFilePreview.propTypes = {\r\n sx: PropTypes.object,\r\n files: PropTypes.array,\r\n onRemove: PropTypes.func,\r\n thumbnail: PropTypes.bool,\r\n};\r\n\r\nexport default function MultiFilePreview({ thumbnail, files, onRemove, sx }) {\r\n if (!files?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {files.map((file) => {\r\n const { key, name = '', size = 0 } = fileData(file);\r\n\r\n const isNotFormatFile = typeof file === 'string';\r\n\r\n if (thumbnail) {\r\n return (\r\n `solid 1px ${theme.palette.divider}`,\r\n ...sx,\r\n }}\r\n >\r\n \r\n\r\n {onRemove && (\r\n onRemove(file)}\r\n sx={{\r\n top: 4,\r\n right: 4,\r\n p: '1px',\r\n position: 'absolute',\r\n color: (theme) => alpha(theme.palette.common.white, 0.72),\r\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.48),\r\n '&:hover': {\r\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.72),\r\n },\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n return (\r\n `solid 1px ${theme.palette.divider}`,\r\n ...sx,\r\n }}\r\n >\r\n \r\n\r\n \r\n \r\n {isNotFormatFile ? file : name}\r\n \r\n\r\n \r\n {isNotFormatFile ? '' : fData(size)}\r\n \r\n \r\n\r\n {onRemove && (\r\n onRemove(file)}>\r\n \r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n//\r\nimport Image from '../../image';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nSingleFilePreview.propTypes = {\r\n file: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n};\r\n\r\nexport default function SingleFilePreview({ file }) {\r\n if (!file) {\r\n return null;\r\n }\r\n\r\n const imgUrl = typeof file === 'string' ? file : file.preview;\r\n\r\n return (\r\n \r\n );\r\n}\r\n","export const COMMON_MIME_TYPES = new Map([\n // https://github.com/guzzle/psr7/blob/2d9260799e713f1c475d3c5fdc3d6561ff7441b2/src/MimeType.php\n ['1km', 'application/vnd.1000minds.decision-model+xml'],\n ['3dml', 'text/vnd.in3d.3dml'],\n ['3ds', 'image/x-3ds'],\n ['3g2', 'video/3gpp2'],\n ['3gp', 'video/3gp'],\n ['3gpp', 'video/3gpp'],\n ['3mf', 'model/3mf'],\n ['7z', 'application/x-7z-compressed'],\n ['7zip', 'application/x-7z-compressed'],\n ['123', 'application/vnd.lotus-1-2-3'],\n ['aab', 'application/x-authorware-bin'],\n ['aac', 'audio/x-acc'],\n ['aam', 'application/x-authorware-map'],\n ['aas', 'application/x-authorware-seg'],\n ['abw', 'application/x-abiword'],\n ['ac', 'application/vnd.nokia.n-gage.ac+xml'],\n ['ac3', 'audio/ac3'],\n ['acc', 'application/vnd.americandynamics.acc'],\n ['ace', 'application/x-ace-compressed'],\n ['acu', 'application/vnd.acucobol'],\n ['acutc', 'application/vnd.acucorp'],\n ['adp', 'audio/adpcm'],\n ['aep', 'application/vnd.audiograph'],\n ['afm', 'application/x-font-type1'],\n ['afp', 'application/vnd.ibm.modcap'],\n ['ahead', 'application/vnd.ahead.space'],\n ['ai', 'application/pdf'],\n ['aif', 'audio/x-aiff'],\n ['aifc', 'audio/x-aiff'],\n ['aiff', 'audio/x-aiff'],\n ['air', 'application/vnd.adobe.air-application-installer-package+zip'],\n ['ait', 'application/vnd.dvb.ait'],\n ['ami', 'application/vnd.amiga.ami'],\n ['amr', 'audio/amr'],\n ['apk', 'application/vnd.android.package-archive'],\n ['apng', 'image/apng'],\n ['appcache', 'text/cache-manifest'],\n ['application', 'application/x-ms-application'],\n ['apr', 'application/vnd.lotus-approach'],\n ['arc', 'application/x-freearc'],\n ['arj', 'application/x-arj'],\n ['asc', 'application/pgp-signature'],\n ['asf', 'video/x-ms-asf'],\n ['asm', 'text/x-asm'],\n ['aso', 'application/vnd.accpac.simply.aso'],\n ['asx', 'video/x-ms-asf'],\n ['atc', 'application/vnd.acucorp'],\n ['atom', 'application/atom+xml'],\n ['atomcat', 'application/atomcat+xml'],\n ['atomdeleted', 'application/atomdeleted+xml'],\n ['atomsvc', 'application/atomsvc+xml'],\n ['atx', 'application/vnd.antix.game-component'],\n ['au', 'audio/x-au'],\n ['avi', 'video/x-msvideo'],\n ['avif', 'image/avif'],\n ['aw', 'application/applixware'],\n ['azf', 'application/vnd.airzip.filesecure.azf'],\n ['azs', 'application/vnd.airzip.filesecure.azs'],\n ['azv', 'image/vnd.airzip.accelerator.azv'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['b16', 'image/vnd.pco.b16'],\n ['bat', 'application/x-msdownload'],\n ['bcpio', 'application/x-bcpio'],\n ['bdf', 'application/x-font-bdf'],\n ['bdm', 'application/vnd.syncml.dm+wbxml'],\n ['bdoc', 'application/x-bdoc'],\n ['bed', 'application/vnd.realvnc.bed'],\n ['bh2', 'application/vnd.fujitsu.oasysprs'],\n ['bin', 'application/octet-stream'],\n ['blb', 'application/x-blorb'],\n ['blorb', 'application/x-blorb'],\n ['bmi', 'application/vnd.bmi'],\n ['bmml', 'application/vnd.balsamiq.bmml+xml'],\n ['bmp', 'image/bmp'],\n ['book', 'application/vnd.framemaker'],\n ['box', 'application/vnd.previewsystems.box'],\n ['boz', 'application/x-bzip2'],\n ['bpk', 'application/octet-stream'],\n ['bpmn', 'application/octet-stream'],\n ['bsp', 'model/vnd.valve.source.compiled-map'],\n ['btif', 'image/prs.btif'],\n ['buffer', 'application/octet-stream'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['c', 'text/x-c'],\n ['c4d', 'application/vnd.clonk.c4group'],\n ['c4f', 'application/vnd.clonk.c4group'],\n ['c4g', 'application/vnd.clonk.c4group'],\n ['c4p', 'application/vnd.clonk.c4group'],\n ['c4u', 'application/vnd.clonk.c4group'],\n ['c11amc', 'application/vnd.cluetrust.cartomobile-config'],\n ['c11amz', 'application/vnd.cluetrust.cartomobile-config-pkg'],\n ['cab', 'application/vnd.ms-cab-compressed'],\n ['caf', 'audio/x-caf'],\n ['cap', 'application/vnd.tcpdump.pcap'],\n ['car', 'application/vnd.curl.car'],\n ['cat', 'application/vnd.ms-pki.seccat'],\n ['cb7', 'application/x-cbr'],\n ['cba', 'application/x-cbr'],\n ['cbr', 'application/x-cbr'],\n ['cbt', 'application/x-cbr'],\n ['cbz', 'application/x-cbr'],\n ['cc', 'text/x-c'],\n ['cco', 'application/x-cocoa'],\n ['cct', 'application/x-director'],\n ['ccxml', 'application/ccxml+xml'],\n ['cdbcmsg', 'application/vnd.contact.cmsg'],\n ['cda', 'application/x-cdf'],\n ['cdf', 'application/x-netcdf'],\n ['cdfx', 'application/cdfx+xml'],\n ['cdkey', 'application/vnd.mediastation.cdkey'],\n ['cdmia', 'application/cdmi-capability'],\n ['cdmic', 'application/cdmi-container'],\n ['cdmid', 'application/cdmi-domain'],\n ['cdmio', 'application/cdmi-object'],\n ['cdmiq', 'application/cdmi-queue'],\n ['cdr', 'application/cdr'],\n ['cdx', 'chemical/x-cdx'],\n ['cdxml', 'application/vnd.chemdraw+xml'],\n ['cdy', 'application/vnd.cinderella'],\n ['cer', 'application/pkix-cert'],\n ['cfs', 'application/x-cfs-compressed'],\n ['cgm', 'image/cgm'],\n ['chat', 'application/x-chat'],\n ['chm', 'application/vnd.ms-htmlhelp'],\n ['chrt', 'application/vnd.kde.kchart'],\n ['cif', 'chemical/x-cif'],\n ['cii', 'application/vnd.anser-web-certificate-issue-initiation'],\n ['cil', 'application/vnd.ms-artgalry'],\n ['cjs', 'application/node'],\n ['cla', 'application/vnd.claymore'],\n ['class', 'application/octet-stream'],\n ['clkk', 'application/vnd.crick.clicker.keyboard'],\n ['clkp', 'application/vnd.crick.clicker.palette'],\n ['clkt', 'application/vnd.crick.clicker.template'],\n ['clkw', 'application/vnd.crick.clicker.wordbank'],\n ['clkx', 'application/vnd.crick.clicker'],\n ['clp', 'application/x-msclip'],\n ['cmc', 'application/vnd.cosmocaller'],\n ['cmdf', 'chemical/x-cmdf'],\n ['cml', 'chemical/x-cml'],\n ['cmp', 'application/vnd.yellowriver-custom-menu'],\n ['cmx', 'image/x-cmx'],\n ['cod', 'application/vnd.rim.cod'],\n ['coffee', 'text/coffeescript'],\n ['com', 'application/x-msdownload'],\n ['conf', 'text/plain'],\n ['cpio', 'application/x-cpio'],\n ['cpp', 'text/x-c'],\n ['cpt', 'application/mac-compactpro'],\n ['crd', 'application/x-mscardfile'],\n ['crl', 'application/pkix-crl'],\n ['crt', 'application/x-x509-ca-cert'],\n ['crx', 'application/x-chrome-extension'],\n ['cryptonote', 'application/vnd.rig.cryptonote'],\n ['csh', 'application/x-csh'],\n ['csl', 'application/vnd.citationstyles.style+xml'],\n ['csml', 'chemical/x-csml'],\n ['csp', 'application/vnd.commonspace'],\n ['csr', 'application/octet-stream'],\n ['css', 'text/css'],\n ['cst', 'application/x-director'],\n ['csv', 'text/csv'],\n ['cu', 'application/cu-seeme'],\n ['curl', 'text/vnd.curl'],\n ['cww', 'application/prs.cww'],\n ['cxt', 'application/x-director'],\n ['cxx', 'text/x-c'],\n ['dae', 'model/vnd.collada+xml'],\n ['daf', 'application/vnd.mobius.daf'],\n ['dart', 'application/vnd.dart'],\n ['dataless', 'application/vnd.fdsn.seed'],\n ['davmount', 'application/davmount+xml'],\n ['dbf', 'application/vnd.dbf'],\n ['dbk', 'application/docbook+xml'],\n ['dcr', 'application/x-director'],\n ['dcurl', 'text/vnd.curl.dcurl'],\n ['dd2', 'application/vnd.oma.dd2+xml'],\n ['ddd', 'application/vnd.fujixerox.ddd'],\n ['ddf', 'application/vnd.syncml.dmddf+xml'],\n ['dds', 'image/vnd.ms-dds'],\n ['deb', 'application/x-debian-package'],\n ['def', 'text/plain'],\n ['deploy', 'application/octet-stream'],\n ['der', 'application/x-x509-ca-cert'],\n ['dfac', 'application/vnd.dreamfactory'],\n ['dgc', 'application/x-dgc-compressed'],\n ['dic', 'text/x-c'],\n ['dir', 'application/x-director'],\n ['dis', 'application/vnd.mobius.dis'],\n ['disposition-notification', 'message/disposition-notification'],\n ['dist', 'application/octet-stream'],\n ['distz', 'application/octet-stream'],\n ['djv', 'image/vnd.djvu'],\n ['djvu', 'image/vnd.djvu'],\n ['dll', 'application/octet-stream'],\n ['dmg', 'application/x-apple-diskimage'],\n ['dmn', 'application/octet-stream'],\n ['dmp', 'application/vnd.tcpdump.pcap'],\n ['dms', 'application/octet-stream'],\n ['dna', 'application/vnd.dna'],\n ['doc', 'application/msword'],\n ['docm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['dot', 'application/msword'],\n ['dotm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'],\n ['dp', 'application/vnd.osgi.dp'],\n ['dpg', 'application/vnd.dpgraph'],\n ['dra', 'audio/vnd.dra'],\n ['drle', 'image/dicom-rle'],\n ['dsc', 'text/prs.lines.tag'],\n ['dssc', 'application/dssc+der'],\n ['dtb', 'application/x-dtbook+xml'],\n ['dtd', 'application/xml-dtd'],\n ['dts', 'audio/vnd.dts'],\n ['dtshd', 'audio/vnd.dts.hd'],\n ['dump', 'application/octet-stream'],\n ['dvb', 'video/vnd.dvb.file'],\n ['dvi', 'application/x-dvi'],\n ['dwd', 'application/atsc-dwd+xml'],\n ['dwf', 'model/vnd.dwf'],\n ['dwg', 'image/vnd.dwg'],\n ['dxf', 'image/vnd.dxf'],\n ['dxp', 'application/vnd.spotfire.dxp'],\n ['dxr', 'application/x-director'],\n ['ear', 'application/java-archive'],\n ['ecelp4800', 'audio/vnd.nuera.ecelp4800'],\n ['ecelp7470', 'audio/vnd.nuera.ecelp7470'],\n ['ecelp9600', 'audio/vnd.nuera.ecelp9600'],\n ['ecma', 'application/ecmascript'],\n ['edm', 'application/vnd.novadigm.edm'],\n ['edx', 'application/vnd.novadigm.edx'],\n ['efif', 'application/vnd.picsel'],\n ['ei6', 'application/vnd.pg.osasli'],\n ['elc', 'application/octet-stream'],\n ['emf', 'image/emf'],\n ['eml', 'message/rfc822'],\n ['emma', 'application/emma+xml'],\n ['emotionml', 'application/emotionml+xml'],\n ['emz', 'application/x-msmetafile'],\n ['eol', 'audio/vnd.digital-winds'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['eps', 'application/postscript'],\n ['epub', 'application/epub+zip'],\n ['es', 'application/ecmascript'],\n ['es3', 'application/vnd.eszigno3+xml'],\n ['esa', 'application/vnd.osgi.subsystem'],\n ['esf', 'application/vnd.epson.esf'],\n ['et3', 'application/vnd.eszigno3+xml'],\n ['etx', 'text/x-setext'],\n ['eva', 'application/x-eva'],\n ['evy', 'application/x-envoy'],\n ['exe', 'application/octet-stream'],\n ['exi', 'application/exi'],\n ['exp', 'application/express'],\n ['exr', 'image/aces'],\n ['ext', 'application/vnd.novadigm.ext'],\n ['ez', 'application/andrew-inset'],\n ['ez2', 'application/vnd.ezpix-album'],\n ['ez3', 'application/vnd.ezpix-package'],\n ['f', 'text/x-fortran'],\n ['f4v', 'video/mp4'],\n ['f77', 'text/x-fortran'],\n ['f90', 'text/x-fortran'],\n ['fbs', 'image/vnd.fastbidsheet'],\n ['fcdt', 'application/vnd.adobe.formscentral.fcdt'],\n ['fcs', 'application/vnd.isac.fcs'],\n ['fdf', 'application/vnd.fdf'],\n ['fdt', 'application/fdt+xml'],\n ['fe_launch', 'application/vnd.denovo.fcselayout-link'],\n ['fg5', 'application/vnd.fujitsu.oasysgp'],\n ['fgd', 'application/x-director'],\n ['fh', 'image/x-freehand'],\n ['fh4', 'image/x-freehand'],\n ['fh5', 'image/x-freehand'],\n ['fh7', 'image/x-freehand'],\n ['fhc', 'image/x-freehand'],\n ['fig', 'application/x-xfig'],\n ['fits', 'image/fits'],\n ['flac', 'audio/x-flac'],\n ['fli', 'video/x-fli'],\n ['flo', 'application/vnd.micrografx.flo'],\n ['flv', 'video/x-flv'],\n ['flw', 'application/vnd.kde.kivio'],\n ['flx', 'text/vnd.fmi.flexstor'],\n ['fly', 'text/vnd.fly'],\n ['fm', 'application/vnd.framemaker'],\n ['fnc', 'application/vnd.frogans.fnc'],\n ['fo', 'application/vnd.software602.filler.form+xml'],\n ['for', 'text/x-fortran'],\n ['fpx', 'image/vnd.fpx'],\n ['frame', 'application/vnd.framemaker'],\n ['fsc', 'application/vnd.fsc.weblaunch'],\n ['fst', 'image/vnd.fst'],\n ['ftc', 'application/vnd.fluxtime.clip'],\n ['fti', 'application/vnd.anser-web-funds-transfer-initiation'],\n ['fvt', 'video/vnd.fvt'],\n ['fxp', 'application/vnd.adobe.fxp'],\n ['fxpl', 'application/vnd.adobe.fxp'],\n ['fzs', 'application/vnd.fuzzysheet'],\n ['g2w', 'application/vnd.geoplan'],\n ['g3', 'image/g3fax'],\n ['g3w', 'application/vnd.geospace'],\n ['gac', 'application/vnd.groove-account'],\n ['gam', 'application/x-tads'],\n ['gbr', 'application/rpki-ghostbusters'],\n ['gca', 'application/x-gca-compressed'],\n ['gdl', 'model/vnd.gdl'],\n ['gdoc', 'application/vnd.google-apps.document'],\n ['geo', 'application/vnd.dynageo'],\n ['geojson', 'application/geo+json'],\n ['gex', 'application/vnd.geometry-explorer'],\n ['ggb', 'application/vnd.geogebra.file'],\n ['ggt', 'application/vnd.geogebra.tool'],\n ['ghf', 'application/vnd.groove-help'],\n ['gif', 'image/gif'],\n ['gim', 'application/vnd.groove-identity-message'],\n ['glb', 'model/gltf-binary'],\n ['gltf', 'model/gltf+json'],\n ['gml', 'application/gml+xml'],\n ['gmx', 'application/vnd.gmx'],\n ['gnumeric', 'application/x-gnumeric'],\n ['gpg', 'application/gpg-keys'],\n ['gph', 'application/vnd.flographit'],\n ['gpx', 'application/gpx+xml'],\n ['gqf', 'application/vnd.grafeq'],\n ['gqs', 'application/vnd.grafeq'],\n ['gram', 'application/srgs'],\n ['gramps', 'application/x-gramps-xml'],\n ['gre', 'application/vnd.geometry-explorer'],\n ['grv', 'application/vnd.groove-injector'],\n ['grxml', 'application/srgs+xml'],\n ['gsf', 'application/x-font-ghostscript'],\n ['gsheet', 'application/vnd.google-apps.spreadsheet'],\n ['gslides', 'application/vnd.google-apps.presentation'],\n ['gtar', 'application/x-gtar'],\n ['gtm', 'application/vnd.groove-tool-message'],\n ['gtw', 'model/vnd.gtw'],\n ['gv', 'text/vnd.graphviz'],\n ['gxf', 'application/gxf'],\n ['gxt', 'application/vnd.geonext'],\n ['gz', 'application/gzip'],\n ['gzip', 'application/gzip'],\n ['h', 'text/x-c'],\n ['h261', 'video/h261'],\n ['h263', 'video/h263'],\n ['h264', 'video/h264'],\n ['hal', 'application/vnd.hal+xml'],\n ['hbci', 'application/vnd.hbci'],\n ['hbs', 'text/x-handlebars-template'],\n ['hdd', 'application/x-virtualbox-hdd'],\n ['hdf', 'application/x-hdf'],\n ['heic', 'image/heic'],\n ['heics', 'image/heic-sequence'],\n ['heif', 'image/heif'],\n ['heifs', 'image/heif-sequence'],\n ['hej2', 'image/hej2k'],\n ['held', 'application/atsc-held+xml'],\n ['hh', 'text/x-c'],\n ['hjson', 'application/hjson'],\n ['hlp', 'application/winhlp'],\n ['hpgl', 'application/vnd.hp-hpgl'],\n ['hpid', 'application/vnd.hp-hpid'],\n ['hps', 'application/vnd.hp-hps'],\n ['hqx', 'application/mac-binhex40'],\n ['hsj2', 'image/hsj2'],\n ['htc', 'text/x-component'],\n ['htke', 'application/vnd.kenameaapp'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['hvd', 'application/vnd.yamaha.hv-dic'],\n ['hvp', 'application/vnd.yamaha.hv-voice'],\n ['hvs', 'application/vnd.yamaha.hv-script'],\n ['i2g', 'application/vnd.intergeo'],\n ['icc', 'application/vnd.iccprofile'],\n ['ice', 'x-conference/x-cooltalk'],\n ['icm', 'application/vnd.iccprofile'],\n ['ico', 'image/x-icon'],\n ['ics', 'text/calendar'],\n ['ief', 'image/ief'],\n ['ifb', 'text/calendar'],\n ['ifm', 'application/vnd.shana.informed.formdata'],\n ['iges', 'model/iges'],\n ['igl', 'application/vnd.igloader'],\n ['igm', 'application/vnd.insors.igm'],\n ['igs', 'model/iges'],\n ['igx', 'application/vnd.micrografx.igx'],\n ['iif', 'application/vnd.shana.informed.interchange'],\n ['img', 'application/octet-stream'],\n ['imp', 'application/vnd.accpac.simply.imp'],\n ['ims', 'application/vnd.ms-ims'],\n ['in', 'text/plain'],\n ['ini', 'text/plain'],\n ['ink', 'application/inkml+xml'],\n ['inkml', 'application/inkml+xml'],\n ['install', 'application/x-install-instructions'],\n ['iota', 'application/vnd.astraea-software.iota'],\n ['ipfix', 'application/ipfix'],\n ['ipk', 'application/vnd.shana.informed.package'],\n ['irm', 'application/vnd.ibm.rights-management'],\n ['irp', 'application/vnd.irepository.package+xml'],\n ['iso', 'application/x-iso9660-image'],\n ['itp', 'application/vnd.shana.informed.formtemplate'],\n ['its', 'application/its+xml'],\n ['ivp', 'application/vnd.immervision-ivp'],\n ['ivu', 'application/vnd.immervision-ivu'],\n ['jad', 'text/vnd.sun.j2me.app-descriptor'],\n ['jade', 'text/jade'],\n ['jam', 'application/vnd.jam'],\n ['jar', 'application/java-archive'],\n ['jardiff', 'application/x-java-archive-diff'],\n ['java', 'text/x-java-source'],\n ['jhc', 'image/jphc'],\n ['jisp', 'application/vnd.jisp'],\n ['jls', 'image/jls'],\n ['jlt', 'application/vnd.hp-jlyt'],\n ['jng', 'image/x-jng'],\n ['jnlp', 'application/x-java-jnlp-file'],\n ['joda', 'application/vnd.joost.joda-archive'],\n ['jp2', 'image/jp2'],\n ['jpe', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['jpf', 'image/jpx'],\n ['jpg', 'image/jpeg'],\n ['jpg2', 'image/jp2'],\n ['jpgm', 'video/jpm'],\n ['jpgv', 'video/jpeg'],\n ['jph', 'image/jph'],\n ['jpm', 'video/jpm'],\n ['jpx', 'image/jpx'],\n ['js', 'application/javascript'],\n ['json', 'application/json'],\n ['json5', 'application/json5'],\n ['jsonld', 'application/ld+json'],\n // https://jsonlines.org/\n ['jsonl', 'application/jsonl'],\n ['jsonml', 'application/jsonml+json'],\n ['jsx', 'text/jsx'],\n ['jxr', 'image/jxr'],\n ['jxra', 'image/jxra'],\n ['jxrs', 'image/jxrs'],\n ['jxs', 'image/jxs'],\n ['jxsc', 'image/jxsc'],\n ['jxsi', 'image/jxsi'],\n ['jxss', 'image/jxss'],\n ['kar', 'audio/midi'],\n ['karbon', 'application/vnd.kde.karbon'],\n ['kdb', 'application/octet-stream'],\n ['kdbx', 'application/x-keepass2'],\n ['key', 'application/x-iwork-keynote-sffkey'],\n ['kfo', 'application/vnd.kde.kformula'],\n ['kia', 'application/vnd.kidspiration'],\n ['kml', 'application/vnd.google-earth.kml+xml'],\n ['kmz', 'application/vnd.google-earth.kmz'],\n ['kne', 'application/vnd.kinar'],\n ['knp', 'application/vnd.kinar'],\n ['kon', 'application/vnd.kde.kontour'],\n ['kpr', 'application/vnd.kde.kpresenter'],\n ['kpt', 'application/vnd.kde.kpresenter'],\n ['kpxx', 'application/vnd.ds-keypoint'],\n ['ksp', 'application/vnd.kde.kspread'],\n ['ktr', 'application/vnd.kahootz'],\n ['ktx', 'image/ktx'],\n ['ktx2', 'image/ktx2'],\n ['ktz', 'application/vnd.kahootz'],\n ['kwd', 'application/vnd.kde.kword'],\n ['kwt', 'application/vnd.kde.kword'],\n ['lasxml', 'application/vnd.las.las+xml'],\n ['latex', 'application/x-latex'],\n ['lbd', 'application/vnd.llamagraphics.life-balance.desktop'],\n ['lbe', 'application/vnd.llamagraphics.life-balance.exchange+xml'],\n ['les', 'application/vnd.hhe.lesson-player'],\n ['less', 'text/less'],\n ['lgr', 'application/lgr+xml'],\n ['lha', 'application/octet-stream'],\n ['link66', 'application/vnd.route66.link66+xml'],\n ['list', 'text/plain'],\n ['list3820', 'application/vnd.ibm.modcap'],\n ['listafp', 'application/vnd.ibm.modcap'],\n ['litcoffee', 'text/coffeescript'],\n ['lnk', 'application/x-ms-shortcut'],\n ['log', 'text/plain'],\n ['lostxml', 'application/lost+xml'],\n ['lrf', 'application/octet-stream'],\n ['lrm', 'application/vnd.ms-lrm'],\n ['ltf', 'application/vnd.frogans.ltf'],\n ['lua', 'text/x-lua'],\n ['luac', 'application/x-lua-bytecode'],\n ['lvp', 'audio/vnd.lucent.voice'],\n ['lwp', 'application/vnd.lotus-wordpro'],\n ['lzh', 'application/octet-stream'],\n ['m1v', 'video/mpeg'],\n ['m2a', 'audio/mpeg'],\n ['m2v', 'video/mpeg'],\n ['m3a', 'audio/mpeg'],\n ['m3u', 'text/plain'],\n ['m3u8', 'application/vnd.apple.mpegurl'],\n ['m4a', 'audio/x-m4a'],\n ['m4p', 'application/mp4'],\n ['m4s', 'video/iso.segment'],\n ['m4u', 'application/vnd.mpegurl'],\n ['m4v', 'video/x-m4v'],\n ['m13', 'application/x-msmediaview'],\n ['m14', 'application/x-msmediaview'],\n ['m21', 'application/mp21'],\n ['ma', 'application/mathematica'],\n ['mads', 'application/mads+xml'],\n ['maei', 'application/mmt-aei+xml'],\n ['mag', 'application/vnd.ecowin.chart'],\n ['maker', 'application/vnd.framemaker'],\n ['man', 'text/troff'],\n ['manifest', 'text/cache-manifest'],\n ['map', 'application/json'],\n ['mar', 'application/octet-stream'],\n ['markdown', 'text/markdown'],\n ['mathml', 'application/mathml+xml'],\n ['mb', 'application/mathematica'],\n ['mbk', 'application/vnd.mobius.mbk'],\n ['mbox', 'application/mbox'],\n ['mc1', 'application/vnd.medcalcdata'],\n ['mcd', 'application/vnd.mcd'],\n ['mcurl', 'text/vnd.curl.mcurl'],\n ['md', 'text/markdown'],\n ['mdb', 'application/x-msaccess'],\n ['mdi', 'image/vnd.ms-modi'],\n ['mdx', 'text/mdx'],\n ['me', 'text/troff'],\n ['mesh', 'model/mesh'],\n ['meta4', 'application/metalink4+xml'],\n ['metalink', 'application/metalink+xml'],\n ['mets', 'application/mets+xml'],\n ['mfm', 'application/vnd.mfmp'],\n ['mft', 'application/rpki-manifest'],\n ['mgp', 'application/vnd.osgeo.mapguide.package'],\n ['mgz', 'application/vnd.proteus.magazine'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mie', 'application/x-mie'],\n ['mif', 'application/vnd.mif'],\n ['mime', 'message/rfc822'],\n ['mj2', 'video/mj2'],\n ['mjp2', 'video/mj2'],\n ['mjs', 'application/javascript'],\n ['mk3d', 'video/x-matroska'],\n ['mka', 'audio/x-matroska'],\n ['mkd', 'text/x-markdown'],\n ['mks', 'video/x-matroska'],\n ['mkv', 'video/x-matroska'],\n ['mlp', 'application/vnd.dolby.mlp'],\n ['mmd', 'application/vnd.chipnuts.karaoke-mmd'],\n ['mmf', 'application/vnd.smaf'],\n ['mml', 'text/mathml'],\n ['mmr', 'image/vnd.fujixerox.edmics-mmr'],\n ['mng', 'video/x-mng'],\n ['mny', 'application/x-msmoney'],\n ['mobi', 'application/x-mobipocket-ebook'],\n ['mods', 'application/mods+xml'],\n ['mov', 'video/quicktime'],\n ['movie', 'video/x-sgi-movie'],\n ['mp2', 'audio/mpeg'],\n ['mp2a', 'audio/mpeg'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mp4a', 'audio/mp4'],\n ['mp4s', 'application/mp4'],\n ['mp4v', 'video/mp4'],\n ['mp21', 'application/mp21'],\n ['mpc', 'application/vnd.mophun.certificate'],\n ['mpd', 'application/dash+xml'],\n ['mpe', 'video/mpeg'],\n ['mpeg', 'video/mpeg'],\n ['mpg', 'video/mpeg'],\n ['mpg4', 'video/mp4'],\n ['mpga', 'audio/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['mpm', 'application/vnd.blueice.multipass'],\n ['mpn', 'application/vnd.mophun.application'],\n ['mpp', 'application/vnd.ms-project'],\n ['mpt', 'application/vnd.ms-project'],\n ['mpy', 'application/vnd.ibm.minipay'],\n ['mqy', 'application/vnd.mobius.mqy'],\n ['mrc', 'application/marc'],\n ['mrcx', 'application/marcxml+xml'],\n ['ms', 'text/troff'],\n ['mscml', 'application/mediaservercontrol+xml'],\n ['mseed', 'application/vnd.fdsn.mseed'],\n ['mseq', 'application/vnd.mseq'],\n ['msf', 'application/vnd.epson.msf'],\n ['msg', 'application/vnd.ms-outlook'],\n ['msh', 'model/mesh'],\n ['msi', 'application/x-msdownload'],\n ['msl', 'application/vnd.mobius.msl'],\n ['msm', 'application/octet-stream'],\n ['msp', 'application/octet-stream'],\n ['msty', 'application/vnd.muvee.style'],\n ['mtl', 'model/mtl'],\n ['mts', 'model/vnd.mts'],\n ['mus', 'application/vnd.musician'],\n ['musd', 'application/mmt-usd+xml'],\n ['musicxml', 'application/vnd.recordare.musicxml+xml'],\n ['mvb', 'application/x-msmediaview'],\n ['mvt', 'application/vnd.mapbox-vector-tile'],\n ['mwf', 'application/vnd.mfer'],\n ['mxf', 'application/mxf'],\n ['mxl', 'application/vnd.recordare.musicxml'],\n ['mxmf', 'audio/mobile-xmf'],\n ['mxml', 'application/xv+xml'],\n ['mxs', 'application/vnd.triscape.mxs'],\n ['mxu', 'video/vnd.mpegurl'],\n ['n-gage', 'application/vnd.nokia.n-gage.symbian.install'],\n ['n3', 'text/n3'],\n ['nb', 'application/mathematica'],\n ['nbp', 'application/vnd.wolfram.player'],\n ['nc', 'application/x-netcdf'],\n ['ncx', 'application/x-dtbncx+xml'],\n ['nfo', 'text/x-nfo'],\n ['ngdat', 'application/vnd.nokia.n-gage.data'],\n ['nitf', 'application/vnd.nitf'],\n ['nlu', 'application/vnd.neurolanguage.nlu'],\n ['nml', 'application/vnd.enliven'],\n ['nnd', 'application/vnd.noblenet-directory'],\n ['nns', 'application/vnd.noblenet-sealer'],\n ['nnw', 'application/vnd.noblenet-web'],\n ['npx', 'image/vnd.net-fpx'],\n ['nq', 'application/n-quads'],\n ['nsc', 'application/x-conference'],\n ['nsf', 'application/vnd.lotus-notes'],\n ['nt', 'application/n-triples'],\n ['ntf', 'application/vnd.nitf'],\n ['numbers', 'application/x-iwork-numbers-sffnumbers'],\n ['nzb', 'application/x-nzb'],\n ['oa2', 'application/vnd.fujitsu.oasys2'],\n ['oa3', 'application/vnd.fujitsu.oasys3'],\n ['oas', 'application/vnd.fujitsu.oasys'],\n ['obd', 'application/x-msbinder'],\n ['obgx', 'application/vnd.openblox.game+xml'],\n ['obj', 'model/obj'],\n ['oda', 'application/oda'],\n ['odb', 'application/vnd.oasis.opendocument.database'],\n ['odc', 'application/vnd.oasis.opendocument.chart'],\n ['odf', 'application/vnd.oasis.opendocument.formula'],\n ['odft', 'application/vnd.oasis.opendocument.formula-template'],\n ['odg', 'application/vnd.oasis.opendocument.graphics'],\n ['odi', 'application/vnd.oasis.opendocument.image'],\n ['odm', 'application/vnd.oasis.opendocument.text-master'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogex', 'model/vnd.opengex'],\n ['ogg', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['omdoc', 'application/omdoc+xml'],\n ['onepkg', 'application/onenote'],\n ['onetmp', 'application/onenote'],\n ['onetoc', 'application/onenote'],\n ['onetoc2', 'application/onenote'],\n ['opf', 'application/oebps-package+xml'],\n ['opml', 'text/x-opml'],\n ['oprc', 'application/vnd.palm'],\n ['opus', 'audio/ogg'],\n ['org', 'text/x-org'],\n ['osf', 'application/vnd.yamaha.openscoreformat'],\n ['osfpvg', 'application/vnd.yamaha.openscoreformat.osfpvg+xml'],\n ['osm', 'application/vnd.openstreetmap.data+xml'],\n ['otc', 'application/vnd.oasis.opendocument.chart-template'],\n ['otf', 'font/otf'],\n ['otg', 'application/vnd.oasis.opendocument.graphics-template'],\n ['oth', 'application/vnd.oasis.opendocument.text-web'],\n ['oti', 'application/vnd.oasis.opendocument.image-template'],\n ['otp', 'application/vnd.oasis.opendocument.presentation-template'],\n ['ots', 'application/vnd.oasis.opendocument.spreadsheet-template'],\n ['ott', 'application/vnd.oasis.opendocument.text-template'],\n ['ova', 'application/x-virtualbox-ova'],\n ['ovf', 'application/x-virtualbox-ovf'],\n ['owl', 'application/rdf+xml'],\n ['oxps', 'application/oxps'],\n ['oxt', 'application/vnd.openofficeorg.extension'],\n ['p', 'text/x-pascal'],\n ['p7a', 'application/x-pkcs7-signature'],\n ['p7b', 'application/x-pkcs7-certificates'],\n ['p7c', 'application/pkcs7-mime'],\n ['p7m', 'application/pkcs7-mime'],\n ['p7r', 'application/x-pkcs7-certreqresp'],\n ['p7s', 'application/pkcs7-signature'],\n ['p8', 'application/pkcs8'],\n ['p10', 'application/x-pkcs10'],\n ['p12', 'application/x-pkcs12'],\n ['pac', 'application/x-ns-proxy-autoconfig'],\n ['pages', 'application/x-iwork-pages-sffpages'],\n ['pas', 'text/x-pascal'],\n ['paw', 'application/vnd.pawaafile'],\n ['pbd', 'application/vnd.powerbuilder6'],\n ['pbm', 'image/x-portable-bitmap'],\n ['pcap', 'application/vnd.tcpdump.pcap'],\n ['pcf', 'application/x-font-pcf'],\n ['pcl', 'application/vnd.hp-pcl'],\n ['pclxl', 'application/vnd.hp-pclxl'],\n ['pct', 'image/x-pict'],\n ['pcurl', 'application/vnd.curl.pcurl'],\n ['pcx', 'image/x-pcx'],\n ['pdb', 'application/x-pilot'],\n ['pde', 'text/x-processing'],\n ['pdf', 'application/pdf'],\n ['pem', 'application/x-x509-user-cert'],\n ['pfa', 'application/x-font-type1'],\n ['pfb', 'application/x-font-type1'],\n ['pfm', 'application/x-font-type1'],\n ['pfr', 'application/font-tdpfr'],\n ['pfx', 'application/x-pkcs12'],\n ['pgm', 'image/x-portable-graymap'],\n ['pgn', 'application/x-chess-pgn'],\n ['pgp', 'application/pgp'],\n ['php', 'application/x-httpd-php'],\n ['php3', 'application/x-httpd-php'],\n ['php4', 'application/x-httpd-php'],\n ['phps', 'application/x-httpd-php-source'],\n ['phtml', 'application/x-httpd-php'],\n ['pic', 'image/x-pict'],\n ['pkg', 'application/octet-stream'],\n ['pki', 'application/pkixcmp'],\n ['pkipath', 'application/pkix-pkipath'],\n ['pkpass', 'application/vnd.apple.pkpass'],\n ['pl', 'application/x-perl'],\n ['plb', 'application/vnd.3gpp.pic-bw-large'],\n ['plc', 'application/vnd.mobius.plc'],\n ['plf', 'application/vnd.pocketlearn'],\n ['pls', 'application/pls+xml'],\n ['pm', 'application/x-perl'],\n ['pml', 'application/vnd.ctc-posml'],\n ['png', 'image/png'],\n ['pnm', 'image/x-portable-anymap'],\n ['portpkg', 'application/vnd.macports.portpkg'],\n ['pot', 'application/vnd.ms-powerpoint'],\n ['potm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['potx', 'application/vnd.openxmlformats-officedocument.presentationml.template'],\n ['ppa', 'application/vnd.ms-powerpoint'],\n ['ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12'],\n ['ppd', 'application/vnd.cups-ppd'],\n ['ppm', 'image/x-portable-pixmap'],\n ['pps', 'application/vnd.ms-powerpoint'],\n ['ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'],\n ['ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'],\n ['ppt', 'application/powerpoint'],\n ['pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['pqa', 'application/vnd.palm'],\n ['prc', 'application/x-pilot'],\n ['pre', 'application/vnd.lotus-freelance'],\n ['prf', 'application/pics-rules'],\n ['provx', 'application/provenance+xml'],\n ['ps', 'application/postscript'],\n ['psb', 'application/vnd.3gpp.pic-bw-small'],\n ['psd', 'application/x-photoshop'],\n ['psf', 'application/x-font-linux-psf'],\n ['pskcxml', 'application/pskc+xml'],\n ['pti', 'image/prs.pti'],\n ['ptid', 'application/vnd.pvi.ptid1'],\n ['pub', 'application/x-mspublisher'],\n ['pvb', 'application/vnd.3gpp.pic-bw-var'],\n ['pwn', 'application/vnd.3m.post-it-notes'],\n ['pya', 'audio/vnd.ms-playready.media.pya'],\n ['pyv', 'video/vnd.ms-playready.media.pyv'],\n ['qam', 'application/vnd.epson.quickanime'],\n ['qbo', 'application/vnd.intu.qbo'],\n ['qfx', 'application/vnd.intu.qfx'],\n ['qps', 'application/vnd.publishare-delta-tree'],\n ['qt', 'video/quicktime'],\n ['qwd', 'application/vnd.quark.quarkxpress'],\n ['qwt', 'application/vnd.quark.quarkxpress'],\n ['qxb', 'application/vnd.quark.quarkxpress'],\n ['qxd', 'application/vnd.quark.quarkxpress'],\n ['qxl', 'application/vnd.quark.quarkxpress'],\n ['qxt', 'application/vnd.quark.quarkxpress'],\n ['ra', 'audio/x-realaudio'],\n ['ram', 'audio/x-pn-realaudio'],\n ['raml', 'application/raml+yaml'],\n ['rapd', 'application/route-apd+xml'],\n ['rar', 'application/x-rar'],\n ['ras', 'image/x-cmu-raster'],\n ['rcprofile', 'application/vnd.ipunplugged.rcprofile'],\n ['rdf', 'application/rdf+xml'],\n ['rdz', 'application/vnd.data-vision.rdz'],\n ['relo', 'application/p2p-overlay+xml'],\n ['rep', 'application/vnd.businessobjects'],\n ['res', 'application/x-dtbresource+xml'],\n ['rgb', 'image/x-rgb'],\n ['rif', 'application/reginfo+xml'],\n ['rip', 'audio/vnd.rip'],\n ['ris', 'application/x-research-info-systems'],\n ['rl', 'application/resource-lists+xml'],\n ['rlc', 'image/vnd.fujixerox.edmics-rlc'],\n ['rld', 'application/resource-lists-diff+xml'],\n ['rm', 'audio/x-pn-realaudio'],\n ['rmi', 'audio/midi'],\n ['rmp', 'audio/x-pn-realaudio-plugin'],\n ['rms', 'application/vnd.jcp.javame.midlet-rms'],\n ['rmvb', 'application/vnd.rn-realmedia-vbr'],\n ['rnc', 'application/relax-ng-compact-syntax'],\n ['rng', 'application/xml'],\n ['roa', 'application/rpki-roa'],\n ['roff', 'text/troff'],\n ['rp9', 'application/vnd.cloanto.rp9'],\n ['rpm', 'audio/x-pn-realaudio-plugin'],\n ['rpss', 'application/vnd.nokia.radio-presets'],\n ['rpst', 'application/vnd.nokia.radio-preset'],\n ['rq', 'application/sparql-query'],\n ['rs', 'application/rls-services+xml'],\n ['rsa', 'application/x-pkcs7'],\n ['rsat', 'application/atsc-rsat+xml'],\n ['rsd', 'application/rsd+xml'],\n ['rsheet', 'application/urc-ressheet+xml'],\n ['rss', 'application/rss+xml'],\n ['rtf', 'text/rtf'],\n ['rtx', 'text/richtext'],\n ['run', 'application/x-makeself'],\n ['rusd', 'application/route-usd+xml'],\n ['rv', 'video/vnd.rn-realvideo'],\n ['s', 'text/x-asm'],\n ['s3m', 'audio/s3m'],\n ['saf', 'application/vnd.yamaha.smaf-audio'],\n ['sass', 'text/x-sass'],\n ['sbml', 'application/sbml+xml'],\n ['sc', 'application/vnd.ibm.secure-container'],\n ['scd', 'application/x-msschedule'],\n ['scm', 'application/vnd.lotus-screencam'],\n ['scq', 'application/scvp-cv-request'],\n ['scs', 'application/scvp-cv-response'],\n ['scss', 'text/x-scss'],\n ['scurl', 'text/vnd.curl.scurl'],\n ['sda', 'application/vnd.stardivision.draw'],\n ['sdc', 'application/vnd.stardivision.calc'],\n ['sdd', 'application/vnd.stardivision.impress'],\n ['sdkd', 'application/vnd.solent.sdkm+xml'],\n ['sdkm', 'application/vnd.solent.sdkm+xml'],\n ['sdp', 'application/sdp'],\n ['sdw', 'application/vnd.stardivision.writer'],\n ['sea', 'application/octet-stream'],\n ['see', 'application/vnd.seemail'],\n ['seed', 'application/vnd.fdsn.seed'],\n ['sema', 'application/vnd.sema'],\n ['semd', 'application/vnd.semd'],\n ['semf', 'application/vnd.semf'],\n ['senmlx', 'application/senml+xml'],\n ['sensmlx', 'application/sensml+xml'],\n ['ser', 'application/java-serialized-object'],\n ['setpay', 'application/set-payment-initiation'],\n ['setreg', 'application/set-registration-initiation'],\n ['sfd-hdstx', 'application/vnd.hydrostatix.sof-data'],\n ['sfs', 'application/vnd.spotfire.sfs'],\n ['sfv', 'text/x-sfv'],\n ['sgi', 'image/sgi'],\n ['sgl', 'application/vnd.stardivision.writer-global'],\n ['sgm', 'text/sgml'],\n ['sgml', 'text/sgml'],\n ['sh', 'application/x-sh'],\n ['shar', 'application/x-shar'],\n ['shex', 'text/shex'],\n ['shf', 'application/shf+xml'],\n ['shtml', 'text/html'],\n ['sid', 'image/x-mrsid-image'],\n ['sieve', 'application/sieve'],\n ['sig', 'application/pgp-signature'],\n ['sil', 'audio/silk'],\n ['silo', 'model/mesh'],\n ['sis', 'application/vnd.symbian.install'],\n ['sisx', 'application/vnd.symbian.install'],\n ['sit', 'application/x-stuffit'],\n ['sitx', 'application/x-stuffitx'],\n ['siv', 'application/sieve'],\n ['skd', 'application/vnd.koan'],\n ['skm', 'application/vnd.koan'],\n ['skp', 'application/vnd.koan'],\n ['skt', 'application/vnd.koan'],\n ['sldm', 'application/vnd.ms-powerpoint.slide.macroenabled.12'],\n ['sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide'],\n ['slim', 'text/slim'],\n ['slm', 'text/slim'],\n ['sls', 'application/route-s-tsid+xml'],\n ['slt', 'application/vnd.epson.salt'],\n ['sm', 'application/vnd.stepmania.stepchart'],\n ['smf', 'application/vnd.stardivision.math'],\n ['smi', 'application/smil'],\n ['smil', 'application/smil'],\n ['smv', 'video/x-smv'],\n ['smzip', 'application/vnd.stepmania.package'],\n ['snd', 'audio/basic'],\n ['snf', 'application/x-font-snf'],\n ['so', 'application/octet-stream'],\n ['spc', 'application/x-pkcs7-certificates'],\n ['spdx', 'text/spdx'],\n ['spf', 'application/vnd.yamaha.smaf-phrase'],\n ['spl', 'application/x-futuresplash'],\n ['spot', 'text/vnd.in3d.spot'],\n ['spp', 'application/scvp-vp-response'],\n ['spq', 'application/scvp-vp-request'],\n ['spx', 'audio/ogg'],\n ['sql', 'application/x-sql'],\n ['src', 'application/x-wais-source'],\n ['srt', 'application/x-subrip'],\n ['sru', 'application/sru+xml'],\n ['srx', 'application/sparql-results+xml'],\n ['ssdl', 'application/ssdl+xml'],\n ['sse', 'application/vnd.kodak-descriptor'],\n ['ssf', 'application/vnd.epson.ssf'],\n ['ssml', 'application/ssml+xml'],\n ['sst', 'application/octet-stream'],\n ['st', 'application/vnd.sailingtracker.track'],\n ['stc', 'application/vnd.sun.xml.calc.template'],\n ['std', 'application/vnd.sun.xml.draw.template'],\n ['stf', 'application/vnd.wt.stf'],\n ['sti', 'application/vnd.sun.xml.impress.template'],\n ['stk', 'application/hyperstudio'],\n ['stl', 'model/stl'],\n ['stpx', 'model/step+xml'],\n ['stpxz', 'model/step-xml+zip'],\n ['stpz', 'model/step+zip'],\n ['str', 'application/vnd.pg.format'],\n ['stw', 'application/vnd.sun.xml.writer.template'],\n ['styl', 'text/stylus'],\n ['stylus', 'text/stylus'],\n ['sub', 'text/vnd.dvb.subtitle'],\n ['sus', 'application/vnd.sus-calendar'],\n ['susp', 'application/vnd.sus-calendar'],\n ['sv4cpio', 'application/x-sv4cpio'],\n ['sv4crc', 'application/x-sv4crc'],\n ['svc', 'application/vnd.dvb.service'],\n ['svd', 'application/vnd.svd'],\n ['svg', 'image/svg+xml'],\n ['svgz', 'image/svg+xml'],\n ['swa', 'application/x-director'],\n ['swf', 'application/x-shockwave-flash'],\n ['swi', 'application/vnd.aristanetworks.swi'],\n ['swidtag', 'application/swid+xml'],\n ['sxc', 'application/vnd.sun.xml.calc'],\n ['sxd', 'application/vnd.sun.xml.draw'],\n ['sxg', 'application/vnd.sun.xml.writer.global'],\n ['sxi', 'application/vnd.sun.xml.impress'],\n ['sxm', 'application/vnd.sun.xml.math'],\n ['sxw', 'application/vnd.sun.xml.writer'],\n ['t', 'text/troff'],\n ['t3', 'application/x-t3vm-image'],\n ['t38', 'image/t38'],\n ['taglet', 'application/vnd.mynfc'],\n ['tao', 'application/vnd.tao.intent-module-archive'],\n ['tap', 'image/vnd.tencent.tap'],\n ['tar', 'application/x-tar'],\n ['tcap', 'application/vnd.3gpp2.tcap'],\n ['tcl', 'application/x-tcl'],\n ['td', 'application/urc-targetdesc+xml'],\n ['teacher', 'application/vnd.smart.teacher'],\n ['tei', 'application/tei+xml'],\n ['teicorpus', 'application/tei+xml'],\n ['tex', 'application/x-tex'],\n ['texi', 'application/x-texinfo'],\n ['texinfo', 'application/x-texinfo'],\n ['text', 'text/plain'],\n ['tfi', 'application/thraud+xml'],\n ['tfm', 'application/x-tex-tfm'],\n ['tfx', 'image/tiff-fx'],\n ['tga', 'image/x-tga'],\n ['tgz', 'application/x-tar'],\n ['thmx', 'application/vnd.ms-officetheme'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['tk', 'application/x-tcl'],\n ['tmo', 'application/vnd.tmobile-livetv'],\n ['toml', 'application/toml'],\n ['torrent', 'application/x-bittorrent'],\n ['tpl', 'application/vnd.groove-tool-template'],\n ['tpt', 'application/vnd.trid.tpt'],\n ['tr', 'text/troff'],\n ['tra', 'application/vnd.trueapp'],\n ['trig', 'application/trig'],\n ['trm', 'application/x-msterminal'],\n ['ts', 'video/mp2t'],\n ['tsd', 'application/timestamped-data'],\n ['tsv', 'text/tab-separated-values'],\n ['ttc', 'font/collection'],\n ['ttf', 'font/ttf'],\n ['ttl', 'text/turtle'],\n ['ttml', 'application/ttml+xml'],\n ['twd', 'application/vnd.simtech-mindmapper'],\n ['twds', 'application/vnd.simtech-mindmapper'],\n ['txd', 'application/vnd.genomatix.tuxedo'],\n ['txf', 'application/vnd.mobius.txf'],\n ['txt', 'text/plain'],\n ['u8dsn', 'message/global-delivery-status'],\n ['u8hdr', 'message/global-headers'],\n ['u8mdn', 'message/global-disposition-notification'],\n ['u8msg', 'message/global'],\n ['u32', 'application/x-authorware-bin'],\n ['ubj', 'application/ubjson'],\n ['udeb', 'application/x-debian-package'],\n ['ufd', 'application/vnd.ufdl'],\n ['ufdl', 'application/vnd.ufdl'],\n ['ulx', 'application/x-glulx'],\n ['umj', 'application/vnd.umajin'],\n ['unityweb', 'application/vnd.unity'],\n ['uoml', 'application/vnd.uoml+xml'],\n ['uri', 'text/uri-list'],\n ['uris', 'text/uri-list'],\n ['urls', 'text/uri-list'],\n ['usdz', 'model/vnd.usdz+zip'],\n ['ustar', 'application/x-ustar'],\n ['utz', 'application/vnd.uiq.theme'],\n ['uu', 'text/x-uuencode'],\n ['uva', 'audio/vnd.dece.audio'],\n ['uvd', 'application/vnd.dece.data'],\n ['uvf', 'application/vnd.dece.data'],\n ['uvg', 'image/vnd.dece.graphic'],\n ['uvh', 'video/vnd.dece.hd'],\n ['uvi', 'image/vnd.dece.graphic'],\n ['uvm', 'video/vnd.dece.mobile'],\n ['uvp', 'video/vnd.dece.pd'],\n ['uvs', 'video/vnd.dece.sd'],\n ['uvt', 'application/vnd.dece.ttml+xml'],\n ['uvu', 'video/vnd.uvvu.mp4'],\n ['uvv', 'video/vnd.dece.video'],\n ['uvva', 'audio/vnd.dece.audio'],\n ['uvvd', 'application/vnd.dece.data'],\n ['uvvf', 'application/vnd.dece.data'],\n ['uvvg', 'image/vnd.dece.graphic'],\n ['uvvh', 'video/vnd.dece.hd'],\n ['uvvi', 'image/vnd.dece.graphic'],\n ['uvvm', 'video/vnd.dece.mobile'],\n ['uvvp', 'video/vnd.dece.pd'],\n ['uvvs', 'video/vnd.dece.sd'],\n ['uvvt', 'application/vnd.dece.ttml+xml'],\n ['uvvu', 'video/vnd.uvvu.mp4'],\n ['uvvv', 'video/vnd.dece.video'],\n ['uvvx', 'application/vnd.dece.unspecified'],\n ['uvvz', 'application/vnd.dece.zip'],\n ['uvx', 'application/vnd.dece.unspecified'],\n ['uvz', 'application/vnd.dece.zip'],\n ['vbox', 'application/x-virtualbox-vbox'],\n ['vbox-extpack', 'application/x-virtualbox-vbox-extpack'],\n ['vcard', 'text/vcard'],\n ['vcd', 'application/x-cdlink'],\n ['vcf', 'text/x-vcard'],\n ['vcg', 'application/vnd.groove-vcard'],\n ['vcs', 'text/x-vcalendar'],\n ['vcx', 'application/vnd.vcx'],\n ['vdi', 'application/x-virtualbox-vdi'],\n ['vds', 'model/vnd.sap.vds'],\n ['vhd', 'application/x-virtualbox-vhd'],\n ['vis', 'application/vnd.visionary'],\n ['viv', 'video/vnd.vivo'],\n ['vlc', 'application/videolan'],\n ['vmdk', 'application/x-virtualbox-vmdk'],\n ['vob', 'video/x-ms-vob'],\n ['vor', 'application/vnd.stardivision.writer'],\n ['vox', 'application/x-authorware-bin'],\n ['vrml', 'model/vrml'],\n ['vsd', 'application/vnd.visio'],\n ['vsf', 'application/vnd.vsf'],\n ['vss', 'application/vnd.visio'],\n ['vst', 'application/vnd.visio'],\n ['vsw', 'application/vnd.visio'],\n ['vtf', 'image/vnd.valve.source.texture'],\n ['vtt', 'text/vtt'],\n ['vtu', 'model/vnd.vtu'],\n ['vxml', 'application/voicexml+xml'],\n ['w3d', 'application/x-director'],\n ['wad', 'application/x-doom'],\n ['wadl', 'application/vnd.sun.wadl+xml'],\n ['war', 'application/java-archive'],\n ['wasm', 'application/wasm'],\n ['wav', 'audio/x-wav'],\n ['wax', 'audio/x-ms-wax'],\n ['wbmp', 'image/vnd.wap.wbmp'],\n ['wbs', 'application/vnd.criticaltools.wbs+xml'],\n ['wbxml', 'application/wbxml'],\n ['wcm', 'application/vnd.ms-works'],\n ['wdb', 'application/vnd.ms-works'],\n ['wdp', 'image/vnd.ms-photo'],\n ['weba', 'audio/webm'],\n ['webapp', 'application/x-web-app-manifest+json'],\n ['webm', 'video/webm'],\n ['webmanifest', 'application/manifest+json'],\n ['webp', 'image/webp'],\n ['wg', 'application/vnd.pmi.widget'],\n ['wgt', 'application/widget'],\n ['wks', 'application/vnd.ms-works'],\n ['wm', 'video/x-ms-wm'],\n ['wma', 'audio/x-ms-wma'],\n ['wmd', 'application/x-ms-wmd'],\n ['wmf', 'image/wmf'],\n ['wml', 'text/vnd.wap.wml'],\n ['wmlc', 'application/wmlc'],\n ['wmls', 'text/vnd.wap.wmlscript'],\n ['wmlsc', 'application/vnd.wap.wmlscriptc'],\n ['wmv', 'video/x-ms-wmv'],\n ['wmx', 'video/x-ms-wmx'],\n ['wmz', 'application/x-msmetafile'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['word', 'application/msword'],\n ['wpd', 'application/vnd.wordperfect'],\n ['wpl', 'application/vnd.ms-wpl'],\n ['wps', 'application/vnd.ms-works'],\n ['wqd', 'application/vnd.wqd'],\n ['wri', 'application/x-mswrite'],\n ['wrl', 'model/vrml'],\n ['wsc', 'message/vnd.wfa.wsc'],\n ['wsdl', 'application/wsdl+xml'],\n ['wspolicy', 'application/wspolicy+xml'],\n ['wtb', 'application/vnd.webturbo'],\n ['wvx', 'video/x-ms-wvx'],\n ['x3d', 'model/x3d+xml'],\n ['x3db', 'model/x3d+fastinfoset'],\n ['x3dbz', 'model/x3d+binary'],\n ['x3dv', 'model/x3d-vrml'],\n ['x3dvz', 'model/x3d+vrml'],\n ['x3dz', 'model/x3d+xml'],\n ['x32', 'application/x-authorware-bin'],\n ['x_b', 'model/vnd.parasolid.transmit.binary'],\n ['x_t', 'model/vnd.parasolid.transmit.text'],\n ['xaml', 'application/xaml+xml'],\n ['xap', 'application/x-silverlight-app'],\n ['xar', 'application/vnd.xara'],\n ['xav', 'application/xcap-att+xml'],\n ['xbap', 'application/x-ms-xbap'],\n ['xbd', 'application/vnd.fujixerox.docuworks.binder'],\n ['xbm', 'image/x-xbitmap'],\n ['xca', 'application/xcap-caps+xml'],\n ['xcs', 'application/calendar+xml'],\n ['xdf', 'application/xcap-diff+xml'],\n ['xdm', 'application/vnd.syncml.dm+xml'],\n ['xdp', 'application/vnd.adobe.xdp+xml'],\n ['xdssc', 'application/dssc+xml'],\n ['xdw', 'application/vnd.fujixerox.docuworks'],\n ['xel', 'application/xcap-el+xml'],\n ['xenc', 'application/xenc+xml'],\n ['xer', 'application/patch-ops-error+xml'],\n ['xfdf', 'application/vnd.adobe.xfdf'],\n ['xfdl', 'application/vnd.xfdl'],\n ['xht', 'application/xhtml+xml'],\n ['xhtml', 'application/xhtml+xml'],\n ['xhvml', 'application/xv+xml'],\n ['xif', 'image/vnd.xiff'],\n ['xl', 'application/excel'],\n ['xla', 'application/vnd.ms-excel'],\n ['xlam', 'application/vnd.ms-excel.addin.macroEnabled.12'],\n ['xlc', 'application/vnd.ms-excel'],\n ['xlf', 'application/xliff+xml'],\n ['xlm', 'application/vnd.ms-excel'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'],\n ['xlsm', 'application/vnd.ms-excel.sheet.macroEnabled.12'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xlt', 'application/vnd.ms-excel'],\n ['xltm', 'application/vnd.ms-excel.template.macroEnabled.12'],\n ['xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'],\n ['xlw', 'application/vnd.ms-excel'],\n ['xm', 'audio/xm'],\n ['xml', 'application/xml'],\n ['xns', 'application/xcap-ns+xml'],\n ['xo', 'application/vnd.olpc-sugar'],\n ['xop', 'application/xop+xml'],\n ['xpi', 'application/x-xpinstall'],\n ['xpl', 'application/xproc+xml'],\n ['xpm', 'image/x-xpixmap'],\n ['xpr', 'application/vnd.is-xpr'],\n ['xps', 'application/vnd.ms-xpsdocument'],\n ['xpw', 'application/vnd.intercon.formnet'],\n ['xpx', 'application/vnd.intercon.formnet'],\n ['xsd', 'application/xml'],\n ['xsl', 'application/xml'],\n ['xslt', 'application/xslt+xml'],\n ['xsm', 'application/vnd.syncml+xml'],\n ['xspf', 'application/xspf+xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['xvm', 'application/xv+xml'],\n ['xvml', 'application/xv+xml'],\n ['xwd', 'image/x-xwindowdump'],\n ['xyz', 'chemical/x-xyz'],\n ['xz', 'application/x-xz'],\n ['yaml', 'text/yaml'],\n ['yang', 'application/yang'],\n ['yin', 'application/yin+xml'],\n ['yml', 'text/yaml'],\n ['ymp', 'text/x-suse-ymp'],\n ['z', 'application/x-compress'],\n ['z1', 'application/x-zmachine'],\n ['z2', 'application/x-zmachine'],\n ['z3', 'application/x-zmachine'],\n ['z4', 'application/x-zmachine'],\n ['z5', 'application/x-zmachine'],\n ['z6', 'application/x-zmachine'],\n ['z7', 'application/x-zmachine'],\n ['z8', 'application/x-zmachine'],\n ['zaz', 'application/vnd.zzazz.deck+xml'],\n ['zip', 'application/zip'],\n ['zir', 'application/vnd.zul'],\n ['zirz', 'application/vnd.zul'],\n ['zmm', 'application/vnd.handheld-entertainment+xml'],\n ['zsh', 'text/x-scriptzsh']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string, h?: FileSystemHandle): FileWithPath {\n const f = withMimeType(file);\n const {webkitRelativePath} = file;\n const p = typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : `./${file.name}`;\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n setObjProp(f, 'path', p);\n }\n if (h !== undefined) {\n Object.defineProperty(f, 'handle', {\n value: h,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n // Always populate a relative path so that even electron apps have access to a relativePath value\n setObjProp(f, 'relativePath', p);\n return f;\n}\n\nexport interface FileWithPath extends File {\n readonly path?: string;\n readonly handle?: FileSystemFileHandle;\n readonly relativePath?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n const {name} = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop()!.toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n}\n\nfunction setObjProp(f: FileWithPath, key: string, value: string) {\n Object.defineProperty(f, key, {\n value,\n writable: false,\n configurable: false,\n enumerable: true\n })\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n } else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt)\n }\n return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n return isObject(value);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n return isObject(value) && isObject(value.target);\n}\n\nfunction isObject(v: any): v is T {\n return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n return fromList((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n const files = await Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = await Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items: DataTransferItemList | FileList | null): T[] {\n if (items === null) {\n return [];\n }\n\n const files = [];\n\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n\n return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n\n const entry = item.webkitGetAsEntry();\n\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry) as any;\n }\n\n return fromDataTransferItem(item, entry);\n}\n\nfunction flatten(items: any[]): T[] {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\n\nasync function fromDataTransferItem(item: DataTransferItem, entry?: FileSystemEntry | null) {\n // Check if we're in a secure context; due to a bug in Chrome (as far as we know)\n // the browser crashes when calling this API (yet to be confirmed as a consistent behaviour).\n //\n // See:\n // - https://issues.chromium.org/issues/40186242\n // - https://github.com/react-dropzone/react-dropzone/issues/1397\n if (globalThis.isSecureContext && typeof (item as any).getAsFileSystemHandle === 'function') {\n const h = await (item as any).getAsFileSystemHandle();\n if (h === null) {\n throw new Error(`${item} is not a File`);\n }\n // It seems that the handle can be `undefined` (see https://github.com/react-dropzone/file-selector/issues/120),\n // so we check if it isn't; if it is, the code path continues to the next API (`getAsFile`).\n if (h !== undefined) {\n const file = await h.getFile();\n file.handle = h;\n return toFileWithPath(file);\n }\n }\n const file = item.getAsFile();\n if (!file) {\n throw new Error(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file, entry?.fullPath ?? undefined);\n return fwp;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n const reader = entry.createReader();\n\n return new Promise((resolve, reject) => {\n const entries: Promise[] = [];\n\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(async (batch: any[]) => {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = await Promise.all(entries);\n resolve(files);\n } catch (err) {\n reject(err);\n }\n } else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n\n // Continue reading\n readEntries();\n }\n }, (err: any) => {\n reject(err);\n });\n }\n\n readEntries();\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n return new Promise((resolve, reject) => {\n entry.file((file: FileWithPath) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err: any) => {\n reject(err);\n });\n });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array {}\ntype FileValue = FileWithPath\n | FileArray[];\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\nfunction _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 _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 _accepts from \"attr-accept\";\nvar accepts = typeof _accepts === \"function\" ? _accepts : _accepts.default; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n};\n/**\n *\n * @param {string} accept\n */\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr() {\n var accept = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var acceptArr = accept.split(\",\");\n var msg = acceptArr.length > 1 ? \"one of \".concat(acceptArr.join(\", \")) : acceptArr[0];\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(msg)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n};\n/**\n * Check if file is accepted.\n *\n * Firefox versions prior to 53 return a bogus MIME type for every file drag,\n * so dragovers with that MIME type will always be accepted.\n *\n * @param {File} file\n * @param {string} accept\n * @returns\n */\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\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\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || v === \"application/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
\n * \n *

Drag 'n' drop some files here, or click to select files

\n *
\n * )}\n *
\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: false,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
\n * \n *

Drag and drop some files here, or click to select files

\n *
\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n isDragReject: fileRejections.length > 0,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n border: 0,\n clip: \"rect(0, 0, 0, 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"0 -1px -1px 0\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections,\n isDragReject: action.isDragReject\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import PropTypes from 'prop-types';\r\nimport { useDropzone } from 'react-dropzone';\r\n// @mui\r\nimport { Box, Stack, Button, IconButton, Typography } from '@mui/material';\r\nimport { styled, alpha } from '@mui/material/styles';\r\n// assets\r\nimport { UploadIllustration } from '../../assets/illustrations';\r\n//\r\nimport Iconify from '../iconify';\r\n//\r\nimport RejectionFiles from './errors/RejectionFiles';\r\nimport MultiFilePreview from './preview/MultiFilePreview';\r\nimport SingleFilePreview from './preview/SingleFilePreview';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst StyledDropZone = styled('div')(({ theme }) => ({\r\n outline: 'none',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n position: 'relative',\r\n padding: theme.spacing(5),\r\n borderRadius: theme.shape.borderRadius,\r\n transition: theme.transitions.create('padding'),\r\n backgroundColor: theme.palette.background.neutral,\r\n border: `1px dashed ${alpha(theme.palette.grey[500], 0.32)}`,\r\n '&:hover': {\r\n opacity: 0.72,\r\n },\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nUpload.propTypes = {\r\n sx: PropTypes.object,\r\n error: PropTypes.bool,\r\n files: PropTypes.array,\r\n file: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n disabled: PropTypes.bool,\r\n multiple: PropTypes.bool,\r\n onDelete: PropTypes.func,\r\n onRemove: PropTypes.func,\r\n onUpload: PropTypes.func,\r\n thumbnail: PropTypes.bool,\r\n helperText: PropTypes.node,\r\n onRemoveAll: PropTypes.func,\r\n};\r\n\r\nexport default function Upload({\r\n disabled,\r\n multiple = false,\r\n error,\r\n helperText,\r\n //\r\n file,\r\n onDelete,\r\n //\r\n files,\r\n thumbnail,\r\n onUpload,\r\n onRemove,\r\n onRemoveAll,\r\n sx,\r\n ...other\r\n}) {\r\n const { getRootProps, getInputProps, isDragActive, isDragReject, fileRejections } = useDropzone({\r\n multiple,\r\n disabled,\r\n ...other,\r\n });\r\n\r\n const hasFile = !!file && !multiple;\r\n\r\n const hasFiles = files && multiple && files.length > 0;\r\n\r\n const isError = isDragReject || !!error;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n {hasFile && }\r\n \r\n\r\n {helperText && helperText}\r\n\r\n \r\n\r\n {hasFile && onDelete && (\r\n alpha(theme.palette.common.white, 0.8),\r\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.72),\r\n '&:hover': {\r\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.48),\r\n },\r\n }}\r\n >\r\n \r\n \r\n )}\r\n\r\n {hasFiles && (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n {onRemoveAll && (\r\n \r\n )}\r\n\r\n {onUpload && (\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nPlaceholder.propTypes = {\r\n sx: PropTypes.object,\r\n};\r\n\r\nfunction Placeholder({ sx, ...other }) {\r\n return (\r\n \r\n \r\n\r\n
\r\n \r\n Drop or Select file\r\n \r\n\r\n \r\n Drop files here or click\r\n \r\n browse\r\n \r\n thorough your machine\r\n \r\n
\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { useDropzone } from 'react-dropzone';\r\n// @mui\r\nimport { IconButton } from '@mui/material';\r\nimport { styled, alpha } from '@mui/material/styles';\r\n//\r\nimport Iconify from '../iconify';\r\nimport SingleFilePreview from './preview/SingleFilePreview';\r\nimport FileThumbnail from '../file-thumbnail/FileThumbnail';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst StyledDropZone = styled('div')(({ theme }) => ({\r\n width: 64,\r\n height: 64,\r\n fontSize: 24,\r\n display: 'flex',\r\n flexShrink: 0,\r\n cursor: 'pointer',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n margin: theme.spacing(0.5),\r\n color: theme.palette.text.disabled,\r\n borderRadius: theme.shape.borderRadius,\r\n border: `dashed 1px ${theme.palette.divider}`,\r\n backgroundColor: alpha(theme.palette.grey[500], 0.08),\r\n '&:hover': {\r\n opacity: 0.72,\r\n },\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nUploadBox.propTypes = {\r\n file: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n sx: PropTypes.object,\r\n error: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n placeholder: PropTypes.node,\r\n helperText: PropTypes.node,\r\n onDelete: PropTypes.func,\r\n};\r\n\r\nexport default function UploadBox({ file, placeholder, error, disabled, sx, helperText, onDelete, ...other }) {\r\n const { getRootProps, getInputProps, isDragActive, isDragReject } = useDropzone({\r\n disabled,\r\n ...other,\r\n });\r\n\r\n const hasFile = !!file;\r\n\r\n const isError = isDragReject || error;\r\n\r\n return (\r\n \r\n \r\n\r\n {hasFile ?\r\n <>\r\n \r\n\r\n {onDelete && (\r\n onDelete(file)}\r\n sx={{\r\n position: 'absolute',\r\n color: (theme) => alpha(theme.palette.common.white, 0.72),\r\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.48),\r\n '&:hover': {\r\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.72),\r\n },\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n :\r\n \r\n }\r\n\r\n {helperText && helperText}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { useDropzone } from 'react-dropzone';\r\n// @mui\r\nimport { Typography } from '@mui/material';\r\nimport { styled, alpha } from '@mui/material/styles';\r\n//\r\nimport Iconify from '../iconify';\r\n//\r\nimport RejectionFiles from './errors/RejectionFiles';\r\nimport AvatarPreview from './preview/AvatarPreview';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst StyledDropZone = styled('div')(({ theme }) => ({\r\n width: 144,\r\n height: 144,\r\n margin: 'auto',\r\n display: 'flex',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n borderRadius: '50%',\r\n alignItems: 'center',\r\n position: 'relative',\r\n justifyContent: 'center',\r\n border: `1px dashed ${alpha(theme.palette.grey[500], 0.32)}`,\r\n}));\r\n\r\nconst StyledPlaceholder = styled('div')(({ theme }) => ({\r\n zIndex: 7,\r\n display: 'flex',\r\n borderRadius: '50%',\r\n position: 'absolute',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n width: `calc(100% - 16px)`,\r\n height: `calc(100% - 16px)`,\r\n color: theme.palette.text.disabled,\r\n backgroundColor: theme.palette.background.neutral,\r\n transition: theme.transitions.create('opacity', {\r\n easing: theme.transitions.easing.easeInOut,\r\n duration: theme.transitions.duration.shorter,\r\n }),\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nUploadAvatar.propTypes = {\r\n sx: PropTypes.object,\r\n error: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n helperText: PropTypes.node,\r\n file: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n};\r\n\r\nexport default function UploadAvatar({ error, file, disabled, helperText, sx, ...other }) {\r\n const { getRootProps, getInputProps, isDragActive, isDragReject, fileRejections } = useDropzone({\r\n multiple: false,\r\n disabled,\r\n ...other,\r\n });\r\n\r\n const hasFile = !!file;\r\n\r\n const isError = isDragReject || !!error;\r\n\r\n return (\r\n <>\r\n \r\n \r\n\r\n {hasFile && }\r\n\r\n alpha(theme.palette.grey[900], 0.64),\r\n }),\r\n ...(isError && {\r\n color: 'error.main',\r\n bgcolor: 'error.lighter',\r\n }),\r\n }}\r\n >\r\n \r\n\r\n {file ? 'Update photo' : 'Upload photo'}\r\n \r\n \r\n\r\n {helperText && helperText}\r\n\r\n \r\n \r\n );\r\n}\r\n","// routes\r\nimport { PATH_JOURNAL_MANAGEMENT } from './routes/paths';\r\n\r\n// API\r\n// ----------------------------------------------------------------------\r\n\r\nexport const HOST_API_KEY = process.env.REACT_APP_HOST_API_KEY || '';\r\n\r\nexport const FIREBASE_API = {\r\n apiKey: process.env.REACT_APP_FIREBASE_API_KEY,\r\n authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,\r\n projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,\r\n storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,\r\n messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,\r\n appId: process.env.REACT_APP_FIREBASE_APPID,\r\n measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID,\r\n};\r\n\r\nexport const COGNITO_API = {\r\n userPoolId: process.env.REACT_APP_AWS_COGNITO_USER_POOL_ID,\r\n clientId: process.env.REACT_APP_AWS_COGNITO_CLIENT_ID,\r\n};\r\n\r\nexport const AUTH0_API = {\r\n clientId: process.env.REACT_APP_AUTH0_CLIENT_ID,\r\n domain: process.env.REACT_APP_AUTH0_DOMAIN,\r\n};\r\n\r\nexport const MAP_API = process.env.REACT_APP_MAPBOX_API;\r\n\r\n// ROOT PATH AFTER LOGIN SUCCESSFUL\r\nexport const PATH_AFTER_LOGIN = PATH_JOURNAL_MANAGEMENT.journal.listcv; \r\n// export const PATH_AFTER_LOGIN = PATH_DASHBOARD.user.account; // as '/dashboard/app'\r\n\r\n// LAYOUT\r\n// ----------------------------------------------------------------------\r\n\r\nexport const HEADER = {\r\n H_MOBILE: 64,\r\n H_MAIN_DESKTOP: 88,\r\n H_DASHBOARD_DESKTOP: 92,\r\n H_DASHBOARD_DESKTOP_OFFSET: 92 - 32,\r\n};\r\n\r\nexport const NAV = {\r\n W_BASE: 260,\r\n W_DASHBOARD: 280,\r\n W_DASHBOARD_MINI: 88,\r\n //\r\n H_DASHBOARD_ITEM: 48,\r\n H_DASHBOARD_ITEM_SUB: 36,\r\n //\r\n H_DASHBOARD_ITEM_HORIZONTAL: 32,\r\n};\r\n\r\nexport const ICON = {\r\n NAV_ITEM: 24,\r\n NAV_ITEM_HORIZONTAL: 22,\r\n NAV_ITEM_MINI: 22,\r\n};\r\n","// @mui\r\nimport { useTheme } from '@mui/material/styles';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function useResponsive(query, start, end) {\r\n const theme = useTheme();\r\n\r\n const mediaUp = useMediaQuery(theme.breakpoints.up(start));\r\n\r\n const mediaDown = useMediaQuery(theme.breakpoints.down(start));\r\n\r\n const mediaBetween = useMediaQuery(theme.breakpoints.between(start, end));\r\n\r\n const mediaOnly = useMediaQuery(theme.breakpoints.only(start));\r\n\r\n if (query === 'up') {\r\n return mediaUp;\r\n }\r\n\r\n if (query === 'down') {\r\n return mediaDown;\r\n }\r\n\r\n if (query === 'between') {\r\n return mediaBetween;\r\n }\r\n\r\n return mediaOnly;\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function useWidth() {\r\n const theme = useTheme();\r\n\r\n const keys = [...theme.breakpoints.keys].reverse();\r\n\r\n return (\r\n keys.reduce((output, key) => {\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n const matches = useMediaQuery(theme.breakpoints.up(key));\r\n\r\n return !output && matches ? key : output;\r\n }, null) || 'xs'\r\n );\r\n}\r\n","// @mui\r\nimport { styled, alpha } from '@mui/material/styles';\r\n// utils\r\nimport { bgGradient } from '../../utils/cssStyles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const StyledRoot = styled('main')(() => ({\r\n height: '100%',\r\n display: 'flex',\r\n position: 'relative',\r\n}));\r\n\r\nexport const StyledSection = styled('div')(({ theme }) => ({\r\n display: 'none',\r\n position: 'relative',\r\n [theme.breakpoints.up('md')]: {\r\n flexGrow: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n },\r\n}));\r\n\r\nexport const StyledSectionBg = styled('div')(({ theme }) => ({\r\n ...bgGradient({\r\n color: alpha(theme.palette.background.default, theme.palette.mode === 'light' ? 0.9 : 0.94),\r\n imgUrl: '/assets/background/overlay_2.jpg',\r\n }),\r\n top: 0,\r\n left: 0,\r\n zIndex: -1,\r\n width: '100%',\r\n height: '100%',\r\n position: 'absolute',\r\n transform: 'scaleX(-1)',\r\n}));\r\n\r\nexport const StyledContent = styled('div')(({ theme }) => ({\r\n width: 480,\r\n margin: 'auto',\r\n display: 'flex',\r\n minHeight: '100vh',\r\n justifyContent: 'center',\r\n padding: theme.spacing(15, 8),\r\n [theme.breakpoints.up('md')]: {\r\n flexShrink: 0,\r\n // padding: theme.spacing(30, 8, 0, 8),\r\n },\r\n}));\r\n","import PropTypes from 'prop-types';\r\n// @mui\r\nimport { Typography, Stack } from '@mui/material';\r\n// components\r\nimport Logo from '../../components/logo';\r\nimport Image from '../../components/image';\r\n//\r\nimport { StyledRoot, StyledSectionBg, StyledSection, StyledContent } from './styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nLoginLayout.propTypes = {\r\n title: PropTypes.string,\r\n children: PropTypes.node,\r\n illustration: PropTypes.string,\r\n};\r\n\r\nexport default function LoginLayout({ children, illustration, title }) {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n {title || 'Hi, Welcome back'}\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n {children} \r\n \r\n \r\n );\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport * as Yup from 'yup';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n// form\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\n// @mui\r\nimport { Link, Grid, Stack, Alert, IconButton, InputAdornment, Dialog, DialogTitle, DialogContent, DialogActions, DialogContentText, Card, CardContent, Button, Typography } from '@mui/material';\r\nimport { LoadingButton } from '@mui/lab';\r\n// routes\r\nimport { PATH_AUTH } from '../../routes/paths';\r\n// auth\r\nimport { useAuthContext } from '../../auth/useAuthContext';\r\n// components\r\nimport Iconify from '../../components/iconify';\r\nimport FormProvider, { RHFTextField } from '../../components/hook-form';\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function AuthLoginForm() {\r\n const { login, user } = useAuthContext();\r\n\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const LoginSchema = Yup.object().shape({\r\n username: Yup.string().required('Username is required'),\r\n password: Yup.string().required('Password is required'),\r\n });\r\n\r\n const defaultValues = {\r\n username: '',\r\n password: '',\r\n };\r\n\r\n const methods = useForm({\r\n resolver: yupResolver(LoginSchema),\r\n defaultValues,\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n });\r\n\r\n const {\r\n reset,\r\n setError,\r\n handleSubmit,\r\n clearErrors,\r\n formState: { errors, isSubmitting, isSubmitSuccessful },\r\n } = methods;\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const resp = await login(data.username, 1, data.password);\r\n if (!resp) {\r\n setError('afterSubmit', {\r\n message: 'Invalid username or password.',\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n reset();\r\n setError('afterSubmit', {\r\n ...error,\r\n message: error.message,\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {!!errors.afterSubmit && {errors.afterSubmit.message}}\r\n\r\n \r\n\r\n \r\n setShowPassword(!showPassword)} edge=\"end\">\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n Forgot password?\r\n \r\n \r\n\r\n (theme.palette.mode === 'light' ? 'common.white' : 'grey.800'),\r\n '&:hover': {\r\n bgcolor: 'text.primary',\r\n color: (theme) => (theme.palette.mode === 'light' ? 'common.white' : 'grey.800'),\r\n },\r\n }}\r\n >\r\n Login\r\n \r\n \r\n );\r\n}\r\n","import { Link as RouterLink } from 'react-router-dom';\r\n// @mui\r\nimport { Alert, Tooltip, Stack, Typography, Link, Box } from '@mui/material';\r\n// auth\r\nimport { useAuthContext } from '../../auth/useAuthContext';\r\n// routes\r\nimport { PATH_AUTH } from '../../routes/paths';\r\n// layouts\r\nimport LoginLayout from '../../layouts/login';\r\n//\r\nimport AuthLoginForm from './AuthLoginForm';\r\nimport AuthWithSocial from './AuthWithSocial';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Login() {\r\n const { method } = useAuthContext();\r\n\r\n return (\r\n \r\n \r\n Sign in to Manuscript\r\n Scholarly Journals Management\r\n \r\n New user?\r\n\r\n \r\n Create an account\r\n \r\n \r\n\r\n {/* \r\n \r\n */}\r\n \r\n\r\n {/* \r\n Use email : demo@minimals.cc / password : demo1234\r\n */}\r\n\r\n \r\n\r\n {/* */}\r\n \r\n );\r\n}\r\n","import { Helmet } from 'react-helmet-async';\r\n// sections\r\nimport Login from '../../sections/auth/Login';\r\n// import Login from '../../sections/auth/LoginAuth0';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function LoginPage() {\r\n return (\r\n <>\r\n \r\n Login | Scholarly Journals Management\r\n \r\n\r\n \r\n \r\n );\r\n}\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n authors: [],\r\n coAuthors: [],\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'profile',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET ALL AUTHORS\r\n getAllAuthorsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.authors = action.payload;\r\n },\r\n\r\n // GET ALL CO-AUTHORS\r\n getAllCoAuthorsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.coAuthors = action.payload;\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getAllCoAuthors(userId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Paper_AuthorPaper_ViewRecentCoAuthorList?USERID=${userId}`);\r\n console.log(\"vgscsvs\", `${url}Paper_AuthorPaper_ViewRecentCoAuthorList?USERID=${userId}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getAllCoAuthorsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}","import sum from 'lodash/sum';\r\nimport uniq from 'lodash/uniq';\r\nimport uniqBy from 'lodash/uniqBy';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { devServer } from '../globalSettings';\r\nimport uploader from '../../utils/imgUploader';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n conferenceEvents: [],\r\n // conference Action\r\n conferenceAction: [],\r\n conferenceRole: [],\r\n conferenceCertImage: [],\r\n conferenceActionData: [],\r\n conferenceDetailsActionData: [],\r\n // conference Detail Action\r\n conferenceDetailAction_Image: [],\r\n conferenceDetailAction_Speaker: [],\r\n conferenceDetailAction_Paper: [],\r\n conferenceDetailAction_Package: [],\r\n conferenceDetailAction_Payment: [],\r\n // View Data\r\n conference: [],\r\n conferenceImage: [],\r\n conferencePackage: [],\r\n // Conference Detail\r\n conferenceDetails: null,\r\n conferenceStatus: [],\r\n conferenceStatusAction: [],\r\n // user access\r\n conferenceAssistant: [],\r\n addedAssistant: [],\r\n removedAssistant: [],\r\n // \r\n updatedConferenceStatus: null,\r\n //\r\n userAcceptedInvitation: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'conferenceEvent',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET CONFERENCE EVENTS \r\n getConferenceEventsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceEvents = action.payload;\r\n },\r\n\r\n getConferenceRoleSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceRole = action.payload;\r\n },\r\n\r\n getConferenceCertImageSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceCertImage = action.payload;\r\n },\r\n\r\n getConferenceEndorsedSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conference = action.payload;\r\n },\r\n\r\n getConferenceSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conference = action.payload;\r\n },\r\n\r\n getConferenceImageSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceImage = action.payload;\r\n },\r\n\r\n getConferencePackageSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferencePackage = action.payload;\r\n },\r\n\r\n deleteConferenceSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceAction = action.payload;\r\n },\r\n\r\n updateConferenceSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceActionData = action.payload;\r\n },\r\n\r\n submitConferenceStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceStatusAction = action.payload;\r\n },\r\n\r\n updateConferenceDetailsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceDetailsActionData = action.payload;\r\n },\r\n\r\n clearConferenceDataSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceActionData = [];\r\n state.conference = [];\r\n state.conferenceDetailsActionData = [];\r\n state.conferenceStatusAction = [];\r\n },\r\n\r\n getConferenceDetailsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceDetails = action.payload;\r\n },\r\n\r\n getConferenceStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceStatus = action.payload;\r\n },\r\n\r\n unsubscribeDeleteConference(state, action) {\r\n state.isLoading = false;\r\n state.conferenceAction = [];\r\n },\r\n\r\n getConferenceAssistantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.conferenceAssistant = action.payload;\r\n },\r\n\r\n addConferenceAssistantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.addedAssistant = action.payload;\r\n },\r\n\r\n removeConferenceAssistantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.removedAssistant = action.payload;\r\n },\r\n\r\n updateConferenceStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updatedConferenceStatus = action.payload;\r\n },\r\n\r\n unsubscribeUpdateConference(state, action) {\r\n state.isLoading = false;\r\n state.updatedConferenceStatus = null;\r\n },\r\n\r\n userAcceptedInvitationSuccess(state, action) {\r\n state.isLoading = false;\r\n state.userAcceptedInvitation = action.payload;\r\n },\r\n unsubscribeConference(state, action) {\r\n state.isLoading = false;\r\n state.conference = [];\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const {\r\n getConferenceEventsSuccess,\r\n unsubscribeDeleteConference,\r\n} = slice.actions;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function fetchConferenceEvents() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${devServer}Paper_ReviewerUpdateReview`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.sendReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function viewConferenceRole() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceRole`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceRoleSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function viewConferenceCertImage() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceCertFrameImage`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceCertImageSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\nexport function viewEndorsedConference(packageInd, ImgInd, paperInd, paymentInd, speakerInd, participantInd, dashboardInd) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewEndorsedConference?CONFERENCEPACKAGEIND=${packageInd}&CONFERENCEIMAGEIND=${ImgInd}&CONFERENCEPAPERIND=${paperInd}&CONFERENCEPAYMENTINFOIND=${paymentInd}&CONFERENCESPEAKERIND=${speakerInd}&CONFERENCEPARTICIPANTIND=${participantInd}&CONFERENCEDASHBOARDIND=${dashboardInd}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceEndorsedSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function viewHistoryConference(userId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceHistoryByUserID?USERID=${userId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function viewConference(id, userId, packageInd, ImgInd, paperInd, paymentInd, speakerInd, participantInd, dashboardInd,CONFERENCEPARTNERSHIPIND) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConference?CONFERENCEID=${id}&USERID=${userId}&CONFERENCEPACKAGEIND=${packageInd}&CONFERENCEIMAGEIND=${ImgInd}&CONFERENCEPAPERIND=${paperInd}&CONFERENCEPAYMENTINFOIND=${paymentInd}&CONFERENCESPEAKERIND=${speakerInd}&CONFERENCEPARTICIPANTIND=${participantInd}&CONFERENCEDASHBOARDIND=${dashboardInd}&CONFERENCEPARTNERSHIPIND=${CONFERENCEPARTNERSHIPIND}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function viewConference_Image(id) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceImage?CONFERENCEID=${id}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceImageSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function viewConference_Package(id) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferencePackage?CONFERENCEID=${id}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferencePackageSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ------------------------------- STAGE 1 ---------------------------------------\r\n\r\nexport function addConference(name, description, theme, obj, field, website, imgInd, images, createdBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_AddConference?CONFERENCENAME=${name}&CONFERENCEDESCRIPTION=${description}&CONFERENCETHEME=${theme}&CONFERENCEOBJECTIVE=${obj}&CONFERENCERELATEDFIELD=${field}&CONFERENCEWEBSITE=${website}&CONFERENCEIMAGEIND=${imgInd}&CONFERENCEFILEURL=${images.filenames}&CREATEDBY=${createdBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n if (images.filenames[0] !== \"\") {\r\n const resp = await uploader(images.files, images.filenames, 'conferenceImage', JSON.parse(data.ReturnData)[0].ConferenceID);\r\n if (!resp) {\r\n dispatch(slice.actions.hasError('Error uploading image'));\r\n return;\r\n }\r\n }\r\n\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function addConferenceWithPricing(id, createdBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_AddConferenceWithPricingID?CONFERENCEPRICINGID=${id}&CREATEDBY=${createdBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function deleteConference_Image(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferenceImage?CONFERENCEIMAGEID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function addConference_Image(id, images, createdBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_AddConferenceImage?CONFERENCEID=${id}&&CONFERENCEFILEURL=${images.filenames}&CREATEDBY=${createdBy}`\r\n )\r\n console.log(\"fasdfaedfas\", `${url}Conference_AddConferenceImage?CONFERENCEID=${id}&&CONFERENCEFILEURL=${images.filenames}&CREATEDBY=${createdBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n const resp = await uploader(images.files, images.filenames, 'conferenceImage', id);\r\n if (!resp) {\r\n dispatch(slice.actions.hasError('Error uploading image'));\r\n return;\r\n }\r\n\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function updateConferenceConfirmation(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferenceConfirmation?CONFERENCEID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.submitConferenceStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function updateConferenceLogo(id, logo, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferenceLogo?CONFERENCEID=${id}&CONFERENCELOGO=${logo}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function updateConference_Stage1(id, name, logo, description, theme, obj, field, website, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage1?CONFERENCEID=${id}&CONFERENCENAME=${name}&CONFERENCELOGO=${logo}&CONFERENCEDESCRIPTION=${description}&CONFERENCETHEME=${theme}&CONFERENCEOBJECTIVE=${obj}&CONFERENCERELATEDFIELD=${field}&CONFERENCEWEBSITE=${website}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ------------------------------- STAGE 2 ---------------------------------------\r\n\r\nexport function updateConference_Stage2(id, beginDate, endDate, registerBeginDate, registerEndDate, location, info, virtual, type, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage2?CONFERENCEID=${id}&CONFERENCEBEGINDATE=${beginDate}&CONFERENCEENDDATE=${endDate}&CONFERENCEREGISTRATIONBEGINDATE=${registerBeginDate}&CONFERENCEREGISTRATIONENDDATE=${registerEndDate}&CONFERENCELOCATION=${location}&CONFERENCELOCATIONINFO=${info}&CONFERENCEVIRTUALLINK=${virtual}&CONFERENCETYPE=${type}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ------------------------------- STAGE 3 ---------------------------------------\r\n\r\nexport function updateConference_Stage3(id, name, email, contact, website, CONFERENCEORGANISERPIC, CONFERENCEORGANISERPICEMAIL, CONFERENCEORGANISERPICCONTACT, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const encodedWebsite = encodeURIComponent(website);\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage3?CONFERENCEID=${id}&CONFERENCEORGANISERNAME=${name}&CONFERENCEORGANISEREMAIL=${email}&CONFERENCEORGANISERCONTACT=${contact}&CONFERENCEORGANISERWEBSITE=${encodedWebsite}&CONFERENCEORGANISERPIC=${CONFERENCEORGANISERPIC}&CONFERENCEORGANISERPICEMAIL=${CONFERENCEORGANISERPICEMAIL}&CONFERENCEORGANISERPICCONTACT=${CONFERENCEORGANISERPICCONTACT}&MODIFIEDBY=${modifyBy}`\r\n )\r\n console.log(\"adawda\", `${url}Conference_UpdateConference_Stage3?CONFERENCEID=${id}&CONFERENCEORGANISERNAME=${name}&CONFERENCEORGANISEREMAIL=${email}&CONFERENCEORGANISERCONTACT=${contact}&CONFERENCEORGANISERWEBSITE=${encodedWebsite}&CONFERENCEORGANISERPIC=${CONFERENCEORGANISERPIC}&CONFERENCEORGANISERPICEMAIL=${CONFERENCEORGANISERPICEMAIL}&CONFERENCEORGANISERPICCONTACT=${CONFERENCEORGANISERPICCONTACT}&MODIFIEDBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ---------------------------------- STAGE 4 ------------------------------------\r\n\r\nexport function updateConference_Stage4(id, speakerInd, speaker, speakerAffiliation, roleId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage4?CONFERENCEID=${id}&CONFERENCESPEAKERIND=${speakerInd}&CONFERENCESPEAKER=${speaker}&CONFERENCESPEAKERAFFILIATION=${speakerAffiliation}&CONFERENCEROLEID=${roleId}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function updateConference_Speaker(id, speakerId, speaker, speakerAffiliation, roleId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferenceSpeaker?CONFERENCEID=${id}&CONFERENCESPEAKERID=${speakerId}&CONFERENCESPEAKER=${speaker}&CONFERENCESPEAKERAFFILIATION=${speakerAffiliation}&CONFERENCEROLEID=${roleId}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteConference_Speaker(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferenceSpeaker?CONFERENCESPEAKERID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// --------------------------------- STAGE 5 -------------------------------------\r\n\r\nexport function updateConference_Stage5(id, submissionInd, paperName, topic, guideline, wordLimit, submissionDate, notificationDate, finalSubmissionDate, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage5?CONFERENCEID=${id}&CONFERENCEPAPERSUBMISSIONIND=${submissionInd}&CONFERENCEPAPER=${paperName}&CONFERENCETOPICNAME=${topic}&CONFERENCEPAPERGUIDELINE=${guideline}&CONFERENCEPAPERWORDLIMIT=${wordLimit}&CONFERENCEPAPERSUBMISSIONDATE=${submissionDate}&CONFERENCEPAPERNOTIFICATIONDATE=${notificationDate}&CONFERENCEPAPERFINALSUBMISSIONDATE=${finalSubmissionDate}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n\r\n const data = JSON.parse(json)[0];\r\n\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function updateConference_Paper(id, paperId, paperName, topic, guideline, wordLimit, submissionDate, notificationDate, finalSubmissionDate, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferencePaper?CONFERENCEID=${id}&CONFERENCEPAPERID=${paperId}&CONFERENCEPAPER=${paperName}&CONFERENCETOPICNAME=${topic}&CONFERENCEPAPERGUIDELINE=${guideline}&CONFERENCEPAPERWORDLIMIT=${wordLimit}&CONFERENCEPAPERSUBMISSIONDATE=${submissionDate}&CONFERENCEPAPERNOTIFICATIONDATE=${notificationDate}&CONFERENCEPAPERFINALSUBMISSIONDATE=${finalSubmissionDate}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteConference_Paper(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferencePaper?CONFERENCEPAPERID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ------------------------------- STAGE 6---------------------------------------\r\n\r\n\r\nexport function updateConference_Stage6(id, packageInd, packageName, price, startDate, endDate, paxLimit, curency, conferenceprice, convertCurrency, convertConferencePrice, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage6?CONFERENCEID=${id}&CONFERENCEPACKAGEIND=${packageInd}&CONFERENCEPACKAGENAME=${packageName}&CONFERENCEPRICE=${price}&CONFERENCEPACKAGESTARTDATE=${startDate}&CONFERENCEPACKAGEENDDATE=${endDate}&CONFERENCEPAXLIMIT=${paxLimit}&CURRENCY=${curency}&CONFERENCEPACKAGEPRICE=${conferenceprice}&CONVERTEDCURRENCY=${convertCurrency}&CONVERTEDCONFERENCEPACKAGEPRICE=${convertConferencePrice}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function updateConference_Package(id, packageId, packageName, price, startDate, endDate, paxLimit, curency, conferenceprice, convertCurrency, convertConferencePrice, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferencePackage?CONFERENCEID=${id}&CONFERENCEPACKAGEID=${packageId}&CONFERENCEPACKAGENAME=${packageName}&CONFERENCEPRICE=${price}&CONFERENCEPACKAGESTARTDATE=${startDate}&CONFERENCEPACKAGEENDDATE=${endDate}&CONFERENCEPAXLIMIT=${paxLimit}&CURRENCY=${curency}&CONFERENCEPACKAGEPRICE=${conferenceprice}&CONVERTEDCURRENCY=${convertCurrency}&CONVERTEDCONFERENCEPACKAGEPRICE=${convertConferencePrice}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteConference_Package(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferencePackage?CONFERENCEPACKAGEID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ------------------------------- STAGE 7 ---------------------------------------\r\n\r\nexport function updateConference_Stage7(id, paymentInd, PERSONINCHARGE, PERSONINCHARGEEMAIL, PERSONINCHARGECONTACT, PERSONINCHARGEREMARK, bankName, accountHolder, accountNumber, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage7?CONFERENCEID=${id}&CONFERENCEPAYMENTINFOIND=${paymentInd}&PERSONINCHARGE=${PERSONINCHARGE}&PERSONINCHARGEEMAIL=${PERSONINCHARGEEMAIL}&PERSONINCHARGECONTACT=${PERSONINCHARGECONTACT}&PERSONINCHARGEREMARK=${PERSONINCHARGEREMARK}&BANKNAME=${bankName}&ACCOUNTHOLDER=${accountHolder}&ACCOUNTNUMBER=${accountNumber}&MODIFIEDBY=${modifyBy}`\r\n )\r\n console.log(\"fgsdfsfdfds\", `${url}Conference_UpdateConference_Stage7?CONFERENCEID=${id}&CONFERENCEPAYMENTINFOIND=${paymentInd}&PERSONINCHARGE=${PERSONINCHARGE}&PERSONINCHARGEEMAIL=${PERSONINCHARGEEMAIL}&PERSONINCHARGECONTACT=${PERSONINCHARGECONTACT}&PERSONINCHARGEREMARK=${PERSONINCHARGEREMARK}&BANKNAME=${bankName}&ACCOUNTHOLDER=${accountHolder}&ACCOUNTNUMBER=${accountNumber}&MODIFIEDBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function updateConference_Payment(id, paymentId, bankName, accountHolder, accountNumber, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferencePaymentInfo?CONFERENCEID=${id}&CONFERENCEPAYMENTINFOID=${paymentId}&BANKNAME=${bankName}&ACCOUNTHOLDER=${accountHolder}&ACCOUNTNUMBER=${accountNumber}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteConference_Payment(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferencePaymentInfo?CONFERENCEPAYMENTINFOID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteConference_PaymentCurrency(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferencePackageCurrency?CONFERENCEPACKAGECURRENCYID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ------------------------------- STAGE 7 ---------------------------------------\r\n\r\n\r\nexport function updateConference_Stage8(id, pricingId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage8?CONFERENCEID=${id}&CONFERENCEPRICINGID=${pricingId}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ------------------------------- STAGE 9 ---------------------------------------\r\n\r\n\r\nexport function updateConference_Stage9(id, size, background, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage9?CONFERENCEID=${id}&CONFERENCENAMEBADGESIZE=${size}&CONFERENCENAMEBADGEBACKGROUNDIMAGE=${background}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function updateConference_Stage10(id, frameType, signature, name, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage10?CONFERENCEID=${id}&CONFERENCETYPEOFFRAME=${frameType}&CONFERENCECERTSIGNATUREIMAGE=${signature}&CONFERENCECERTSIGNATURENAME=${name}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function updateConference_Stage11(id, CONFERENCEPARTNERSHIPIND, CONFERENCEPARTNERSHIP, CONFERENCEPARTNERSHIPLOGO, CONFERENCEPARTNERSHIPCATEGORY, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConference_Stage11?CONFERENCEID=${id}&CONFERENCEPARTNERSHIPIND=${CONFERENCEPARTNERSHIPIND}&CONFERENCEPARTNERSHIP=${CONFERENCEPARTNERSHIP}&CONFERENCEPARTNERSHIPLOGO=${CONFERENCEPARTNERSHIPLOGO}&CONFERENCEPARTNERSHIPCATEGORY=${CONFERENCEPARTNERSHIPCATEGORY}&MODIFIEDBY=${modifyBy}`\r\n )\r\n console.log(\"gfhfh\", `${url}Conference_UpdateConference_Stage11?CONFERENCEID=${id}&CONFERENCEPARTNERSHIPIND=${CONFERENCEPARTNERSHIPIND}&CONFERENCEPARTNERSHIP=${CONFERENCEPARTNERSHIP}&CONFERENCEPARTNERSHIPLOGO=${CONFERENCEPARTNERSHIPLOGO}&CONFERENCEPARTNERSHIPCATEGORY=${CONFERENCEPARTNERSHIPCATEGORY}&MODIFIEDBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteConference_Partnership(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferencePartnership?CONFERENCEPARTNERSHIPID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function deleteConference(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConference?CONFERENCEID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteConferenceSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function clearConferenceData() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n dispatch(slice.actions.clearConferenceDataSuccess());\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getConferenceDetails(id, userId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceDashboard?CONFERENCEID=${id}&USERID=${userId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getConferenceDetailsSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getConferenceStatus(id, userId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}General_ViewConferenceStatus`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 0) {\r\n dispatch(slice.actions.getConferenceStatusSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getConferenceAssistant(id) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceUserAccess?CONFERENCEID=${id}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data) {\r\n dispatch(slice.actions.getConferenceAssistantSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function addConferenceAssistant(id, email, roleId, createdBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_AddConferenceUserAccess?CONFERENCEID=${id}&USEREMAIL=${email}&CONFERENCEROLEID=${roleId}&CREATEDBY=${createdBy}`\r\n )\r\n console.log(\"svsbsse\", `${url}Conference_AddConferenceUserAccess?CONFERENCEID=${id}&USEREMAIL=${email}&CONFERENCEROLEID=${roleId}&CREATEDBY=${createdBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.addConferenceAssistantSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteConferenceAssistant(id, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferenceUserAccess?CONFERENCEUSERACCESSID=${id}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.removeConferenceAssistantSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateConferenceStatus(id, statusId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferenceStatus?CONFERENCEID=${id}&CONFERENCESTATUSID=${statusId}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateConferenceStatusSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function userAcceptAction({ id, userId, statusId, modifyBy }) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferenceUserAccessStatus?CONFERENCEID=${id}&USERID=${userId}&USERSTATUSID=${statusId}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data) {\r\n dispatch(slice.actions.userAcceptActionSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function unsubscribeViewConference() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeConference());\r\n };\r\n}\r\n\r\nexport function unsubscribeUpdateConference() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeUpdateConference());\r\n }\r\n}","import sum from 'lodash/sum';\r\nimport uniq from 'lodash/uniq';\r\nimport uniqBy from 'lodash/uniqBy';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n formTypes: [],\r\n\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'formStructure',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET CONFERENCE EVENTS \r\n getFormTypes(state, action) {\r\n state.isLoading = false;\r\n state.formTypes = action.payload;\r\n },\r\n\r\n\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const {\r\n getFormTypes,\r\n} = slice.actions;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function fetchFormTypes() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}General_ViewAnswerType`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getFormTypes(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\n\r\n// const projectId = 1;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n journalsbyUser: null,\r\n manuscriptReturn: null,\r\n updatejournal: null,\r\n deletejournal: null,\r\n deleteauthor: null,\r\n deletefile: null,\r\n status: [],\r\n endorsedJournal: [],\r\n submission: {\r\n activeStep: 0,\r\n papertype: '',\r\n special: null,\r\n presented: null,\r\n title: '',\r\n abstract: '',\r\n inspiration: '',\r\n //\r\n files: [],\r\n designations: [],\r\n //\r\n keywords: [],\r\n categories: [],\r\n //\r\n isAuthor: null,\r\n isCoAuthor: null,\r\n coAuthors: [],\r\n //\r\n coverLetter: '',\r\n isFunding: null,\r\n funding: [],\r\n isSubmittedPreviously: null,\r\n fundingComment: \"\",\r\n manuscriptId: '',\r\n noOfTables: 0,\r\n noOfFigures: 0,\r\n noOfWords: 0,\r\n paymentOption: null,\r\n figureDesignation: null,\r\n summary: '',\r\n declaration: [],\r\n },\r\n typeOfPaper: [\r\n { label: 'Guest Editorial', value: '1', desc: '' },\r\n { label: 'Corrigendum', value: '2', desc: '' },\r\n { label: 'Original Research', value: '3', desc: 'Report of original research findings and data should include information, Methods, Results' },\r\n { label: 'Industry Article', value: '4', desc: 'A report from industrial-based scientists undertaking R&D on a new technology' },\r\n { label: 'Case Study', value: '5', desc: 'Report on specific instance of an interesting or particular phenomena' },\r\n { label: 'Comment', value: '6', desc: 'Critique of already published paper.' },\r\n ],\r\n designations: [],\r\n step1Result: null,\r\n step2Result: null,\r\n step3Result: null,\r\n step4Result: null,\r\n step5Result: null,\r\n step6Result: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'journal',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // BACK STEP\r\n backStep(state) {\r\n state.submission.activeStep -= 1;\r\n },\r\n\r\n // NEXT STEP\r\n nextStep(state) {\r\n state.submission.activeStep += 1;\r\n },\r\n\r\n // RESET STEP\r\n resetStep(state) {\r\n state.submission.activeStep = 0;\r\n },\r\n\r\n // GO TO STEP\r\n goToStep(state, action) {\r\n state.submission.activeStep = action.payload;\r\n },\r\n\r\n // UPDATE PAPER INTRO\r\n updatePaperIntro(state, action) {\r\n state.submission.papertype = action.payload.papertype;\r\n state.submission.special = action.payload.special;\r\n state.submission.presented = action.payload.presented;\r\n state.submission.title = action.payload.title;\r\n state.submission.abstract = action.payload.abstract;\r\n state.submission.inspiration = action.payload.inspiration;\r\n },\r\n\r\n // UPDATE FILE UPLOAD\r\n updateFileUpload(state, action) {\r\n state.submission.files = action.payload.files;\r\n state.submission.designations = action.payload.designations;\r\n },\r\n\r\n // UPDATE ATTRIBUTES\r\n updateAttributes(state, action) {\r\n state.submission.keywords = action.payload.keywords;\r\n state.submission.categories = action.payload.categories;\r\n },\r\n\r\n // UPDATE AUTHOR & INSTITUTION\r\n updateAuthorInstitution(state, action) {\r\n state.submission.isAuthor = action.payload.isAuthor;\r\n state.submission.isCoAuthor = action.payload.isCoAuthor;\r\n state.submission.coAuthors = action.payload.coAuthors;\r\n },\r\n\r\n // UPDATE DETAILS & COMMENTS\r\n updateDetailComment(state, action) {\r\n state.submission.coverLetter = action.payload.coverLetter;\r\n state.submission.isFunding = action.payload.isFunding;\r\n state.submission.funding = action.payload.fundings;\r\n state.submission.isSubmittedPreviously = action.payload.isSubmittedPreviously;\r\n state.submission.fundingComment = action.payload.fundingComment;\r\n state.submission.manuscriptId = action.payload.manuscriptId;\r\n state.submission.noOfTables = action.payload.noOfTables;\r\n state.submission.noOfFigures = action.payload.noOfFigures;\r\n state.submission.noOfWords = action.payload.noOfWords;\r\n state.submission.paymentOption = action.payload.paymentOption;\r\n state.submission.figureDesignation = action.payload.figureDesignation;\r\n state.submission.summary = action.payload.summary;\r\n state.submission.declaration = action.payload.declaration;\r\n },\r\n\r\n // GET JOURNAL\r\n getJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.journalsbyUser = action.payload;\r\n },\r\n\r\n // GET JOURNAL STATUS\r\n getJournalStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.status = action.payload;\r\n },\r\n\r\n // ADD MANUSCRIPT\r\n addManuscriptSuccess(state, action) {\r\n state.isLoading = false;\r\n state.manuscriptReturn = action.payload;\r\n },\r\n\r\n // UPDATE JOURNAL\r\n updateJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updatejournal = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE UPDATE JOURNAL\r\n unsubscribeUpdateJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updatejournal = null;\r\n },\r\n\r\n // DELETE JOURNAL\r\n deleteJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deletejournal = action.payload;\r\n },\r\n\r\n // DELETE CO-AUTHOR FROM JOURNAL\r\n deleteCoAuthorFromJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteauthor = action.payload;\r\n },\r\n\r\n // DELETE FILE FROM SUBMISSION\r\n deleteFileSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deletefile = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE ADD JOURNAL\r\n unsubscrbeAddManuscriptSuccess(state, action) {\r\n state.isLoading = false;\r\n state.manuscriptReturn = null;\r\n },\r\n\r\n unsubscribeDeleteJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deletejournal = null;\r\n },\r\n\r\n // GET DESIGNATIONS\r\n getDesignationsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.designations = action.payload;\r\n },\r\n\r\n getEndorsedJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.endorsedJournal = action.payload;\r\n },\r\n\r\n // RESET FILES\r\n resetFiles(state) {\r\n state.submission.files = [];\r\n },\r\n\r\n // RESET STATES\r\n resetState(state) {\r\n state.submission = { ...initialState.submission };\r\n },\r\n\r\n // STEP 1 RESULT\r\n getStep1ResultSuccess(state, action) {\r\n state.step1Result = action.payload;\r\n },\r\n\r\n // STEP 2 RESULT\r\n getStep2ResultSuccess(state, action) {\r\n state.step2Result = action.payload;\r\n },\r\n\r\n // STEP 3 RESULT\r\n getStep3ResultSuccess(state, action) {\r\n state.step3Result = action.payload;\r\n },\r\n\r\n // STEP 4 RESULT\r\n getStep4ResultSuccess(state, action) {\r\n state.step4Result = action.payload;\r\n },\r\n\r\n // STEP 5 RESULT\r\n getStep5ResultSuccess(state, action) {\r\n state.step5Result = action.payload;\r\n },\r\n\r\n // STEP 6 RESULT\r\n getStep6ResultSuccess(state, action) {\r\n state.step6Result = action.payload;\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const {\r\n backStep,\r\n nextStep,\r\n resetStep,\r\n goToStep,\r\n updatePaperIntro,\r\n updateFileUpload,\r\n updateAttributes,\r\n updateAuthorInstitution,\r\n updateDetailComment,\r\n unsubscrbeAddManuscriptSuccess,\r\n unsubscribeUpdateJournalSuccess,\r\n unsubscribeDeleteJournalSuccess,\r\n resetFiles,\r\n resetState,\r\n} = slice.actions;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getJournal(userId, project, journalId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperListByUserID?USERID=${userId}&PROJECTID=${project}&JOURNALID=${journalId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getConferencePaperList(userId, paperId, conferenceId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_ConferencePaperListByUserID?USERID=${userId}&PAPERID=${paperId}&CONFERENCEID=${conferenceId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getJournalStatus() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}General_View_PaperStatus`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getJournalStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function addManuscript(userId, conferenceId, project, journalId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperAdd?USERID=${userId}&PROJECTID=${project}&CONFERENCEID=${conferenceId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.addManuscriptSuccess(JSON.parse(data.ReturnData)[0]));\r\n getJournal(userId, project, journalId)(dispatch);\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateJournal(paperId, paperStatusId, parentPaperId, values, modifyBy, resubmissionInd, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate?PAPERID=${paperId}&PAPERTYPE=${values.papertype}&PAPERCATEGORY=${values.categories}&PAPERKEYWORD=${values.keywords}&PAPERTITLE=${values.title}&PAPERABSTRACT=${values.abstract}&PAPERCOVERLETTER=${values.coverLetter}&PAPERPURPOSE=${values.inspiration}&PAPERSUMMARY=${values.summary}&PAPERSPECIALISSUE=${values.special}&ISFUNDING=${values.isFunding}&PAPERPAYMENT=${values.paymentOption}&PAPERFIGURENO=${values.noOfFigures}&PAPERTABLENO=${values.noOfTables}&PAPERWORDNO=${values.noOfWords}&ISRESUBMISSION=${resubmissionInd}&ISPAPERORIGINAL=${values.presented}&PAPERSTATUSID=${paperStatusId}&DRAFTPAPERSTAGE=${values.activeStep}&PARENTPAPERID=${parentPaperId}&PROJECTID=${projectId}&ISPAPERSUBMIT=${values.isPaperSubmit}&MODIFYBY=${modifyBy}&COAUTHOREMAIL=${values.coAuthors}&PAPERFILEDESIGNATIONID=${values.designations}&PAPERFILEURL=${values.fileName}&PAPERFILETYPE=${values.fileType}&ISSUBMITAGENT=${values.isAuthor}&ISCOAUTHOREXIST=${values.isCoAuthor}&FUNDINGSOURCE=${values.fundingComment}&FIGUREDESTINATION=${values.figureDesignation}&DECLARATIONID=${values.declaration}&FUNDERNAME=${values.funders}&GRANTREFERENCE=${values.refNo}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateJournalSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function unsubscribeUpdateJournal() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeUpdateJournalSuccess());\r\n };\r\n}\r\n\r\nexport function unsubscribeAddJournal() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscrbeAddManuscriptSuccess());\r\n };\r\n}\r\n\r\nexport function unsubscribeUpdateProfile() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeDeleteJournalSuccess());\r\n };\r\n }\r\n \r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteJournal(paperID, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperDelete?PAPERID=${paperID}&MODIFYBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteCoAuthorFromJournal(paperAuthorID, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_AuthorListDelete?PAPERAUTHORID=${paperAuthorID}&MODIFYBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteCoAuthorFromJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteFile(paperFileID, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_FileDelete?PAPERFILEID=${paperFileID}&MODIFYBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteFileSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n// change journalsbyUser in reducer locally\r\n\r\n// only used when the data in database is updated\r\n\r\nexport function setJournalListing(ori_listing) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n if (ori_listing && ori_listing.length >= 1) {\r\n dispatch(slice.actions.getJournalSuccess(ori_listing));\r\n } else {\r\n dispatch(slice.actions.hasError(\"Delete file error\"));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getDesignations() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}General_ViewFileDesignation`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getDesignationsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getEndorsedJournal() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_ViewEndorsedJournal`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getEndorsedJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStep1Result(values, projectId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate_Stage1?PAPERID=${values.paperId}&PAPERTYPE=${values.papertype}&JOURNALID=${values.journal}&PAPERSPECIALISSUE=${values.special}&ISPAPERORIGINAL=${values.presented}&PAPERTITLE=${values.title}&PAPERABSTRACT=${values.abstract}&PAPERPURPOSE=${values.inspiration}&PARENTPAPERID=${values.parentPaperId}&CONFERENCEPAPERID=${values.conferencePaperId}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n )\r\n console.log(\"gdtiojsgiW\", `${url}Paper_AuthorPaper_PaperUpdate_Stage1?PAPERID=${values.paperId}&PAPERTYPE=${values.papertype}&JOURNALID=${values.journal}&PAPERSPECIALISSUE=${values.special}&ISPAPERORIGINAL=${values.presented}&PAPERTITLE=${values.title}&PAPERABSTRACT=${values.abstract}&PAPERPURPOSE=${values.inspiration}&PARENTPAPERID=${values.parentPaperId}&CONFERENCEPAPERID=${values.conferencePaperId}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(JSON.parse(data.ReturnData)[0]);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStep1ResultSuccess(JSON.parse(data.ReturnData)[0]));\r\n return true;\r\n }\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n return false;\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n return false;\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStep2Result(values, currentJournal, projectId, modifyBy) {\r\n // author submission url : `${url}Paper_AuthorPaper_PaperUpdate_Stage2?PAPERID=${currentJournal.PaperID}&PAPERFILEDESIGNATIONID=${values.designations}&PAPERFILEURL=${values.files}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n\r\n\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate_Stage2?PAPERID=${values.PaperID}&PAPERFILEDESIGNATIONID=${values.designations}&PAPERFILEURL=${values.files}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStep2ResultSuccess(JSON.parse(data.ReturnData)[0]));\r\n return true;\r\n }\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n return false;\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n return false;\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStep3Result(values, projectId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate_Stage3?PAPERID=${values.paperId}&PAPERCATEGORY=${values.categories}&PAPERKEYWORD=${values.keywords}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n )\r\n console.log(\"hhgjghjgjh\", `${url}Paper_AuthorPaper_PaperUpdate_Stage3?PAPERID=${values.paperId}&PAPERCATEGORY=${values.categories}&PAPERKEYWORD=${values.keywords}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStep3ResultSuccess(JSON.parse(data.ReturnData)[0]));\r\n return true;\r\n }\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n return false;\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n console.log(\"fsfs\", error)\r\n return false;\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStep4Result(values, projectId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate_Stage4?PAPERID=${values.paperId}&ISSUBMITAGENT=${values.isSubmitAgent}&ISCOAUTHOREXIST=${values.isCoAuthor}&COAUTHOREMAIL=${values.coAuthorEmail}&COAUTHORNAME=${values.coAuthorName}&COAUTHORINSTITUTE=${values.coAuthorInstitution}&COPREFIX=${values.COPREFIX}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n )\r\n console.log(\"kjdlasd\", `${url}Paper_AuthorPaper_PaperUpdate_Stage4?PAPERID=${values.paperId}&ISSUBMITAGENT=${values.isSubmitAgent}&ISCOAUTHOREXIST=${values.isCoAuthor}&COAUTHOREMAIL=${values.coAuthorEmail}&COAUTHORNAME=${values.coAuthorName}&COAUTHORINSTITUTE=${values.coAuthorInstitution}&COPREFIX=${values.COPREFIX}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStep4ResultSuccess(JSON.parse(data.ReturnData)[0]));\r\n return true;\r\n }\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n return false;\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n return false;\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStep5Result(values, projectId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate_Stage5?PAPERID=${values.paperId}&PAPERCOVERLETTER=${values.coverLetter}&ISFUNDING=${values.isFunding}&PAPERPAYMENT=${values.paymentOption}&PAPERFIGURENO=${values.noOfFigures}&PAPERTABLENO=${values.noOfTables}&PAPERWORDNO=${values.noOfWords}&FUNDINGSOURCE=${values.fundingComment}&FIGUREDESTINATION=${values.figureDesignation}&PAPERSUMMARY=${values.summary}&DECLARATIONID=${values.declaration}&FUNDERNAME=${values.funders}&GRANTREFERENCE=${values.refNo}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStep5ResultSuccess(JSON.parse(data.ReturnData)[0]));\r\n return true;\r\n }\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n return false;\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n return false;\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStep6Result(values, projectId, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperUpdate_Stage6?PAPERID=${values.paperId}&ISPAPERSUBMIT=${values.isPaperSubmit}&PROJECTID=${projectId}&MODIFYBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStep6ResultSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function userAcceptAction({ id, userId, statusId, modifyBy }) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_UpdateJournalUserAccessStatus?JOURNALID=${id}&USERID=${userId}&USERSTATUSID=${statusId}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data) {\r\n dispatch(slice.actions.userAcceptActionSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}","import keyBy from 'lodash/keyBy';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n// ----------------------------------------------------------------------\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n mails: { byId: {}, allIds: [] },\r\n mailTemplates:[],\r\n mailTemplateByID:[],\r\n returnReviewMailTemplate:[],\r\n mailDefault:[],\r\n emailPlaceholder:[],\r\n labels: [],\r\n filterMail:[],\r\n returnReviewAction: []\r\n\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'mail',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET LABELS\r\n getLabelsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.labels = action.payload;\r\n },\r\n\r\n // GET MAILS\r\n getMailsSuccess(state, action) {\r\n const mails = action.payload;\r\n state.mails.byId = keyBy(mails[0], 'id');\r\n state.mails.allIds = Object.keys(state.mails.byId);\r\n },\r\n\r\n // GET MAIL\r\n getMailSuccess(state, action) {\r\n const mail = action.payload;\r\n\r\n state.mails.byId[mail.id] = mail;\r\n if (!state.mails.allIds.includes(mail.id)) {\r\n state.mails.allIds.push(mail.id);\r\n }\r\n },\r\n\r\n getMailsTemplateSuccess(state, action) {\r\n // const mails = action.payload;\r\n state.isLoading = false;\r\n state.mailTemplates = action.payload;\r\n // state.mails.byId = keyBy(mails[0], 'id');\r\n // state.mails.allIds = Object.keys(state.mails.byId);\r\n }, \r\n \r\n getMailsTemplateByIDSuccess(state, action) {\r\n // const mails = action.payload;\r\n state.isLoading = false;\r\n state.mailTemplateByID = action.payload;\r\n }, \r\n\r\n getReturnReviewMailsTemplateSuccess(state, action) {\r\n // const mails = action.payload;\r\n state.isLoading = false;\r\n state.returnReviewMailTemplate = action.payload;\r\n },\r\n\r\n getDefaultMailsTemplateSuccess(state, action) {\r\n state.isLoading = false;\r\n state.mailDefault = action.payload;\r\n },\r\n\r\n editorReturnReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.returnReviewAction = action.payload;\r\n },\r\n\r\n getMailByFilter(state, action) {\r\n state.isLoading = false;\r\n state.filterMail = action.payload;\r\n },\r\n \r\n getEmailPlaceHolderOptionsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.emailPlaceholder = action.payload;\r\n // console.log(\"action.payload\",action.payload)\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getLabels() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await axios.get('/api/mail/labels');\r\n dispatch(slice.actions.getLabelsSuccess(response.data.labels));\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------=\r\nexport function getMailsTemplate() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_EmailTemplate_ViewTemplateByID?PROJECTID=${PROJECTID}&EMAILTEMPLATEID=${0}&ISEDITTEMPLATE=${1}&PAPERID=${0}&TASKID=${0}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getMailsTemplateSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getMailsTemplateByID(emailTemplateId, paperId, taskId, isEditTemplate) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_EmailTemplate_ViewTemplateByID?PROJECTID=${PROJECTID}&EMAILTEMPLATEID=${emailTemplateId}&PAPERID=${paperId}&TASKID=${taskId}&ISEDITTEMPLATE=${isEditTemplate}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getMailsTemplateByIDSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getReturnReviewMailsTemplate(emailTemplateId, paperId, taskId, isEditTemplate) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_EmailTemplate_ViewTemplateByID?PROJECTID=${PROJECTID}&EMAILTEMPLATEID=${emailTemplateId}&PAPERID=${paperId}&TASKID=${taskId}&ISEDITTEMPLATE=${isEditTemplate}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getReturnReviewMailsTemplateSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function getDefaultMailsTemplate() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}General_ViewEmailSetting`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getDefaultMailsTemplateSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getEmailPlaceHolderOptions() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n console.log(`${url}General_ViewEmailPlaceholder`)\r\n const response = await fetch(\r\n `${url}General_ViewEmailPlaceholder`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getEmailPlaceHolderOptionsSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function getMails(params) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await axios.get('/api/mail/mails', { params });\r\n dispatch(slice.actions.getMailsSuccess(response.data.mails));\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getMail(mailId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await axios.get('/api/mail/mail', {\r\n params: { mailId },\r\n });\r\n dispatch(slice.actions.getMailSuccess(response.data.mail));\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function EditorReturnReviewPaper(emailType, emailSubject, emailContent, modifyBy, paperId, taskId, isDraft, taskStatus, emailId, isPaperAccepted) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_EditorReturnReview?EMAILTYPE=${emailType}&EMAILSUBJECT=${emailSubject}&EMAILCONTENT=${emailContent}&MODIFYBY=${modifyBy}&PAPERID=${paperId}&TASKID=${taskId}&ISDRAFT=${isDraft}&TASKSTATUS=${taskStatus}&EMAILID=${emailId}&ISPAPERACCEPTED=${isPaperAccepted}&PROJECTID=${PROJECTID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.editorReturnReviewSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\nexport function viewEmailByFilter(filterData) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Email_ViewEmailByFilter?FILTERDATA=${filterData}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getMailByFilter(JSON.parse(data[0].ReturnData)));\r\n }\r\n else {\r\n dispatch(slice.actions.hasError(JSON.parse(data[0])));\r\n }\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n tasks: [],\r\n taskStatus: [],\r\n manuscriptLog: [],\r\n manuscriptStatus: []\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'manuscript',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET TASKS\r\n getTasksSuccess(state, action) {\r\n state.isLoading = false;\r\n state.tasks = action.payload;\r\n },\r\n\r\n // GET TASK STATUS\r\n getTaskStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.taskStatus = action.payload;\r\n },\r\n\r\n // MANUSCRIPT LOG\r\n getManuscriptLogSuccess(state, action) {\r\n state.isLoading = false;\r\n state.manuscriptLog = action.payload;\r\n },\r\n\r\n \r\n // MANUSCRIPT STATUS\r\n getManuscriptStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.manuscriptStatus = action.payload;\r\n },\r\n \r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const { onOpenModal, onCloseModal, selectUser, selectRange } = slice.actions;\r\n\r\nexport function getTasks(userId, projectId, journalId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Paper_AuthorPaper_PaperListByUserID?USERID=${userId}&PROJECTID=${projectId}&JOURNALID=${journalId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(JSON.parse(data.ReturnData)[0])\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTasksSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getTaskStatus() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}General_View_PaperStatus`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTaskStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getManuscriptStatus() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Paper_ViewPaperListStatus`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getManuscriptStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\nexport function getManuscriptLog(paperID) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n console.log(\"DASdsadasdasd\", `${url}Paper_Task_ViewLogByPaperID?PAPERID=${paperID}`)\r\n const response = await fetch(\r\n `${url}Paper_Task_ViewLogByPaperID?PAPERID=${paperID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getManuscriptLogSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n","import sum from 'lodash/sum';\r\nimport uniq from 'lodash/uniq';\r\nimport uniqBy from 'lodash/uniqBy';\r\nimport { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { devServer } from '../globalSettings';\r\nimport uploader from '../../utils/imgUploader';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n participant: [],\r\n participantAction:[],\r\n\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'participant',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET CONFERENCE EVENTS \r\n\r\n viewParticipantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.participant = action.payload;\r\n },\r\n\r\n addParticipantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.participantAction = action.payload;\r\n },\r\n\r\n updateParticipantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.participantAction = action.payload;\r\n },\r\n\r\n deleteParticipantSuccess(state, action) {\r\n state.isLoading = false;\r\n state.participantAction = action.payload;\r\n },\r\n \r\n clearParticipantDataSuccess(state, action) {\r\n state.isLoading = false;\r\n state.participantAction = [];\r\n },\r\n \r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const {\r\n getConferenceEventsSuccess,\r\n} = slice.actions;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n\r\n\r\nexport function viewParticipant(id) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_ViewConferenceParticipant?CONFERENCEID=${id}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.viewParticipantSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function addParticipant(id, userId, attendingStatusId,packageId, paymentBankingInfo, paymentReferenceNo, submissionInd, createdBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_AddConferenceParticipant?CONFERENCEID=${id}&USERID=${userId}&ATTENDINGSTATUSID=${attendingStatusId}&CONFERENCEPACKAGEID=${packageId}&PAYMENTATTACHMENT=${paymentBankingInfo}&PAYMENTREFENCENO=${paymentReferenceNo}&CONFERENCEPAPERSUBMISSIONIND=${submissionInd}&CREATEDBY=${createdBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateParticipantSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function updateParticipant(id, participantId, userId, fullname, gender, institution, contact, email, countryId, attendingStatusId, packageId, bankingInfo, referenceInfo, submissionInd, modifyBy ) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_UpdateConferenceParticipant?CONFERENCEID=${id}&USERID=${userId}&CONFERENCEPARTICIPANTID=${participantId}&USERFULLNAME=${fullname}&USERGENDER=${gender}&USERINSTITUITION=${institution}&USERCONTACT=${contact}&USEREMAIL=${email}&USERCOUNTRYID=${countryId}&ATTENDINGSTATUSID=${attendingStatusId}&CONFERENCEPACKAGEID=${packageId}&PAYMENTATTACHMENT=${bankingInfo}&PAYMENTREFENCENO=${referenceInfo}&CONFERENCEPAPERSUBMISSIONIND=${submissionInd}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateParticipantSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function deleteParticipant(id, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Conference_DeleteConferenceParticipant?CONFERENCEID=${id}&MODIFIEDBY=${modifyBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteParticipantSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function clearParticipantData() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n dispatch(slice.actions.clearParticipantDataSuccess());\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n profile: [],\r\n password: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'profile',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // UPDATE PROFILE\r\n updateProfileSuccess(state, action) {\r\n state.isLoading = false;\r\n state.profile = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE UPDATE PROFILE\r\n unsubscribeUpdateProfileSuccess(state, action) {\r\n state.isLoading = false;\r\n state.profile = null;\r\n },\r\n\r\n // UPDATE PASSWORD\r\n updatePasswordSuccess(state, action) {\r\n state.isLoading = false;\r\n state.password = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE UPDATE PASSWORD\r\n unsubscribeUpdatePasswordSuccess(state, action) {\r\n state.isLoading = false;\r\n state.password = null;\r\n }\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// export function updateProfile(user, userId, userTypeId, projectId) {\r\n// return async (dispatch) => {\r\n// dispatch(slice.actions.startLoading());\r\n// try {\r\n// const response = await fetch(\r\n// `${url}User_Profile_Update?USERID=${userId}&USEREMAIL=${user.email}&PROJECTID=${projectId}&USERCONTACTNO=${user.contactNo}&USERDOB=${user.dob}&USERORCHIDID=${user.orchidId}&USERPREFIX=${user.prefix}&USERFIRSTNAME=${user.firstName}&USERLASTNAME=${user.lastName}&USERINSTITUTION=${user.institution}&USERDEGREE=${user.degree}&USERADDRESS=${user.address}&USERSTATE=${user.state}&USERCOUNTRYID=${user.country}&USERCITY=${user.city}&USERPOSTALCODE=${user.zipCode}&USERRESEARCHID=${user.researchId}&USERGENDER=${user.gender}&USERTYPEID=${userTypeId}&USEREXPERTISE=${user.expertise}&MODIFYBY=${userId}`\r\n// )\r\n// const json = await response.json();\r\n// const data = JSON.parse(json)[0];\r\n// console.log(data)\r\n// if (data && data.ReturnVal === 1) {\r\n// dispatch(slice.actions.updateProfileSuccess(JSON.parse(data.ReturnData)[0]));\r\n// } else {\r\n// dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n// }\r\n// } catch (error) {\r\n// dispatch(slice.actions.hasError(error));\r\n// }\r\n// };\r\n// }\r\n\r\n\r\nexport function updateProfile(userId, email, contact, dob, orchidId, userPrefix, firstname, lastname, institution, degree, address, state, countryId, city, poscode, researchId, gender, usertypeId, expertise, userprofileimage, modifyBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}User_Profile_Update?USERID=${userId}&USEREMAIL=${email}&PROJECTID=${PROJECTID}&USERCONTACTNO=${contact}&USERDOB=${dob}&USERORCHIDID=${orchidId}&USERPREFIX=${userPrefix}&USERFIRSTNAME=${firstname}&USERLASTNAME=${lastname}&USERINSTITUTION=${institution}&USERDEGREE=${degree}&USERADDRESS=${address}&USERCOUNTRYID=${countryId}&USERCITY=${city}&USERSTATE=${state}&USERPOSTALCODE=${poscode}&USERRESEARCHID=${researchId}&USERGENDER=${gender}&USERTYPEID=${usertypeId}&USEREXPERTISE=${expertise}&USERPROFILEIMAGE=${userprofileimage}&MODIFYBY=${modifyBy}`);\r\n console.log(\"checkcheck\",`${url}User_Profile_Update?USERID=${userId}&USEREMAIL=${email}&PROJECTID=${PROJECTID}&USERCONTACTNO=${contact}&USERDOB=${dob}&USERORCHIDID=${orchidId}&USERPREFIX=${userPrefix}&USERFIRSTNAME=${firstname}&USERLASTNAME=${lastname}&USERINSTITUTION=${institution}&USERDEGREE=${degree}&USERADDRESS=${address}&USERCOUNTRYID=${countryId}&USERCITY=${city}&USERSTATE=${state}&USERPOSTALCODE=${poscode}&USERRESEARCHID=${researchId}&USERGENDER=${gender}&USERTYPEID=${usertypeId}&USEREXPERTISE=${expertise}&USERPROFILEIMAGE=${userprofileimage}&MODIFYBY=${modifyBy}`)\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.updateProfileSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function unsubscribeUpdateProfile() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeUpdateProfileSuccess());\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updatePassword(passwords, userId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}User_Profile_Update_Password?USERID=${userId}&OLDPASSWORD=${passwords.oldPassword}&NEWPASSWORD=${passwords.newPassword}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updatePasswordSuccess(JSON.parse(data.ReturnData)[0]));\r\n } \r\n else {\r\n // dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n dispatch(slice.actions.hasError(data.ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function unsubscribeUpdatePassword() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeUpdatePasswordSuccess());\r\n };\r\n}","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n\r\n // View Data\r\n publishers: [],\r\n publishersStatus: [],\r\n createPublisher: [],\r\n updatepublisher1: [],\r\n updatepublisher2: [],\r\n confirmUpdatePublisher: [],\r\n deleteJournal: [],\r\n addUserAccess: [],\r\n getUserAccess: [],\r\n deleteUserAccess: [],\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'publisher',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n getJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.publishers = action.payload;\r\n },\r\n\r\n getJournalStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.publishersStatus = action.payload;\r\n },\r\n // Create New Journal\r\n addJournalPricingSuccess(state, action) {\r\n state.isLoading = false;\r\n state.createPublisher = action.payload;\r\n },\r\n // Create New Journal Step 1\r\n updateJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updatepublisherData = action.payload;\r\n },\r\n // // Create New Journal Step 1\r\n // updateJournalBasicInfoSuccess(state, action) {\r\n // state.isLoading = false;\r\n // state.updatepublisher1 = action.payload;\r\n // },\r\n // // Create New Journal Step 2\r\n // updateJournalPricingSuccess(state, action) {\r\n // state.isLoading = false;\r\n // state.updatepublisher2 = action.payload;\r\n // },\r\n // Create New Journal Confirmation\r\n updateJournalConfirmationSuccess(state, action) {\r\n state.isLoading = false;\r\n state.confirmUpdatePublisher = action.payload;\r\n },\r\n\r\n updateJournalStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.confirmUpdatePublisher = action.payload;\r\n },\r\n\r\n // Create New Journal Confirmation\r\n deleteJournalSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteJournal = action.payload;\r\n },\r\n\r\n // Add Journal User Access\r\n addJournalUserAccessSuccess(state, action) {\r\n state.isLoading = false;\r\n state.addUserAccess = action.payload;\r\n },\r\n\r\n // View Journal User Access\r\n getJournalUserAccessSuccess(state, action) {\r\n state.isLoading = false;\r\n state.getUserAccess = action.payload;\r\n },\r\n\r\n // Delete Journal User Access\r\n deleteJournalUserAccessSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteUserAccess = action.payload;\r\n },\r\n\r\n clearJournalDataSuccess(state, action) {\r\n state.isLoading = false;\r\n state.createPublisher = [];\r\n state.publishers = [];\r\n state.updatepublisher1 = [];\r\n state.deleteJournal = [];\r\n state.addUserAccess = [];\r\n state.deleteUserAccess = [];\r\n state.confirmUpdatePublisher = [];\r\n },\r\n unsubscribeJournal(state, action) {\r\n state.isLoading = false;\r\n state.publishers = [];\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const {\r\n getConferenceEventsSuccess,\r\n} = slice.actions;\r\n\r\n// Add Journal\r\nexport function Journal_AddJournalWithPricingID(JOURNALPRICINGID, CREATEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_AddJournalWithPricingID?JOURNALPRICINGID=${JOURNALPRICINGID}&CREATEDBY=${CREATEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.addJournalPricingSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// Update Journal Basic Profile\r\nexport function Journal_UpdateJournal_Stage1(JOURNALID, JOURNALNAME, JOURNALDESCRIPTION, JOURNALREGISTRATIONNO, JOURNALEMAIL, JOURNALADDRESS, JOURNALCOUNTRYID, JOURNALLOGO, JOURNALGUIDELINE, JOURNALTOPICNAME, REVIEWTYPE, REVIEWERNUMBER, MODIFIEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_UpdateJournal_Stage1?JOURNALID=${JOURNALID}&JOURNALNAME=${JOURNALNAME}&JOURNALDESCRIPTION=${JOURNALDESCRIPTION}&JOURNALREGISTRATIONNO=${JOURNALREGISTRATIONNO}&JOURNALEMAIL=${JOURNALEMAIL}&JOURNALADDRESS=${JOURNALADDRESS}&JOURNALCOUNTRYID=${JOURNALCOUNTRYID}&JOURNALLOGO=${JOURNALLOGO}&JOURNALGUIDELINE=${JOURNALGUIDELINE}&JOURNALTOPICNAME=${JOURNALTOPICNAME}&REVIEWTYPE=${REVIEWTYPE}&REVIEWERNUMBER=${REVIEWERNUMBER}&MODIFIEDBY=${MODIFIEDBY}`\r\n )\r\n\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// Update Journal Pricing\r\nexport function Journal_UpdateJournal_Stage2(JOURNALID, JOURNALPRICINGID, MODIFIEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_UpdateJournal_Stage2?JOURNALID=${JOURNALID}&JOURNALPRICINGID=${JOURNALPRICINGID}&MODIFIEDBY=${MODIFIEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// View Journal Listing\r\nexport function Journal_ViewJournal(USERID, JOURNALID, JOURNALPAPERIND, JOURNALREVIEWERIND, JOURNALDASHBOARDIND) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n console.log(\"Journal_ViewJournal\", `${url}Journal_ViewJournal?USERID=${USERID}&JOURNALID=${JOURNALID}&JOURNALPAPERIND=${JOURNALPAPERIND}&JOURNALREVIEWERIND=${JOURNALREVIEWERIND}&JOURNALDASHBOARDIND=${JOURNALDASHBOARDIND}`)\r\n const response = await fetch(\r\n `${url}Journal_ViewJournal?USERID=${USERID}&JOURNALID=${JOURNALID}&JOURNALPAPERIND=${JOURNALPAPERIND}&JOURNALREVIEWERIND=${JOURNALREVIEWERIND}&JOURNALDASHBOARDIND=${JOURNALDASHBOARDIND}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// View Journal Status\r\nexport function General_ViewJournalStatus() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}General_ViewJournalStatus`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getJournalStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// Final Update Journal while create new\r\nexport function Journal_UpdateJournalConfirmation(JOURNALID, MODIFIEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_UpdateJournalConfirmation?JOURNALID=${JOURNALID}&MODIFIEDBY=${MODIFIEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateJournalConfirmationSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function Journal_UpdateJournalStatus(JOURNALID, JOURNALSTATUSID, MODIFIEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_UpdateJournalStatus?JOURNALID=${JOURNALID}&JOURNALSTATUSID=${JOURNALSTATUSID}&MODIFIEDBY=${MODIFIEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateJournalStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// Delete Journal\r\nexport function Journal_DeleteJournal(JOURNALID, MODIFIEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_DeleteJournal?JOURNALID=${JOURNALID}&MODIFIEDBY=${MODIFIEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteJournalSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// Add Journal User Access\r\nexport function AddJournalUserAccess(JOURNALID, USEREMAIL, ROLEID, CREATEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_AddJournalUserAccess?JOURNALID=${JOURNALID}&USEREMAIL=${USEREMAIL}&ROLEID=${ROLEID}&CREATEDBY=${CREATEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.addJournalUserAccessSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// View Journal User Access\r\nexport function getJournalUserAccess(JOURNALID) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_ViewJournalUserAccess?JOURNALID=${JOURNALID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getJournalUserAccessSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// Delete Journal User Access\r\nexport function deleteJournalUserAccess(JOURNALUSERACCESSID, MODIFIEDBY) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n\r\n try {\r\n const response = await fetch(\r\n `${url}Journal_DeleteJournalUserAccess?JOURNALUSERACCESSID=${JOURNALUSERACCESSID}&MODIFIEDBY=${MODIFIEDBY}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteJournalUserAccessSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function clearJournalData() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n dispatch(slice.actions.clearJournalDataSuccess());\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function unsubscribeJournal() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeJournal());\r\n };\r\n}\r\n\r\n\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n questions: null,\r\n addTemplate: null,\r\n updateTemplate: null,\r\n updateTemplateStatus: null,\r\n deleteQuestionDetails: null,\r\n deleteQuestion: null,\r\n deleteAnswerSelection: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'question',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET QUESTIONS\r\n getQuestionsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.questions = action.payload;\r\n },\r\n\r\n // ADD TEMPLATE\r\n addTemplateSuccess(state, action) {\r\n state.isLoading = false;\r\n state.addTemplate = action.payload;\r\n },\r\n\r\n // UPDATE TEMPLATE\r\n updateTemplateSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updateTemplate = action.payload;\r\n },\r\n\r\n // UPDATE TEMPLATE STATUS\r\n updateTemplateStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updateTemplateStatus = action.payload;\r\n },\r\n\r\n // DELETE QUESTION DETAILS\r\n deleteQuestionDetailsSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteQuestionDetails = action.payload;\r\n },\r\n\r\n // DELETE QUESTION\r\n deleteQuestionSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteQuestion = action.payload;\r\n },\r\n\r\n // DELETE ANSWER SELECTION\r\n deleteAnswerSelectionSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteAnswerSelection = action.payload;\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getQuestions(templateId, projectId, isActive) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_ViewAll?QUESTIONTEMPLATEID=${templateId}&PROJECTID=${projectId}&ISACTIVE=${isActive}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getQuestionsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function addTemplate(templateTitle, projectId, modifiedBy, isQuestionUsed, question, answerTypeId, answerSelection) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_Add?TEMPLATETITLE=${templateTitle}&PROJECTID=${projectId}&MODIFIEDBY=${modifiedBy}&ISQUESTIONUSE=${isQuestionUsed}&QUESTION=${question}&ANSWERTYPEID=${answerTypeId}&ANSWERSELECTION=${answerSelection}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data)\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.addTemplateSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateTemplate(templateId, templateTitle, projectId, modifiedBy, questionId, answerTypeId, question, isUpdateAnswerType, questionDetailsId, answerSelection) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_UpdateQuestionTemplate?QuestionTemplateID=${templateId}&QUESTIONTEMPLATETITLE=${templateTitle}&PROJECTID=${projectId}&MODIFIEDBY=${modifiedBy}&QUESTIONID=${questionId}&QUESTIONANSWERTYPEID=${answerTypeId}&QUESTION=${question}&ISUPDATEANSWERTYPE=${isUpdateAnswerType}&QUESTIONDETAILSID=${questionDetailsId}&ANSWERSELECTION=${answerSelection}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data)\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateTemplateSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateTemplateStatus(templateId, modifiedBy, isQuestionUsed) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_UpdateTemplateStatus?QUESTIONTEMPLATEID=${templateId}&MODIFIEDBY=${modifiedBy}&ISQUESTIONUSE=${isQuestionUsed}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data)\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateTemplateStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteQuestionDetails(questionDetailsId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_DeleteQuestionDetails?QUESTIONID=${questionDetailsId}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data)\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteQuestionDetailsSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteQuestion(templateId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_DeleteQuestion?QUESTIONTEMPLATEID=${templateId}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data)\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteQuestionSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\nexport function deleteAnswerSelection(questionDetailsId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_QuestionTemplate_DeleteAnswerSelection?QUESTIONDETAILSID=${questionDetailsId}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n console.log(data)\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteAnswerSelectionSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}","export const devServer = `http://192.168.1.8/JournalManagementAPI/api/INQUIRE/`\r\nexport const devServer_somee = `https://djms.somee.com/api/INQUIRE/`\r\nexport const projectId = 1;","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\nimport { projectId } from '../globalSettings';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n surveys: [],\r\n newSurvey: null,\r\n updatedSurvey: null,\r\n deletedSurvey: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'survey',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET SURVEYS\r\n getSurveysSuccess(state, action) {\r\n state.isLoading = false;\r\n state.surveys = action.payload;\r\n },\r\n\r\n // ADD SURVEY\r\n addSurveySuccess(state, action) {\r\n state.isLoading = false;\r\n state.newSurvey = action.payload;\r\n },\r\n\r\n // UPDATE SURVEY\r\n updateSurveySuccess(state, action) {\r\n state.isLoading = false;\r\n state.updatedSurvey = action.payload;\r\n },\r\n\r\n // DELETE SURVEY\r\n deleteSurveySuccess(state, action) {\r\n state.isLoading = false;\r\n state.deletedSurvey = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE SURVEY ACTION\r\n resetSurveyAction(state, action) {\r\n state.newSurvey = null;\r\n state.updatedSurvey = null;\r\n state.deletedSurvey = null;\r\n },\r\n\r\n // UNSUBSCRIBE ERROR\r\n unsubscribeError(state, action) {\r\n state.error = null;\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const {\r\n resetSurveyAction,\r\n unsubscribeError,\r\n} = slice.actions;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getSurveys(id) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Survey_ViewSurvey?SURVEYID=${id}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getSurveysSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function addSurvey(name, description, question, options, answerTypeId, required, createdBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Survey_AddSurvey?SURVEYNAME=${name}&SURVEYDESCRIPTION=${description}&SURVEYQUESTION=${question}&SURVEYQUESTIONDETAIL=${options}&SURVEYQUESTIONREQUIREDIND=${required}&ANSWERTYPEID=${answerTypeId}&PROJECTID=${projectId}&CREATEDBY=${createdBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.addSurveySuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateSurvey(surveyId, name, description, questionOrder, question, required, optionOrder, option, answerTypeId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Survey_UpdateSurvey?SURVEYID=${surveyId}&SURVEYNAME=${name}&SURVEYDESCRIPTION=${description}&SURVEYQUESTIONNO=${questionOrder}&SURVEYQUESTION=${question}&SURVEYQUESTIONREQUIREDIND=${required}&SURVEYQUESTIONDETAILNO=${optionOrder}&SURVEYQUESTIONDETAIL=${option}&ANSWERTYPEID=${answerTypeId}&PROJECTID=${projectId}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateSurveySuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteSurvey(surveyId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Survey_DeleteSurvey?SURVEYID=${surveyId}&MODIFIEDBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteSurveySuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData).ReturnSqlError));\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n tasks: [],\r\n task: null,\r\n taskByID: [],\r\n createTask: null,\r\n deleteTask: null,\r\n response: null,\r\n returnReview: null,\r\n updateReview: null,\r\n status: [],\r\n suggestedReviewer: [],\r\n inviteReviewer: [],\r\n review: null,\r\n inviteAction: [],\r\n taskByPaperID: [],\r\n reviewDetails:[],\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'task',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET TASKS\r\n getTasksSuccess(state, action) {\r\n state.isLoading = false;\r\n state.tasks = action.payload;\r\n },\r\n\r\n // GET TASK\r\n getTaskSuccess(state, action) {\r\n state.isLoading = false;\r\n state.task = action.payload;\r\n },\r\n\r\n // GET TASK BY ID\r\n getTaskByIDSuccess(state, action) {\r\n state.isLoading = false;\r\n state.taskByID = action.payload;\r\n },\r\n\r\n\r\n getTaskByPaperIDSuccess(state, action) {\r\n state.isLoading = false;\r\n state.taskByPaperID = action.payload;\r\n },\r\n\r\n getSuggestedReviewerSuccess(state, action) {\r\n state.isLoading = false;\r\n state.suggestedReviewer = action.payload;\r\n },\r\n\r\n // CREATE TASK\r\n createTaskSuccess(state, action) {\r\n state.isLoading = false;\r\n state.createTask = action.payload;\r\n },\r\n\r\n // DELETE TASK\r\n deleteTaskSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteTask = action.payload;\r\n },\r\n\r\n // RESPONSE\r\n responseSuccess(state, action) {\r\n state.isLoading = false;\r\n state.response = action.payload;\r\n },\r\n\r\n // RETURN REVIEW\r\n returnReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.returnReview = action.payload;\r\n },\r\n\r\n // UPDATE REVIEW\r\n updateReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updateReview = action.payload;\r\n },\r\n\r\n // GET STATUS\r\n getStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.status = action.payload;\r\n },\r\n\r\n // SEND REVIEW\r\n sendReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.review = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE SEND REVIEW\r\n unsubscribeSendReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.review = null;\r\n },\r\n\r\n // Invite Reviewer\r\n inviteSuccess(state, action) {\r\n state.isLoading = false;\r\n state.inviteReviewer = action.payload;\r\n },\r\n\r\n inviteEditorSuccess(state, action) {\r\n state.isLoading = false;\r\n state.inviteAction = action.payload;\r\n },\r\n\r\n\r\n viewReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.reviewDetails = action.payload;\r\n },\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getTasks(userId, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n console.log(\"Paper_Task_ViewByUserID\", `${url}Paper_Task_ViewByUserID?USERID=${userId}&PROJECTID=${projectId}`)\r\n const response = await fetch(\r\n `${url}Paper_Task_ViewByUserID?USERID=${userId}&PROJECTID=${projectId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTasksSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function viewTaskByID(taskId, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n console.log(\"viewTaskByID\",`${url}Paper_Task_ViewByTaskID?TASKID=${taskId}&PROJECTID=${projectId}`)\r\n const response = await fetch(\r\n `${url}Paper_Task_ViewByTaskID?TASKID=${taskId}&PROJECTID=${projectId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTaskByIDSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function viewTaskByPaperID(paperid, email, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_ViewByPaperID?PAPERID=${paperid}&USEREMAIL=${email}&PROJECTID=${projectId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTaskByPaperIDSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// --------------------------------- Invite Reviewer -------------------------------------\r\n\r\nexport function viewSuggestedReviewer(paperId, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_ViewSuggestedReviewer?PAPERID=${paperId}&PROJECTID=${projectId}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getSuggestedReviewerSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function invitePaperReviewer(\r\n email,\r\n paperId,\r\n modifiedBy,\r\n status,\r\n role,\r\n type,\r\n subject,\r\n body,\r\n dueDate\r\n) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_RequestAndAssignment?USEREMAIL=${email}&PROJECTID=${PROJECTID}&PAPERID=${paperId}&MODIFYBY=${modifiedBy}&TASKSTATUS=${status}&TASKUSERROLE=${role}&TYPE=${type}&SUBJECT=${subject}&BODY=${body}&TASKDUEDATE=${dueDate}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n console.log(\"dasdasda\", data)\r\n if (data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.inviteSuccess(JSON.parse(data[0].ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(data[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function createTask(email, projectId, paperId, modifiedBy, status, role, type, subject, body) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_RequestAndAssignment?USEREMAIL=${email}&PROJECTID=${projectId}&PAPERID=${paperId}&MODIFYBY=${modifiedBy}&TASKSTATUS=${status}&TASKUSERROLE=${role}&TYPE=${type}&SUBJECT=${subject}&BODY=${body}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.createTaskSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteTask(taskId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_AssignEditorDelete?USERTASKID=${taskId}&MODIFYBY=${modifiedBy}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteTaskSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function reviewerResponse(paperId, useremail, acceptInd, status, date) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n console.log(`${url}Paper_Task_InviteReviewerRespond?PAPERID=${paperId}&USEREMAIL=${useremail}&ISTASKACCEPTED=${acceptInd}&TASKSTATUS=${status}&TASKEXTENDDATE=${date}&PROJECTID=${PROJECTID}`\r\n )\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_InviteReviewerRespond?PAPERID=${paperId}&USEREMAIL=${useremail}&ISTASKACCEPTED=${acceptInd}&TASKSTATUS=${status}&TASKEXTENDDATE=${date}&PROJECTID=${PROJECTID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.responseSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function returnReview(emailType, subject, body, modifiedBy, paperId, taskId, draftInd, status, emailId, projectId, acceptInd) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_ReviewerReturn?EMAILTYPE=${emailType}&SUBJECT=${subject}&BODY=${body}&MODIFYBY=${modifiedBy}&PAPERID=${paperId}&TASKID=${taskId}&ISDRAFT=${draftInd}&TASKSTATUS=${status}&EMAILID=${emailId}&PROJECTID=${projectId}&ISPAPERACCEPTED=${acceptInd}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.returnReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateReview(reviewId, modifiedBy, paperId, title, description, projectId, draftInd, taskId, acceptInd, status, subject, body) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_ReviewerUpdate?REVIEWID=${reviewId}&MODIFYBY=${modifiedBy}&PAPERID=${paperId}&REVIEWTITLE=${title}&REVIEWDESCRIPTION=${description}&PROJECTID=${projectId}&ISDRAFT=${draftInd}&TASKID=${taskId}&ISPAPERACCEPT=${acceptInd}&TASKSTATUS=${status}&SUBJECT=${subject}&BODY=${body}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getStatus(type) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}General_View_PaperStatusByPage?PAGE=${type}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function sendReview(reviewId, user, script, questions, answers, isDraft, isAccepted, subject, body) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_ReviewerUpdateReview?REVIEWID=${reviewId}&MODIFYBY=${user.UserID}&PAPERID=${script.PaperID}&REVIEWTITLE=${questions}&REVIEWDESCRIPTION=${answers}&PROJECTID=${user.ProjectID}&ISDRAFT=${isDraft}&TASKID=${script.UserTaskID}&ISPAPERACCEPT=${isAccepted}&TASKSTATUS=${script.TaskStatus}&SUBJECT=${subject}&BODY=${body}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.sendReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function viewReviewByPaper(useremail, paperid) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_ViewPaperReview?USEREMAIL=${useremail}&PAPERID=${paperid}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.viewReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function unsubscribeSendReview() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n dispatch(slice.actions.unsubscribeSendReviewSuccess());\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function inviteEditor(email, modifyBy, body, subject) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}User_InviteEditor?USEREMAIL=${email}&MODIFYBY=${modifyBy}&PROJECTID=${PROJECTID}&BODY=${body}&SUBJECT=${subject}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n\r\n if (data && data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.inviteEditorSuccess(JSON.parse(data[0].ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n tasks: [],\r\n taskStatus: [],\r\n inviteEditorAction:[],\r\n createTask: null,\r\n deleteTask: null,\r\n response: null,\r\n returnReview: null,\r\n updateReview: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'calendar',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET TASKS\r\n getTasksSuccess(state, action) {\r\n state.isLoading = false;\r\n state.tasks = action.payload;\r\n },\r\n\r\n // GET TASK STATUS\r\n getTaskStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.taskStatus = action.payload;\r\n },\r\n\r\n // CREATE TASK\r\n createTaskSuccess(state, action) {\r\n state.isLoading = false;\r\n state.createTask = action.payload;\r\n },\r\n\r\n // DELETE TASK\r\n deleteTaskSuccess(state, action) {\r\n state.isLoading = false;\r\n state.deleteTask = action.payload;\r\n },\r\n\r\n // RESPONSE\r\n responseSuccess(state, action) {\r\n state.isLoading = false;\r\n state.response = action.payload;\r\n },\r\n\r\n // RETURN REVIEW\r\n returnReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.returnReview = action.payload;\r\n },\r\n\r\n // UPDATE REVIEW\r\n updateReviewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.updateReview = action.payload;\r\n },\r\n\r\n\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const { onOpenModal, onCloseModal, selectUser, selectRange } = slice.actions;\r\n\r\nexport function getTasks(userId, projectId,journalId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_AuthorPaper_PaperListByUserID?USERID=${userId}&PROJECTID=${projectId}&JOURNALID=${journalId}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTasksSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getTaskStatus() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Paper_Task_ViewTaskStatus`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getTaskStatusSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function createTask(\r\n email,\r\n projectId,\r\n paperId,\r\n modifiedBy,\r\n status,\r\n role,\r\n type,\r\n subject,\r\n body,\r\n dueDate,\r\n journalId\r\n) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n \r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_RequestAndAssignment?USEREMAIL=${email}&PROJECTID=${projectId}&PAPERID=${paperId}&MODIFYBY=${modifiedBy}&TASKSTATUS=${status}&TASKUSERROLE=${role}&TYPE=${type}&SUBJECT=${subject}&BODY=${body}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n \r\n if (data && data.ReturnVal === 1) {\r\n const response2 = await fetch(`${url}Paper_AuthorPaper_PaperListByUserID?USERID=${modifiedBy}&PROJECTID=${projectId}&JOURNALID=${journalId}`);\r\n const json2 = await response2.json();\r\n const data2 = JSON.parse(json2)[0];\r\n if (data2 && data2.ReturnVal === 1) {\r\n dispatch(slice.actions.getTasksSuccess(JSON.parse(data2.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data2.ReturnData)[0].ReturnSqlError));\r\n }\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteTask(taskId, modifiedBy) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_AssignEditorDelete?USERTASKID=${taskId}&MODIFYBY=${modifiedBy}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteTaskSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function reviewerResponse(taskId, email, acceptInd, status, date, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_InviteReviewerRespond?USERTASKID=${taskId}&USEREMAIL=${email}&ISTASKACCEPTED=${acceptInd}&TASKSTATUS=${status}&TASKEXTENDDATE=${date}&PROJECTID=${projectId}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.responseSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function returnReview(\r\n emailType,\r\n subject,\r\n body,\r\n modifiedBy,\r\n paperId,\r\n taskId,\r\n draftInd,\r\n status,\r\n emailId,\r\n projectId,\r\n acceptInd\r\n) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_ReviewerReturn?EMAILTYPE=${emailType}&SUBJECT=${subject}&BODY=${body}&MODIFYBY=${modifiedBy}&PAPERID=${paperId}&TASKID=${taskId}&ISDRAFT=${draftInd}&TASKSTATUS=${status}&EMAILID=${emailId}&PROJECTID=${projectId}&ISPAPERACCEPTED=${acceptInd}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.returnReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateReview(\r\n reviewId,\r\n modifiedBy,\r\n paperId,\r\n title,\r\n description,\r\n projectId,\r\n draftInd,\r\n taskId,\r\n acceptInd,\r\n status,\r\n subject,\r\n body\r\n) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}Paper_Task_ReviewerUpdate?REVIEWID=${reviewId}&MODIFYBY=${modifiedBy}&PAPERID=${paperId}&REVIEWTITLE=${title}&REVIEWDESCRIPTION=${description}&PROJECTID=${projectId}&ISDRAFT=${draftInd}&TASKID=${taskId}&ISPAPERACCEPT=${acceptInd}&TASKSTATUS=${status}&SUBJECT=${subject}&BODY=${body}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateReviewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n// utils\r\nimport axios from '../../utils/axios';\r\nimport { ServerConfiguration } from '../../utils/serverConfig';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst url = ServerConfiguration.testingServerUrl;\r\nconst PROJECTID = 1;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n error: null,\r\n users: [],\r\n userByID: [],\r\n inviteeRole: [],\r\n editorResponse: [],\r\n usersDeleted: [],\r\n userManagement: null,\r\n roleTypes: [],\r\n openModal: false,\r\n selectedUserId: null,\r\n selectedRange: null,\r\n countries: [],\r\n expertises: [],\r\n password: null,\r\n userUpdate: [],\r\n userPage: [],\r\n editorList: [],\r\n notificationList: [],\r\n notificationAction: [],\r\n invitationCheck: [],\r\n pricing: []\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'calendar',\r\n initialState,\r\n reducers: {\r\n // START LOADING\r\n startLoading(state) {\r\n state.isLoading = true;\r\n },\r\n\r\n // HAS ERROR\r\n hasError(state, action) {\r\n state.isLoading = false;\r\n state.error = action.payload;\r\n },\r\n\r\n // GET PRODUCT\r\n getProductSuccess(state, action) {\r\n state.isLoading = false;\r\n state.userManagement = action.payload;\r\n },\r\n\r\n // GET USER ROLE TYPES\r\n getRoleTypeSuccess(state, action) {\r\n state.isLoading = false;\r\n state.roleTypes = action.payload;\r\n },\r\n\r\n // GET USERS\r\n getUsersSuccess(state, action) {\r\n state.isLoading = false;\r\n state.users = action.payload;\r\n },\r\n\r\n getUserPageViewSuccess(state, action) {\r\n state.isLoading = false;\r\n state.userPage = action.payload;\r\n },\r\n\r\n\r\n // GET USER\r\n getUserSuccess(state, action) {\r\n state.isLoading = false;\r\n state.userByID = action.payload;\r\n },\r\n\r\n // CREATE USER\r\n createUserSuccess(state, action) {\r\n const newUser = action.payload;\r\n state.isLoading = false;\r\n state.users = [...state.users, newUser];\r\n },\r\n\r\n // UPDATE USER\r\n updateUserSuccess(state, action) {\r\n state.isLoading = false;\r\n state.users = state.users.map((user) => {\r\n if (user.id === action.payload.id) {\r\n return action.payload;\r\n }\r\n return user;\r\n });\r\n },\r\n\r\n // USER RESPONSE\r\n userResponseSuccess(state, action) {\r\n state.isLoading = false;\r\n state.editorResponse = action.payload;\r\n },\r\n\r\n // DELETE USER\r\n deleteUserSuccess(state, action) {\r\n // const UserId = action.payload;\r\n // state.users = state.users.filter((user) => user.id !== UserId);\r\n state.isLoading = false;\r\n state.usersDeleted = action.payload;\r\n },\r\n\r\n // SELECT USER\r\n selectUser(state, action) {\r\n const UserId = action.payload;\r\n state.openModal = true;\r\n state.selectedUserId = UserId;\r\n },\r\n\r\n // SELECT RANGE\r\n selectRange(state, action) {\r\n const { start, end } = action.payload;\r\n state.openModal = true;\r\n state.selectedRange = { start, end };\r\n },\r\n\r\n // OPEN MODAL\r\n onOpenModal(state) {\r\n state.openModal = true;\r\n },\r\n\r\n // CLOSE MODAL\r\n onCloseModal(state) {\r\n state.openModal = false;\r\n state.selectedUserId = null;\r\n state.selectedRange = null;\r\n },\r\n\r\n // GET COUNTRIES\r\n getCountriesSuccess(state, action) {\r\n state.isLoading = false;\r\n state.countries = action.payload;\r\n },\r\n\r\n // GET EXPERTISES\r\n getExpertisesSuccess(state, action) {\r\n state.isLoading = false;\r\n state.expertises = action.payload;\r\n },\r\n\r\n // UPDATE INVITEE ROLE\r\n updateInviteeRoleSuccess(state, action) {\r\n state.isLoading = false;\r\n state.inviteeRole = action.payload;\r\n },\r\n\r\n // UPDATE PASSWORD\r\n updatePasswordSuccess(state, action) {\r\n state.isLoading = false;\r\n state.password = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE UPDATE PASSWORD\r\n unsubscribeUpdatePasswordSuccess(state, action) {\r\n state.isLoading = false;\r\n state.password = action.payload;\r\n },\r\n\r\n // UNSUBSCRIBE USER PAGE\r\n unsubscribeUserPage(state, action) {\r\n state.isLoading = false;\r\n state.userPage = [];\r\n },\r\n\r\n // EDITOR LISTING TO INVITE AND INVITED\r\n getEditorListSuccess(state, action) {\r\n state.isLoading = false;\r\n state.editorList = action.payload;\r\n },\r\n\r\n // USER NOTIFICATION LISTING\r\n getNotificationListSuccess(state, action) {\r\n state.isLoading = false;\r\n state.notificationList = action.payload;\r\n },\r\n\r\n // USER NOTIFICATION LISTING\r\n updateNotificationStatusSuccess(state, action) {\r\n state.isLoading = false;\r\n state.notificationAction = action.payload;\r\n },\r\n\r\n // CHECK USER INVITATION\r\n invitationCheckSuccess(state, action) {\r\n state.isLoading = false;\r\n state.invitationCheck = action.payload;\r\n },\r\n\r\n getPricingSuccess(state, action) {\r\n state.isLoading = false;\r\n state.pricing = action.payload;\r\n },\r\n\r\n },\r\n});\r\n\r\n// Reducer\r\nexport default slice.reducer;\r\n\r\n// Actions\r\nexport const { onOpenModal, onCloseModal, selectUser, selectRange } = slice.actions;\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getLeaveApplication(id) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await axios.get('/api/products/product', {\r\n params: { id },\r\n });\r\n dispatch(slice.actions.getProductSuccess(response.data.product));\r\n } catch (error) {\r\n console.error(error);\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getUserPageView(userId, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}User_Page_View?USERID=${userId}&PROJECTID=${projectId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getUserPageViewSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getUsers(userId, projectId, journalId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Paper_AuthorPaper_PaperListByUserID?USERID=0&PROJECTID=${projectId}&JOURNALID=${journalId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n dispatch(slice.actions.getUsersSuccess(data));\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getUserByType(userTypeId, projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}User_Profile_ViewByUserType?USERTYPEID=${userTypeId}&PROJECTID=${projectId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getUsersSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getUser(userId,USEREXPERTEDIND , USERDASHBOARDIND) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}User_Profile_ViewByUserID?USERID=${userId}&PROJECTID=${PROJECTID}&USEREXPERTEDIND=${USEREXPERTEDIND}&USERDASHBOARDIND=${USERDASHBOARDIND}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n if (data && data[0].ReturnVal === 1) {\r\n dispatch(slice.actions.getUserSuccess(JSON.parse(data[0].ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function createUser(userId, values, profilePic, profilePicFileType) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n const isHalfDay = values.option !== 0 ? 1 : 0;\r\n try {\r\n const response = await fetch(\r\n `${url}Employee_AddEmployeeInfo?LogOnUserID=${userId}&StaffName=${values.name}&StaffEmail=${values.email}&StaffPhone=${values.phoneNumber}\r\n &StatusID=${values.statusType}&RecruitmentDate=${values.recruitmentDate}&RoleID=${values.role}&StaffAddress=${values.address}\r\n &StaffGender=${values.gender} &ICorPassportNo=${values.ICNo}&StaffDateOfBirth=${values.staffDOB}&StaffUsername=${values.username}\r\n &StaffPassword=${values.userPassword}&ProfilePictureName=${profilePic}&MediaType=${profilePicFileType}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n dispatch(slice.actions.createUserSuccess(data));\r\n // dispatch(slice.actions.resetLeaveSubmitSuccess(data));\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateUser(user) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}User_Profile_Update?USERID=${user.userId}&USEREMAIL=${user.email}&PROJECTID=${user.projectId}&PASSWORD=${user.password}&USERCONTACTNO=${user.contactNo}&USERDOB=${user.dob}&USERORCHIDID=${user.orchidId}&USERPREFIX=${user.prefix}&USERFIRSTNAME=${user.firstName}&USERLASTNAME=${user.lastName}&USERINSTITUTION=${user.institution}&USERDEGREE=${user.degree}&USERADDRESS=${user.address}&USERSTATE=${user.nationState}&USERCOUNTRYID=${user.country}&USERCITY=${user.city}&USERPOSTALCODE=${user.zipCode}&USERRESEARCHID=${user.researchId}&USERGENDER=${user.gender}&USERTYPEID=${user.userType}&USEREXPERTISE=${user.expertise}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateUserSuccess(JSON.parse(data.ReturnData)[0]));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function userResponse(email, acceptInd) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}User_RespondAsEditor?USEREMAIL=${email}&RESPOND=${acceptInd}&PROJECTID=${PROJECTID}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.userResponseSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function userCheckInvitation(email, invitationType, paperid) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}User_CheckInvitation?USEREMAIL=${email}&INVITATIONTYPE=${invitationType}&PAPERID=${paperid}`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.invitationCheckSuccess(JSON.parse(data.ReturnData)));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function deleteUsers(userId, modifierId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading())\r\n try {\r\n const response = await fetch(`${url}User_Profile_Delete?USERID=${userId}&MODIFYBY=${modifierId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.deleteUserSuccess(JSON.parse(data.ReturnData)[0]));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getRoleType() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading())\r\n try {\r\n const response = await fetch(\r\n `${url}Role_ViewRoleType`\r\n )\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n dispatch(slice.actions.getRoleTypeSuccess(data));\r\n\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getCountries() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}General_ViewCountry`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getCountriesSuccess(JSON.parse(data.ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getPricing(projectId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}General_ViewPricing?PRICINGTYPE=${projectId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getPricingSuccess(JSON.parse(data.ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getExpertises() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}General_ViewExpertise`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getExpertisesSuccess(JSON.parse(data.ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function getEditorInviteList() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}User_Profile_EditorListToInvite`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getEditorListSuccess(JSON.parse(data.ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function getUserNotificationList(useremail) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Notification_ViewByUserEmail?PROJECTID=${PROJECTID}&USEREMAIL=${useremail}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.getNotificationListSuccess(JSON.parse(data.ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\nexport function updateUserNotificationStatus(notificationId, isRead, modifyby) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}Notification_UpdateStatus?PROJECTID=${PROJECTID}&NOTIFICATIONID=${notificationId}&ISREAD=${isRead}&MODIFYBY=${modifyby}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateNotificationStatusSuccess(JSON.parse(data.ReturnData)));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updateInviteeRole(email, modifierId, userTypeId, projectId, emailId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(`${url}User_ProfileUserType_Update?USEREMAIL=${email}&MODIFYBY=${modifierId}&USERTYPEID=${userTypeId}&PROJECTID=${projectId}&INVITATIONEMAILID=${emailId}`);\r\n const json = await response.json();\r\n const data = JSON.parse(json);\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updateInviteeRoleSuccess(JSON.parse(data.ReturnData)[0]));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function updatePassword(passwords, userId) {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.startLoading());\r\n try {\r\n const response = await fetch(\r\n `${url}User_Profile_Update_Password?USERID=${userId}&OLDPASSWORD=${passwords.oldPassword}&NEWPASSWORD=${passwords.newPassword}`\r\n );\r\n const json = await response.json();\r\n const data = JSON.parse(json)[0];\r\n if (data && data.ReturnVal === 1) {\r\n dispatch(slice.actions.updatePasswordSuccess(JSON.parse(data.ReturnData)[0]));\r\n } else {\r\n dispatch(slice.actions.hasError(JSON.parse(data.ReturnData)[0].ReturnSqlError));\r\n }\r\n } catch (error) {\r\n dispatch(slice.actions.hasError(error));\r\n }\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function unsubscribeUpdatePassword() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeUpdatePasswordSuccess());\r\n };\r\n}\r\n\r\nexport function unsubscribeUserPage() {\r\n return async (dispatch) => {\r\n dispatch(slice.actions.unsubscribeUserPage());\r\n };\r\n}","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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/*\n autoMergeLevel1: \n - merges 1 level of substate\n - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n } // otherwise hard set the new value\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n // defaults\n var blacklist = config.blacklist || null;\n var whitelist = config.whitelist || null;\n var transforms = config.transforms || [];\n var throttle = config.throttle || 0;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var serialize;\n\n if (config.serialize === false) {\n serialize = function serialize(x) {\n return x;\n };\n } else if (typeof config.serialize === 'function') {\n serialize = config.serialize;\n } else {\n serialize = defaultSerialize;\n }\n\n var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n var lastState = {};\n var stagedState = {};\n var keysToProcess = [];\n var timeIterator = null;\n var writePromise = null;\n\n var update = function update(state) {\n // add any changed keys to the queue\n Object.keys(state).forEach(function (key) {\n if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n if (lastState[key] === state[key]) return; // value unchanged? noop\n\n if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n keysToProcess.push(key); // add key to queue\n }); //if any key is missing in the new state which was present in the lastState,\n //add it for processing too\n\n Object.keys(lastState).forEach(function (key) {\n if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n keysToProcess.push(key);\n }\n }); // start the time iterator if not running (read: throttle)\n\n if (timeIterator === null) {\n timeIterator = setInterval(processNextKey, throttle);\n }\n\n lastState = state;\n };\n\n function processNextKey() {\n if (keysToProcess.length === 0) {\n if (timeIterator) clearInterval(timeIterator);\n timeIterator = null;\n return;\n }\n\n var key = keysToProcess.shift();\n var endState = transforms.reduce(function (subState, transformer) {\n return transformer.in(subState, key, lastState);\n }, lastState[key]);\n\n if (endState !== undefined) {\n try {\n stagedState[key] = serialize(endState);\n } catch (err) {\n console.error('redux-persist/createPersistoid: error serializing state', err);\n }\n } else {\n //if the endState is undefined, no need to persist the existing serialized content\n delete stagedState[key];\n }\n\n if (keysToProcess.length === 0) {\n writeStagedState();\n }\n }\n\n function writeStagedState() {\n // cleanup any removed keys just before write.\n Object.keys(stagedState).forEach(function (key) {\n if (lastState[key] === undefined) {\n delete stagedState[key];\n }\n });\n writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n }\n\n function passWhitelistBlacklist(key) {\n if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n if (blacklist && blacklist.indexOf(key) !== -1) return false;\n return true;\n }\n\n function onWriteFail(err) {\n // @TODO add fail handlers (typically storage full)\n if (writeFailHandler) writeFailHandler(err);\n\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('Error storing data', err);\n }\n }\n\n var flush = function flush() {\n while (keysToProcess.length !== 0) {\n processNextKey();\n }\n\n return writePromise || Promise.resolve();\n }; // return `persistoid`\n\n\n return {\n update: update,\n flush: flush\n };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n var transforms = config.transforms || [];\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var debug = config.debug;\n var deserialize;\n\n if (config.deserialize === false) {\n deserialize = function deserialize(x) {\n return x;\n };\n } else if (typeof config.deserialize === 'function') {\n deserialize = config.deserialize;\n } else {\n deserialize = defaultDeserialize;\n }\n\n return storage.getItem(storageKey).then(function (serialized) {\n if (!serialized) return undefined;else {\n try {\n var state = {};\n var rawState = deserialize(serialized);\n Object.keys(rawState).forEach(function (key) {\n state[key] = transforms.reduceRight(function (subState, transformer) {\n return transformer.out(subState, key, rawState);\n }, deserialize(rawState[key]));\n });\n return state;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n throw err;\n }\n }\n });\n}\n\nfunction defaultDeserialize(serial) {\n return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n var storage = config.storage;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n @TODO add validation / handling for:\n - persisting a reducer which has nested _persist\n - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (!config) throw new Error('config is required for persistReducer');\n if (!config.key) throw new Error('key is required in persistor config');\n if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n }\n\n var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n var debug = config.debug || false;\n var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n var getStoredState = config.getStoredState || defaultGetStoredState;\n var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n var _persistoid = null;\n var _purge = false;\n var _paused = true;\n\n var conditionalUpdate = function conditionalUpdate(state) {\n // update the persistoid only if we are rehydrated and not paused\n state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n return state;\n };\n\n return function (state, action) {\n var _ref = state || {},\n _persist = _ref._persist,\n rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n var restState = rest;\n\n if (action.type === PERSIST) {\n var _sealed = false;\n\n var _rehydrate = function _rehydrate(payload, err) {\n // dev warning if we are already sealed\n if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n if (!_sealed) {\n action.rehydrate(config.key, payload, err);\n _sealed = true;\n }\n };\n\n timeout && setTimeout(function () {\n !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n }, timeout); // @NOTE PERSIST resumes if paused.\n\n _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n if (_persist) {\n // We still need to call the base reducer because there might be nested\n // uses of persistReducer which need to be aware of the PERSIST action\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n }\n\n if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n action.register(config.key);\n getStoredState(config).then(function (restoredState) {\n var migrate = config.migrate || function (s, v) {\n return Promise.resolve(s);\n };\n\n migrate(restoredState, version).then(function (migratedState) {\n _rehydrate(migratedState);\n }, function (migrateErr) {\n if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n _rehydrate(undefined, migrateErr);\n });\n }, function (err) {\n _rehydrate(undefined, err);\n });\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: {\n version: version,\n rehydrated: false\n }\n });\n } else if (action.type === PURGE) {\n _purge = true;\n action.result(purgeStoredState(config));\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === FLUSH) {\n action.result(_persistoid && _persistoid.flush());\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === PAUSE) {\n _paused = true;\n } else if (action.type === REHYDRATE) {\n // noop on restState if purging\n if (_purge) return _objectSpread({}, restState, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n }) // @NOTE if key does not match, will continue to default else below\n\n });\n\n if (action.key === config.key) {\n var reducedState = baseReducer(restState, action);\n var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n var _newState = _objectSpread({}, reconciledRest, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n })\n });\n\n return conditionalUpdate(_newState);\n }\n } // if we have not already handled PERSIST, straight passthrough\n\n\n if (!_persist) return baseReducer(state, action); // run base reducer:\n // is state modified ? return original : return updated\n\n var newState = baseReducer(restState, action);\n if (newState === restState) return state;\n return conditionalUpdate(_objectSpread({}, newState, {\n _persist: _persist\n }));\n };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; 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); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n registry: [],\n bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case REGISTER:\n return _objectSpread({}, state, {\n registry: [].concat(_toConsumableArray(state.registry), [action.key])\n });\n\n case REHYDRATE:\n var firstIndex = state.registry.indexOf(action.key);\n\n var registry = _toConsumableArray(state.registry);\n\n registry.splice(firstIndex, 1);\n return _objectSpread({}, state, {\n registry: registry,\n bootstrapped: registry.length === 0\n });\n\n default:\n return state;\n }\n};\n\nexport default function persistStore(store, options, cb) {\n // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n if (process.env.NODE_ENV !== 'production') {\n var optionsToTest = options || {};\n var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n bannedKeys.forEach(function (k) {\n if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n });\n }\n\n var boostrappedCb = cb || false;\n\n var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n var register = function register(key) {\n _pStore.dispatch({\n type: REGISTER,\n key: key\n });\n };\n\n var rehydrate = function rehydrate(key, payload, err) {\n var rehydrateAction = {\n type: REHYDRATE,\n payload: payload,\n err: err,\n key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n };\n store.dispatch(rehydrateAction);\n\n _pStore.dispatch(rehydrateAction);\n\n if (boostrappedCb && persistor.getState().bootstrapped) {\n boostrappedCb();\n boostrappedCb = false;\n }\n };\n\n var persistor = _objectSpread({}, _pStore, {\n purge: function purge() {\n var results = [];\n store.dispatch({\n type: PURGE,\n result: function result(purgeResult) {\n results.push(purgeResult);\n }\n });\n return Promise.all(results);\n },\n flush: function flush() {\n var results = [];\n store.dispatch({\n type: FLUSH,\n result: function result(flushResult) {\n results.push(flushResult);\n }\n });\n return Promise.all(results);\n },\n pause: function pause() {\n store.dispatch({\n type: PAUSE\n });\n },\n persist: function persist() {\n store.dispatch({\n type: PERSIST,\n register: register,\n rehydrate: rehydrate\n });\n }\n });\n\n if (!(options && options.manualPersist)) {\n persistor.persist();\n }\n\n return persistor;\n}","import { combineReducers } from 'redux';\r\nimport { persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\n// slices\r\nimport mailReducer from './slices/mail';\r\n// import chatReducer from './slices/chat';\r\n// import productReducer from './slices/product';\r\n// import calendarReducer from './slices/calendar';\r\n// import kanbanReducer from './slices/kanban';\r\nimport conferenceEventReducer from './slices/conference-event';\r\n// import leaveApplicationReducer from './slices/leaveApplication';\r\nimport userReducer from './slices/user';\r\nimport manuscriptReducer from './slices/manuscript';\r\nimport profileReducer from './slices/profile';\r\nimport journalReducer from './slices/journal';\r\nimport taskReducer from './slices/task';\r\nimport tasksReducer from './slices/taskAssignment';\r\nimport questionReducer from './slices/question';\r\nimport authorReducer from './slices/author';\r\nimport surveyReducer from './slices/survey';\r\nimport formReducer from './slices/form';\r\nimport publisherReducer from './slices/publisher';\r\nimport participantReducer from './slices/participant';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const rootPersistConfig = {\r\n key: 'root',\r\n storage,\r\n keyPrefix: 'redux-',\r\n whitelist: [],\r\n};\r\n\r\nexport const productPersistConfig = {\r\n key: 'product',\r\n storage,\r\n keyPrefix: 'redux-',\r\n whitelist: ['sortBy', 'checkout'],\r\n};\r\n\r\nexport const journalPersistConfig = {\r\n key: 'journal',\r\n storage,\r\n keyPrefix: 'redux-',\r\n whitelist: [''],\r\n};\r\n\r\nexport const authorPersistConfig = {\r\n key: 'author',\r\n storage,\r\n keyPrefix: 'redux-',\r\n whitelist: [''],\r\n};\r\n\r\nconst rootReducer = combineReducers({\r\n mail: mailReducer,\r\n // chat: chatReducer,\r\n participant: participantReducer,\r\n // calendar: calendarReducer,\r\n // kanban: kanbanReducer,\r\n // product: persistReducer(productPersistConfig, productReducer),\r\n // leave: leaveApplicationReducer,\r\n user: userReducer,\r\n manuscript: manuscriptReducer,\r\n conferenceEvent: conferenceEventReducer,\r\n profile: profileReducer,\r\n journal: persistReducer(journalPersistConfig, journalReducer),\r\n task: taskReducer,\r\n tasks:tasksReducer,\r\n question: questionReducer,\r\n author: persistReducer(authorPersistConfig, authorReducer),\r\n survey: surveyReducer,\r\n form: formReducer,\r\n publisher: publisherReducer,\r\n});\r\n\r\nexport default rootReducer;\r\n","import { configureStore } from '@reduxjs/toolkit';\r\nimport { useDispatch as useAppDispatch, useSelector as useAppSelector } from 'react-redux';\r\nimport { persistStore, persistReducer } from 'redux-persist';\r\nimport rootReducer, { rootPersistConfig } from './rootReducer';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst store = configureStore({\r\n reducer: persistReducer(rootPersistConfig, rootReducer),\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false,\r\n immutableCheck: false,\r\n }),\r\n});\r\n\r\nconst persistor = persistStore(store);\r\n\r\nconst { dispatch } = store;\r\n\r\nconst useSelector = useAppSelector;\r\n\r\nconst useDispatch = () => useAppDispatch();\r\n\r\nexport { store, persistor, dispatch, useSelector, useDispatch };\r\n","// ----------------------------------------------------------------------\r\n\r\nfunction path(root, sublink) {\r\n return `${root}${sublink}`;\r\n}\r\n\r\nconst ROOTS_AUTH = '/auth';\r\nconst ROOTS_BASE = '/';\r\nconst ROOTS_DASHBOARD = '/dashboard';\r\nconst ROOTS_JOURNAL = '/journal';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const PATH_AUTH = {\r\n root: ROOTS_AUTH,\r\n login: path(ROOTS_AUTH, '/login'),\r\n loginUnprotected: path(ROOTS_AUTH, '/login-unprotected'),\r\n verify: path(ROOTS_AUTH, '/verify'),\r\n resetPassword: path(ROOTS_AUTH, '/reset-password'),\r\n newPassword: path(ROOTS_AUTH, '/new-password'),\r\n register: (useremail, usertypeId, auth) => path(ROOTS_AUTH, `/register/${useremail}/${usertypeId}/${auth}`),\r\n reviewerInvitation: (email, paperid) => path(ROOTS_AUTH, `/reviewer/invitation/${email}/${paperid}`),\r\n editorInvitation: (email) => path(ROOTS_AUTH, `/editor/invitation/${email}`),\r\n};\r\n\r\nexport const PATH_BASE = {\r\n root: ROOTS_BASE,\r\n}\r\n\r\nexport const PATH_PAGE = {\r\n comingSoon: '/coming-soon',\r\n surveyForm: (id) => `/survey-form/${id}`,\r\n maintenance: '/maintenance',\r\n pricing: '/pricing',\r\n payment: '/payment',\r\n about: '/about-us',\r\n contact: '/contact-us',\r\n faqs: '/faqs',\r\n page403: '/403',\r\n page404: '/404',\r\n page500: '/500',\r\n components: '/components',\r\n};\r\n\r\nexport const PATH_DASHBOARD = {\r\n root: ROOTS_DASHBOARD,\r\n landing: {\r\n landing: path(ROOTS_DASHBOARD, '/landing'),\r\n },\r\n user: {\r\n root: path(ROOTS_DASHBOARD, '/user'),\r\n new: path(ROOTS_DASHBOARD, '/user/new'),\r\n list: path(ROOTS_DASHBOARD, '/user/list'),\r\n cards: path(ROOTS_DASHBOARD, '/user/cards'),\r\n profile: path(ROOTS_DASHBOARD, '/user/profile'),\r\n account: path(ROOTS_DASHBOARD, '/user/account'),\r\n createpublisher: (id) => path(ROOTS_DASHBOARD, `/user/createpublisher/${id}`),\r\n editpublisher: (id) => path(ROOTS_DASHBOARD, `/user/editpublisher/${id}`),\r\n },\r\n tasks: {\r\n root: path(ROOTS_DASHBOARD, '/tasks'),\r\n new: path(ROOTS_DASHBOARD, '/tasks/new'),\r\n list: path(ROOTS_DASHBOARD, '/tasks/list'),\r\n cards: path(ROOTS_DASHBOARD, '/tasks/cards'),\r\n profile: path(ROOTS_DASHBOARD, '/tasks/profile'),\r\n account: path(ROOTS_DASHBOARD, '/tasks/account'),\r\n edit: (id) => path(ROOTS_DASHBOARD, `/tasks/${id}/edit`),\r\n },\r\n eCommerce: {\r\n root: path(ROOTS_DASHBOARD, '/e-commerce'),\r\n shop: path(ROOTS_DASHBOARD, '/e-commerce/shop'),\r\n list: path(ROOTS_DASHBOARD, '/e-commerce/list'),\r\n confirmation: (id, paperid) => path(ROOTS_DASHBOARD, `/e-commerce/confirmation/${id}/${paperid}`),\r\n checkout: path(ROOTS_DASHBOARD, `/e-commerce/checkout`),\r\n new: path(ROOTS_DASHBOARD, '/e-commerce/product/new'),\r\n view: (id) => path(ROOTS_DASHBOARD, `/e-commerce/product/${id}`),\r\n edit: (name) => path(ROOTS_DASHBOARD, `/e-commerce/product/${name}/edit`),\r\n demoEdit: path(ROOTS_DASHBOARD, '/e-commerce/product/nike-blazer-low-77-vintage/edit'),\r\n demoView: path(ROOTS_DASHBOARD, '/e-commerce/product/nike-air-force-1-ndestrukt'),\r\n },\r\n admin: {\r\n root: path(ROOTS_DASHBOARD, '/admin'),\r\n conference: path(ROOTS_DASHBOARD, '/admin/conference'),\r\n viewConference: (id) => path(ROOTS_DASHBOARD, `/admin/conference/${id}`),\r\n editConference: (id) => path(ROOTS_DASHBOARD, `/admin/conference/${id}/edit`),\r\n journal: path(ROOTS_DASHBOARD, '/admin/journal'),\r\n viewJournal: (id) => path(ROOTS_DASHBOARD, `/admin/journal/${id}`),\r\n editJournal: (id) => path(ROOTS_DASHBOARD, `/admin/journal/${id}/edit`),\r\n },\r\n invoice: {\r\n root: path(ROOTS_DASHBOARD, '/invoice'),\r\n list: path(ROOTS_DASHBOARD, '/invoice/list'),\r\n new: path(ROOTS_DASHBOARD, '/invoice/list/new'),\r\n view: (id) => path(ROOTS_DASHBOARD, `/invoice/list/${id}`),\r\n edit: (id) => path(ROOTS_DASHBOARD, `/invoice/list/${id}/edit`),\r\n demoEdit: path(ROOTS_DASHBOARD, '/invoice/e99f09a7-dd88-49d5-b1c8-1daf80c2d7b1/edit'),\r\n demoView: path(ROOTS_DASHBOARD, '/invoice/e99f09a7-dd88-49d5-b1c8-1daf80c2d7b5'),\r\n },\r\n blog: {\r\n root: path(ROOTS_DASHBOARD, '/blog'),\r\n new: path(ROOTS_DASHBOARD, '/blog/new'),\r\n view: (title) => path(ROOTS_DASHBOARD, `/blog/post/${title}`),\r\n demoView: path(ROOTS_DASHBOARD, '/blog/post/apply-these-7-secret-techniques-to-improve-event'),\r\n },\r\n authorSubmission: {\r\n root: path(ROOTS_DASHBOARD, '/authorSubmission/dashboard'),\r\n journal: path(ROOTS_DASHBOARD, '/authorSubmission/journal'),\r\n manuscript: path(ROOTS_DASHBOARD, '/authorSubmission/manuscript'),\r\n new: path(ROOTS_DASHBOARD, '/authorSubmission/manuscript/new'),\r\n view: (id) => path(ROOTS_DASHBOARD, `/authorSubmission/manuscript/${id}`),\r\n edit: (id) => path(ROOTS_DASHBOARD, `/authorSubmission/manuscript/${id}/edit`),\r\n },\r\n chiefEditor: {\r\n root: path(ROOTS_DASHBOARD, '/chiefEditor/dashboard'),\r\n taskAssign: path(ROOTS_DASHBOARD, '/chiefEditor/taskAssign'),\r\n usermanagement: path(ROOTS_DASHBOARD, '/chiefEditor/usermanagement'),\r\n userdetails: (userid) => path(ROOTS_DASHBOARD, `/chiefEditor/userdetails/${userid}`),\r\n view: path(ROOTS_DASHBOARD, `/chiefEditor/listing`),\r\n },\r\n reviewer: {\r\n root: path(ROOTS_DASHBOARD, '/reviewer/app'),\r\n manuscript: path(ROOTS_DASHBOARD, '/reviewer/manuscript'),\r\n details: (id) => path(ROOTS_DASHBOARD, `/reviewer/manuscript/${id}`),\r\n invitation: (email, paperid) => path(ROOTS_DASHBOARD, `/reviewer/invitation/${email}/${paperid}`),\r\n },\r\n editor: {\r\n root: path(ROOTS_DASHBOARD, '/editor/dashboard'),\r\n manuscriptlist: path(ROOTS_DASHBOARD, '/editor/ManuscriptListing'),\r\n manuscriptdetail: (taskid, paperid) => path(ROOTS_DASHBOARD, `/editor/ManuscriptDetail/${taskid}/${paperid}`),\r\n invitation: (email) => path(ROOTS_DASHBOARD, `/editor/invitation/${email}`),\r\n },\r\n transaction: {\r\n root: path(ROOTS_DASHBOARD, '/transaction'),\r\n list: path(ROOTS_DASHBOARD, '/transaction/list'),\r\n new: path(ROOTS_DASHBOARD, '/transaction/list/new'),\r\n view: (id) => path(ROOTS_DASHBOARD, `/transaction/list/${id}`),\r\n edit: (id) => path(ROOTS_DASHBOARD, `/transaction/list/${id}/edit`),\r\n },\r\n userPublisherConferenceListing: {\r\n view: (id) => path(ROOTS_DASHBOARD, `/userPublisherConferenceListing/view/${id}`),\r\n },\r\n};\r\n\r\nexport const PATH_JOURNAL_MANAGEMENT = {\r\n root: ROOTS_JOURNAL,\r\n journal: {\r\n root: path(ROOTS_JOURNAL, '/journal-management'),\r\n listcv: path(ROOTS_JOURNAL, '/journal-management/journal-cv-event'),\r\n history: path(ROOTS_JOURNAL, '/journal-management/history'),\r\n shop: path(ROOTS_JOURNAL, '/journal-management/shop'),\r\n view: (id) => path(ROOTS_JOURNAL, `/journal-management/shop/${id}`),\r\n },\r\n survey: {\r\n root: path(ROOTS_JOURNAL, '/survey-management'),\r\n form: path(ROOTS_JOURNAL, '/survey-management/form'),\r\n view: (id) => path(ROOTS_JOURNAL, `/survey-management/form/${id}`),\r\n edit: (id) => path(ROOTS_JOURNAL, `/survey-management/form/${id}/edit`),\r\n },\r\n setting: {\r\n root: path(ROOTS_JOURNAL, '/settings'),\r\n },\r\n};\r\n\r\nexport const PATH_DOCS = {\r\n root: 'https://docs.minimals.cc',\r\n changelog: 'https://docs.minimals.cc/changelog',\r\n};\r\n\r\nexport const PATH_ZONE_ON_STORE = 'https://mui.com/store/items/zone-landing-page/';\r\n\r\nexport const PATH_MINIMAL_ON_STORE = 'https://mui.com/store/items/minimal-dashboard/';\r\n\r\nexport const PATH_FREE_VERSION = 'https://mui.com/store/items/minimal-dashboard-free/';\r\n\r\nexport const PATH_FIGMA_PREVIEW =\r\n 'https://www.figma.com/file/rWMDOkMZYw2VpTdNuBBCvN/%5BPreview%5D-Minimal-Web.26.11.22?node-id=0%3A1&t=ya2mDFiuhTXXLLF1-1';\r\n","import { SvgIcon } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// CloseIcon\r\nexport function CloseIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// StarIcon\r\nexport function StarIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// Using for Alert\r\nexport function InfoIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function WarningIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function SuccessIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function ErrorIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// Using for Checkbox\r\nexport function CheckboxIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function CheckboxCheckedIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function CheckboxIndeterminateIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// Using for Radio Button\r\nexport function RadioIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function RadioCheckedIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// Using for Select Input\r\nexport function InputSelectIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// Using for TreeView\r\nexport function TreeViewCollapseIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function TreeViewExpandIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function TreeViewEndIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import { alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\n// SETUP COLORS\r\n\r\nconst GREY = {\r\n 0: '#FFFFFF',\r\n 100: '#F9FAFB',\r\n 200: '#F4F6F8',\r\n 300: '#DFE3E8',\r\n 400: '#C4CDD5',\r\n 500: '#919EAB',\r\n 600: '#637381',\r\n 700: '#454F5B',\r\n 800: '#212B36',\r\n 900: '#161C24',\r\n};\r\n\r\nconst PRIMARY = {\r\n lighter: '#C8FACD',\r\n light: '#5BE584',\r\n main: '#0047AB',\r\n dark: '#007B55',\r\n darker: '#005249',\r\n contrastText: '#fff',\r\n};\r\n\r\nconst SECONDARY = {\r\n lighter: '#D6E4FF',\r\n light: '#84A9FF',\r\n main: '#3366FF',\r\n dark: '#1939B7',\r\n darker: '#091A7A',\r\n contrastText: '#fff',\r\n};\r\n\r\nconst INFO = {\r\n lighter: '#CAFDF5',\r\n light: '#61F3F3',\r\n main: '#00B8D9',\r\n dark: '#006C9C',\r\n darker: '#003768',\r\n contrastText: '#fff',\r\n};\r\n\r\nconst SUCCESS = {\r\n lighter: '#D8FBDE',\r\n light: '#86E8AB',\r\n main: '#36B37E',\r\n dark: '#1B806A',\r\n darker: '#0A5554',\r\n contrastText: '#fff',\r\n};\r\n\r\nconst WARNING = {\r\n lighter: '#FFF5CC',\r\n light: '#FFD666',\r\n main: '#FFAB00',\r\n dark: '#B76E00',\r\n darker: '#7A4100',\r\n contrastText: GREY[800],\r\n};\r\n\r\nconst ERROR = {\r\n lighter: '#FFE9D5',\r\n light: '#FFAC82',\r\n main: '#FF5630',\r\n dark: '#B71D18',\r\n darker: '#7A0916',\r\n contrastText: '#fff',\r\n};\r\n\r\nconst COMMON = {\r\n common: { black: '#000', white: '#fff' },\r\n primary: PRIMARY,\r\n secondary: SECONDARY,\r\n info: INFO,\r\n success: SUCCESS,\r\n warning: WARNING,\r\n error: ERROR,\r\n grey: GREY,\r\n divider: alpha(GREY[500], 0.24),\r\n action: {\r\n hover: alpha(GREY[500], 0.08),\r\n selected: alpha(GREY[500], 0.16),\r\n disabled: alpha(GREY[500], 0.8),\r\n disabledBackground: alpha(GREY[500], 0.24),\r\n focus: alpha(GREY[500], 0.24),\r\n hoverOpacity: 0.08,\r\n disabledOpacity: 0.48,\r\n },\r\n};\r\n\r\nexport default function palette(themeMode) {\r\n const light = {\r\n ...COMMON,\r\n mode: 'light',\r\n text: {\r\n primary: GREY[800],\r\n secondary: GREY[600],\r\n disabled: GREY[500],\r\n },\r\n background: { paper: '#fff', default: '#fff', neutral: GREY[200] },\r\n action: {\r\n ...COMMON.action,\r\n active: GREY[600],\r\n },\r\n };\r\n\r\n const dark = {\r\n ...COMMON,\r\n mode: 'dark',\r\n text: {\r\n primary: '#fff',\r\n secondary: GREY[500],\r\n disabled: GREY[600],\r\n },\r\n background: {\r\n paper: GREY[800],\r\n default: GREY[900],\r\n neutral: alpha(GREY[500], 0.16),\r\n },\r\n action: {\r\n ...COMMON.action,\r\n active: GREY[500],\r\n },\r\n };\r\n\r\n return themeMode === 'light' ? light : dark;\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport function remToPx(value) {\r\n return Math.round(parseFloat(value) * 16);\r\n}\r\n\r\nexport function pxToRem(value) {\r\n return `${value / 16}rem`;\r\n}\r\n\r\nexport function responsiveFontSizes({ sm, md, lg }) {\r\n return {\r\n '@media (min-width:600px)': {\r\n fontSize: pxToRem(sm),\r\n },\r\n '@media (min-width:900px)': {\r\n fontSize: pxToRem(md),\r\n },\r\n '@media (min-width:1200px)': {\r\n fontSize: pxToRem(lg),\r\n },\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst FONT_PRIMARY = 'Public Sans, sans-serif'; // Google Font\r\n// const FONT_SECONDARY = 'CircularStd, sans-serif'; // Local Font\r\n\r\nconst typography = {\r\n fontFamily: FONT_PRIMARY,\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 600,\r\n fontWeightBold: 700,\r\n h1: {\r\n fontWeight: 800,\r\n lineHeight: 80 / 64,\r\n fontSize: pxToRem(40),\r\n ...responsiveFontSizes({ sm: 52, md: 58, lg: 64 }),\r\n },\r\n h2: {\r\n fontWeight: 800,\r\n lineHeight: 64 / 48,\r\n fontSize: pxToRem(32),\r\n ...responsiveFontSizes({ sm: 40, md: 44, lg: 48 }),\r\n },\r\n h3: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(24),\r\n ...responsiveFontSizes({ sm: 26, md: 30, lg: 32 }),\r\n },\r\n h4: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(20),\r\n ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 }),\r\n },\r\n h5: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(18),\r\n ...responsiveFontSizes({ sm: 19, md: 20, lg: 20 }),\r\n },\r\n h6: {\r\n fontWeight: 700,\r\n lineHeight: 28 / 18,\r\n fontSize: pxToRem(17),\r\n ...responsiveFontSizes({ sm: 18, md: 18, lg: 18 }),\r\n },\r\n subtitle1: {\r\n fontWeight: 600,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(16),\r\n },\r\n subtitle2: {\r\n fontWeight: 600,\r\n lineHeight: 22 / 14,\r\n fontSize: pxToRem(14),\r\n },\r\n body1: {\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(16),\r\n },\r\n body2: {\r\n lineHeight: 22 / 14,\r\n fontSize: pxToRem(14),\r\n },\r\n caption: {\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(12),\r\n },\r\n overline: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(12),\r\n textTransform: 'uppercase',\r\n },\r\n button: {\r\n fontWeight: 700,\r\n lineHeight: 24 / 14,\r\n fontSize: pxToRem(14),\r\n textTransform: 'capitalize',\r\n },\r\n};\r\n\r\nexport default typography;\r\n","import axios from 'axios';\r\n// config\r\nimport { HOST_API_KEY } from '../config-global';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst axiosInstance = axios.create({ baseURL: HOST_API_KEY });\r\n\r\naxiosInstance.interceptors.response.use(\r\n (response) => response,\r\n (error) => Promise.reject((error.response && error.response.data) || 'Something went wrong')\r\n);\r\n\r\nexport default axiosInstance;\r\n","// @mui\r\nimport { alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function bgBlur(props) {\r\n const color = props?.color || '#000000';\r\n const blur = props?.blur || 6;\r\n const opacity = props?.opacity || 0.8;\r\n const imgUrl = props?.imgUrl;\r\n\r\n if (imgUrl) {\r\n return {\r\n position: 'relative',\r\n backgroundImage: `url(${imgUrl})`,\r\n '&:before': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 9,\r\n content: '\"\"',\r\n width: '100%',\r\n height: '100%',\r\n backdropFilter: `blur(${blur}px)`,\r\n WebkitBackdropFilter: `blur(${blur}px)`,\r\n backgroundColor: alpha(color, opacity),\r\n },\r\n };\r\n }\r\n\r\n return {\r\n backdropFilter: `blur(${blur}px)`,\r\n WebkitBackdropFilter: `blur(${blur}px)`,\r\n backgroundColor: alpha(color, opacity),\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function bgGradient(props) {\r\n const direction = props?.direction || 'to bottom';\r\n const startColor = props?.startColor;\r\n const endColor = props?.endColor;\r\n const imgUrl = props?.imgUrl;\r\n const color = props?.color;\r\n\r\n if (imgUrl) {\r\n return {\r\n background: `linear-gradient(${direction}, ${startColor || color}, ${\r\n endColor || color\r\n }), url(${imgUrl})`,\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center center',\r\n };\r\n }\r\n\r\n return {\r\n background: `linear-gradient(${direction}, ${startColor}, ${endColor})`,\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function textGradient(value) {\r\n return {\r\n background: `-webkit-linear-gradient(${value})`,\r\n WebkitBackgroundClip: 'text',\r\n WebkitTextFillColor: 'transparent',\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function filterStyles(value) {\r\n return {\r\n filter: value,\r\n WebkitFilter: value,\r\n MozFilter: value,\r\n };\r\n}\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const hideScrollbarY = {\r\n msOverflowStyle: 'none',\r\n scrollbarWidth: 'none',\r\n overflowY: 'scroll',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n};\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const hideScrollbarX = {\r\n msOverflowStyle: 'none',\r\n scrollbarWidth: 'none',\r\n overflowX: 'scroll',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n};\r\n","import numeral from 'numeral';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function fNumber(number) {\r\n return numeral(number).format();\r\n}\r\n\r\nexport function fCurrency(number) {\r\n const format = number ? `RM ${numeral(number).format('0,0.00')}` : '';\r\n\r\n return result(format, '.00');\r\n}\r\n\r\nexport function fPercent(number) {\r\n const format = number ? numeral(Number(number) / 100).format('0.0%') : '';\r\n\r\n return result(format, '.0');\r\n}\r\n\r\nexport function fShortenNumber(number) {\r\n const format = number ? numeral(number).format('0.00a') : '0';\r\n\r\n return result(format, '.00');\r\n}\r\n\r\nexport function fData(number) {\r\n const format = number ? numeral(number).format('0.0 b') : '';\r\n\r\n return result(format, '.0');\r\n}\r\n\r\nfunction result(format, key = '.00') {\r\n const isInteger = format.includes(key);\r\n\r\n return isInteger ? format.replace(key, '') : format;\r\n}\r\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/index.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","import hljs from 'highlight.js';\r\nimport 'highlight.js/styles/monokai-sublime.css';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nhljs.configure({\r\n languages: ['javascript', 'jsx', 'sh', 'bash', 'html', 'scss', 'css', 'json'],\r\n});\r\n\r\nif (typeof window !== 'undefined') {\r\n window.hljs = hljs;\r\n}\r\n","import axios from 'axios';\r\nimport { ServerConfiguration } from './serverConfig';\r\n\r\nconst uploader = async (files, filenames, directory, ID) => {\r\n const formData = new FormData();\r\n formData.append(\"Directory\", directory);\r\n formData.append(\"ID\", ID);\r\n\r\n files.forEach((file, index) => {\r\n formData.append(\"upload[]\", files[index]);\r\n formData.append(\"fileName[]\", filenames[index]);\r\n });\r\n\r\n const config = { headers: { 'Content-Type': 'multipart/form-data' } };\r\n\r\n const resp = await axios.post(ServerConfiguration.uploadUrl, formData, config)\r\n try {\r\n return resp.status === 200\r\n }\r\n catch (err) {\r\n console.log(err)\r\n return false\r\n }\r\n}\r\n\r\nexport default uploader;","// ----------------------------------------------------------------------\r\n\r\nexport default function localStorageAvailable() {\r\n try {\r\n // Incognito mode might reject access to the localStorage for security reasons.\r\n // window isn't defined on Node.js\r\n // https://stackoverflow.com/questions/16427636/check-if-localstorage-is-available\r\n const key = 'test';\r\n window.localStorage.setItem(key, key);\r\n\r\n window.localStorage.removeItem(key);\r\n\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n}\r\n","export const ServerConfiguration = {\r\n // testingServerUrl: \"http://192.168.137.199/taskmate/testapi/api/testapi/\",\r\n // testingServerUrl: \"http://10.64.222.188/taskmate/testapi/api/testapi/\", // Logan mentioned this is current server url been used for development (PC4-cheetat there)\r\n testingServerUrl: \"https://inquirescholars.com/DJCMApi/api/DJCM/\", // Teoh mentioned use this as der server url (PC1)\r\n // testingServerUrl: \"https://inquirescholars.com/testapi/api/testapi/\",\r\n LiveServerUrl: \"https://inquirescholars.com/DJCMApi/api/DJCM/\",\r\n uploadUrl: \"https://inquirescholars.com/DJCMImage/upload.php\",\r\n}","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-7 3c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6m7 13H5v-.23c0-.62.28-1.2.76-1.58C7.47 15.82 9.64 15 12 15s4.53.82 6.24 2.19c.48.38.76.97.76 1.58z\"\n}), 'AccountBox');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-1 9H9V9h10zm-4 4H9v-2h6zm4-8H9V5h10z\"\n}), 'LibraryBooks');","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getLoadingButtonUtilityClass(slot) {\n return generateUtilityClass('MuiLoadingButton', slot);\n}\nconst loadingButtonClasses = generateUtilityClasses('MuiLoadingButton', ['root', 'loading', 'loadingIndicator', 'loadingIndicatorCenter', 'loadingIndicatorStart', 'loadingIndicatorEnd', 'endIconLoadingEnd', 'startIconLoadingStart']);\nexport default loadingButtonClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"disabled\", \"id\", \"loading\", \"loadingIndicator\", \"loadingPosition\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@mui/utils';\nimport { capitalize, unstable_useId as useId } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled } from '@mui/material/styles';\nimport { useDefaultProps } from '@mui/material/DefaultPropsProvider';\nimport Button from '@mui/material/Button';\nimport { ButtonGroupContext } from '@mui/material/ButtonGroup';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport resolveProps from '@mui/utils/resolveProps';\nimport loadingButtonClasses, { getLoadingButtonUtilityClass } from './loadingButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n loading,\n loadingPosition,\n classes\n } = ownerState;\n const slots = {\n root: ['root', loading && 'loading'],\n startIcon: [loading && `startIconLoading${capitalize(loadingPosition)}`],\n endIcon: [loading && `endIconLoading${capitalize(loadingPosition)}`],\n loadingIndicator: ['loadingIndicator', loading && `loadingIndicator${capitalize(loadingPosition)}`]\n };\n const composedClasses = composeClasses(slots, getLoadingButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\n// TODO use `import { rootShouldForwardProp } from '../styles/styled';` once move to core\nconst rootShouldForwardProp = prop => prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as' && prop !== 'classes';\nconst LoadingButtonRoot = styled(Button, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiLoadingButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root, styles.startIconLoadingStart && {\n [`& .${loadingButtonClasses.startIconLoadingStart}`]: styles.startIconLoadingStart\n }, styles.endIconLoadingEnd && {\n [`& .${loadingButtonClasses.endIconLoadingEnd}`]: styles.endIconLoadingEnd\n }];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0\n }\n}, ownerState.loadingPosition === 'center' && {\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n [`&.${loadingButtonClasses.loading}`]: {\n color: 'transparent'\n }\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginRight: -8\n }\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginLeft: -8\n }\n}));\nconst LoadingButtonLoadingIndicator = styled('span', {\n name: 'MuiLoadingButton',\n slot: 'LoadingIndicator',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.loadingIndicator, styles[`loadingIndicator${capitalize(ownerState.loadingPosition)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'absolute',\n visibility: 'visible',\n display: 'flex'\n}, ownerState.loadingPosition === 'start' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n left: ownerState.size === 'small' ? 10 : 14\n}, ownerState.loadingPosition === 'start' && ownerState.variant === 'text' && {\n left: 6\n}, ownerState.loadingPosition === 'center' && {\n left: '50%',\n transform: 'translate(-50%)',\n color: (theme.vars || theme).palette.action.disabled\n}, ownerState.loadingPosition === 'end' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n right: ownerState.size === 'small' ? 10 : 14\n}, ownerState.loadingPosition === 'end' && ownerState.variant === 'text' && {\n right: 6\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n position: 'relative',\n left: -10\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n position: 'relative',\n right: -10\n}));\nconst LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(inProps, ref) {\n const contextProps = React.useContext(ButtonGroupContext);\n const resolvedProps = resolveProps(contextProps, inProps);\n const props = useDefaultProps({\n props: resolvedProps,\n name: 'MuiLoadingButton'\n });\n const {\n children,\n disabled = false,\n id: idProp,\n loading = false,\n loadingIndicator: loadingIndicatorProp,\n loadingPosition = 'center',\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const id = useId(idProp);\n const loadingIndicator = loadingIndicatorProp != null ? loadingIndicatorProp : /*#__PURE__*/_jsx(CircularProgress, {\n \"aria-labelledby\": id,\n color: \"inherit\",\n size: 16\n });\n const ownerState = _extends({}, props, {\n disabled,\n loading,\n loadingIndicator,\n loadingPosition,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const loadingButtonLoadingIndicator = loading ? /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n }) : null;\n return /*#__PURE__*/_jsxs(LoadingButtonRoot, _extends({\n disabled: disabled || loading,\n id: id,\n ref: ref\n }, other, {\n variant: variant,\n classes: classes,\n ownerState: ownerState,\n children: [ownerState.loadingPosition === 'end' ? children : loadingButtonLoadingIndicator, ownerState.loadingPosition === 'end' ? loadingButtonLoadingIndicator : children]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LoadingButton.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * @ignore\n */\n id: PropTypes.string,\n /**\n * If `true`, the loading indicator is shown and the button becomes disabled.\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Element placed before the children if the button is in loading state.\n * The node should contain an element with `role=\"progressbar\"` with an accessible name.\n * By default we render a `CircularProgress` that is labelled by the button itself.\n * @default \n */\n loadingIndicator: PropTypes.node,\n /**\n * The loading indicator can be positioned on the start, end, or the center of the button.\n * @default 'center'\n */\n loadingPosition: chainPropTypes(PropTypes.oneOf(['start', 'end', 'center']), props => {\n if (props.loadingPosition === 'start' && !props.startIcon) {\n return new Error(`MUI: The loadingPosition=\"start\" should be used in combination with startIcon.`);\n }\n if (props.loadingPosition === 'end' && !props.endIcon) {\n return new Error(`MUI: The loadingPosition=\"end\" should be used in combination with endIcon.`);\n }\n return null;\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default LoadingButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertUtilityClass(slot) {\n return generateUtilityClass('MuiAlert', slot);\n}\nconst alertClasses = generateUtilityClasses('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'colorSuccess', 'colorInfo', 'colorWarning', 'colorError', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\nexport default alertClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"children\", \"className\", \"closeText\", \"color\", \"components\", \"componentsProps\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"slotProps\", \"slots\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useSlot from '../utils/useSlot';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport alertClasses, { getAlertUtilityClass } from './alertClasses';\nimport IconButton from '../IconButton';\nimport SuccessOutlinedIcon from '../internal/svg-icons/SuccessOutlined';\nimport ReportProblemOutlinedIcon from '../internal/svg-icons/ReportProblemOutlined';\nimport ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';\nimport InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n variant,\n color,\n severity,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color || severity)}`, `${variant}${capitalize(color || severity)}`, `${variant}`],\n icon: ['icon'],\n message: ['message'],\n action: ['action']\n };\n return composeClasses(slots, getAlertUtilityClass, classes);\n};\nconst AlertRoot = styled(Paper, {\n name: 'MuiAlert',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`]];\n }\n})(({\n theme\n}) => {\n const getColor = theme.palette.mode === 'light' ? darken : lighten;\n const getBackgroundColor = theme.palette.mode === 'light' ? lighten : darken;\n return _extends({}, theme.typography.body2, {\n backgroundColor: 'transparent',\n display: 'flex',\n padding: '6px 16px',\n variants: [...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n props: {\n colorSeverity: color,\n variant: 'standard'\n },\n style: {\n color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n [`& .${alertClasses.icon}`]: theme.vars ? {\n color: theme.vars.palette.Alert[`${color}IconColor`]\n } : {\n color: theme.palette[color].main\n }\n }\n })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n props: {\n colorSeverity: color,\n variant: 'outlined'\n },\n style: {\n color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n [`& .${alertClasses.icon}`]: theme.vars ? {\n color: theme.vars.palette.Alert[`${color}IconColor`]\n } : {\n color: theme.palette[color].main\n }\n }\n })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.dark).map(([color]) => ({\n props: {\n colorSeverity: color,\n variant: 'filled'\n },\n style: _extends({\n fontWeight: theme.typography.fontWeightMedium\n }, theme.vars ? {\n color: theme.vars.palette.Alert[`${color}FilledColor`],\n backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n } : {\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n color: theme.palette.getContrastText(theme.palette[color].main)\n })\n }))]\n });\n});\nconst AlertIcon = styled('div', {\n name: 'MuiAlert',\n slot: 'Icon',\n overridesResolver: (props, styles) => styles.icon\n})({\n marginRight: 12,\n padding: '7px 0',\n display: 'flex',\n fontSize: 22,\n opacity: 0.9\n});\nconst AlertMessage = styled('div', {\n name: 'MuiAlert',\n slot: 'Message',\n overridesResolver: (props, styles) => styles.message\n})({\n padding: '8px 0',\n minWidth: 0,\n overflow: 'auto'\n});\nconst AlertAction = styled('div', {\n name: 'MuiAlert',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n display: 'flex',\n alignItems: 'flex-start',\n padding: '4px 0 0 16px',\n marginLeft: 'auto',\n marginRight: -8\n});\nconst defaultIconMapping = {\n success: /*#__PURE__*/_jsx(SuccessOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n warning: /*#__PURE__*/_jsx(ReportProblemOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n error: /*#__PURE__*/_jsx(ErrorOutlineIcon, {\n fontSize: \"inherit\"\n }),\n info: /*#__PURE__*/_jsx(InfoOutlinedIcon, {\n fontSize: \"inherit\"\n })\n};\nconst Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAlert'\n });\n const {\n action,\n children,\n className,\n closeText = 'Close',\n color,\n components = {},\n componentsProps = {},\n icon,\n iconMapping = defaultIconMapping,\n onClose,\n role = 'alert',\n severity = 'success',\n slotProps = {},\n slots = {},\n variant = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n severity,\n variant,\n colorSeverity: color || severity\n });\n const classes = useUtilityClasses(ownerState);\n const externalForwardedProps = {\n slots: _extends({\n closeButton: components.CloseButton,\n closeIcon: components.CloseIcon\n }, slots),\n slotProps: _extends({}, componentsProps, slotProps)\n };\n const [CloseButtonSlot, closeButtonProps] = useSlot('closeButton', {\n elementType: IconButton,\n externalForwardedProps,\n ownerState\n });\n const [CloseIconSlot, closeIconProps] = useSlot('closeIcon', {\n elementType: CloseIcon,\n externalForwardedProps,\n ownerState\n });\n return /*#__PURE__*/_jsxs(AlertRoot, _extends({\n role: role,\n elevation: 0,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [icon !== false ? /*#__PURE__*/_jsx(AlertIcon, {\n ownerState: ownerState,\n className: classes.icon,\n children: icon || iconMapping[severity] || defaultIconMapping[severity]\n }) : null, /*#__PURE__*/_jsx(AlertMessage, {\n ownerState: ownerState,\n className: classes.message,\n children: children\n }), action != null ? /*#__PURE__*/_jsx(AlertAction, {\n ownerState: ownerState,\n className: classes.action,\n children: action\n }) : null, action == null && onClose ? /*#__PURE__*/_jsx(AlertAction, {\n ownerState: ownerState,\n className: classes.action,\n children: /*#__PURE__*/_jsx(CloseButtonSlot, _extends({\n size: \"small\",\n \"aria-label\": closeText,\n title: closeText,\n color: \"inherit\",\n onClick: onClose\n }, closeButtonProps, {\n children: /*#__PURE__*/_jsx(CloseIconSlot, _extends({\n fontSize: \"small\"\n }, closeIconProps))\n }))\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The action to display. It renders after the message, at the end of the alert.\n */\n action: PropTypes.node,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Override the default label for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The color of the component. Unless provided, the value is taken from the `severity` prop.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n *\n * @default {}\n */\n components: PropTypes.shape({\n CloseButton: PropTypes.elementType,\n CloseIcon: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n closeButton: PropTypes.object,\n closeIcon: PropTypes.object\n }),\n /**\n * Override the icon displayed before the children.\n * Unless provided, the icon is mapped to the value of the `severity` prop.\n * Set to `false` to remove the `icon`.\n */\n icon: PropTypes.node,\n /**\n * The component maps the `severity` prop to a range of different icons,\n * for instance success to ``.\n * If you wish to change this mapping, you can provide your own.\n * Alternatively, you can use the `icon` prop to override the icon displayed.\n */\n iconMapping: PropTypes.shape({\n error: PropTypes.node,\n info: PropTypes.node,\n success: PropTypes.node,\n warning: PropTypes.node\n }),\n /**\n * Callback fired when the component requests to be closed.\n * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * The ARIA role attribute of the element.\n * @default 'alert'\n */\n role: PropTypes.string,\n /**\n * The severity of the alert. This defines the color and icon used.\n * @default 'success'\n */\n severity: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n closeButton: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n closeIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n closeButton: PropTypes.elementType,\n closeIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'standard'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default Alert;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionKey\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n _excluded2 = [\"ref\"],\n _excluded3 = [\"key\"],\n _excluded4 = [\"key\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport useAutocomplete, { createFilterOptions } from '../useAutocomplete';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n },\n [`& .${autocompleteClasses.tag}`]: {\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n },\n [`& .${autocompleteClasses.inputRoot}`]: {\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 5px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 8px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: {\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n },\n variants: [{\n props: {\n fullWidth: true\n },\n style: {\n width: '100%'\n }\n }, {\n props: {\n size: 'small'\n },\n style: {\n [`& .${autocompleteClasses.tag}`]: {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }\n }\n }, {\n props: {\n inputFocused: true\n },\n style: {\n [`& .${autocompleteClasses.input}`]: {\n opacity: 1\n }\n }\n }, {\n props: {\n multiple: true\n },\n style: {\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap'\n }\n }\n }]\n});\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: '50%',\n transform: 'translate(0, -50%)'\n});\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})({\n padding: 2,\n marginRight: -2,\n variants: [{\n props: {\n popupOpen: true\n },\n style: {\n transform: 'rotate(180deg)'\n }\n }]\n});\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme\n}) => ({\n zIndex: (theme.vars || theme).zIndex.modal,\n variants: [{\n props: {\n disablePortal: true\n },\n style: {\n position: 'absolute'\n }\n }]\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel: getOptionLabelProp,\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const {\n onMouseDown: handleInputMouseDown\n } = getInputProps();\n const {\n ref: externalListboxRef\n } = ListboxProps != null ? ListboxProps : {};\n const _getListboxProps = getListboxProps(),\n {\n ref: listboxRef\n } = _getListboxProps,\n otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n const defaultGetOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n };\n const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n getOptionLabel,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => {\n const _getCustomizedTagProp = getCustomizedTagProps({\n index\n }),\n {\n key\n } = _getCustomizedTagProp,\n customTagProps = _objectWithoutPropertiesLoose(_getCustomizedTagProp, _excluded3);\n return /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, customTagProps, ChipProps), key);\n });\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => {\n // Need to clearly apply key because of https://github.com/vercel/next.js/issues/55642\n const {\n key\n } = props2,\n otherProps = _objectWithoutPropertiesLoose(props2, _excluded4);\n return /*#__PURE__*/_jsx(\"li\", _extends({}, otherProps, {\n children: getOptionLabel(option)\n }), key);\n };\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n }, ownerState);\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment,\n onClick: event => {\n if (event.target === event.currentTarget) {\n handleInputMouseDown(event);\n }\n }\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, otherListboxProps, ListboxProps, {\n ref: combinedListboxRef,\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })) : null]\n }))\n })) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, the portion of the selected suggestion that the user hasn't typed,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n *\n * When using the `freeSolo` mode, the typed value will be the input value\n * if the Autocomplete loses focus without highlighting an option.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set it to `true` if you want to help the user enter a new value.\n * Set it to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @default createFilterOptions()\n * @param {Value[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {Value[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {Value} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the key for a given option.\n * This can be useful when the labels of options are not unique (since labels are used as keys by default).\n *\n * @param {Value} option The option to get the key for.\n * @returns {string | number}\n */\n getOptionKey: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {Value} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {Value} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {Value} option The option to test.\n * @param {Value} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, for example `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value|Value[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {Value} option The option to render.\n * @param {object} state The state of each option.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {Value[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alt\", \"children\", \"className\", \"component\", \"slots\", \"slotProps\", \"imgProps\", \"sizes\", \"src\", \"srcSet\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Person from '../internal/svg-icons/Person';\nimport { getAvatarUtilityClass } from './avatarClasses';\nimport useSlot from '../utils/useSlot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n colorDefault\n } = ownerState;\n const slots = {\n root: ['root', variant, colorDefault && 'colorDefault'],\n img: ['img'],\n fallback: ['fallback']\n };\n return composeClasses(slots, getAvatarUtilityClass, classes);\n};\nconst AvatarRoot = styled('div', {\n name: 'MuiAvatar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n }\n})(({\n theme\n}) => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: 40,\n height: 40,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(20),\n lineHeight: 1,\n borderRadius: '50%',\n overflow: 'hidden',\n userSelect: 'none',\n variants: [{\n props: {\n variant: 'rounded'\n },\n style: {\n borderRadius: (theme.vars || theme).shape.borderRadius\n }\n }, {\n props: {\n variant: 'square'\n },\n style: {\n borderRadius: 0\n }\n }, {\n props: {\n colorDefault: true\n },\n style: _extends({\n color: (theme.vars || theme).palette.background.default\n }, theme.vars ? {\n backgroundColor: theme.vars.palette.Avatar.defaultBg\n } : _extends({\n backgroundColor: theme.palette.grey[400]\n }, theme.applyStyles('dark', {\n backgroundColor: theme.palette.grey[600]\n })))\n }]\n}));\nconst AvatarImg = styled('img', {\n name: 'MuiAvatar',\n slot: 'Img',\n overridesResolver: (props, styles) => styles.img\n})({\n width: '100%',\n height: '100%',\n textAlign: 'center',\n // Handle non-square image. The property isn't supported by IE11.\n objectFit: 'cover',\n // Hide alt text.\n color: 'transparent',\n // Hide the image broken icon, only works on Chrome.\n textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n name: 'MuiAvatar',\n slot: 'Fallback',\n overridesResolver: (props, styles) => styles.fallback\n})({\n width: '75%',\n height: '75%'\n});\nfunction useLoaded({\n crossOrigin,\n referrerPolicy,\n src,\n srcSet\n}) {\n const [loaded, setLoaded] = React.useState(false);\n React.useEffect(() => {\n if (!src && !srcSet) {\n return undefined;\n }\n setLoaded(false);\n let active = true;\n const image = new Image();\n image.onload = () => {\n if (!active) {\n return;\n }\n setLoaded('loaded');\n };\n image.onerror = () => {\n if (!active) {\n return;\n }\n setLoaded('error');\n };\n image.crossOrigin = crossOrigin;\n image.referrerPolicy = referrerPolicy;\n image.src = src;\n if (srcSet) {\n image.srcset = srcSet;\n }\n return () => {\n active = false;\n };\n }, [crossOrigin, referrerPolicy, src, srcSet]);\n return loaded;\n}\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAvatar'\n });\n const {\n alt,\n children: childrenProp,\n className,\n component = 'div',\n slots = {},\n slotProps = {},\n imgProps,\n sizes,\n src,\n srcSet,\n variant = 'circular'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n let children = null;\n\n // Use a hook instead of onError on the img element to support server-side rendering.\n const loaded = useLoaded(_extends({}, imgProps, {\n src,\n srcSet\n }));\n const hasImg = src || srcSet;\n const hasImgNotFailing = hasImg && loaded !== 'error';\n const ownerState = _extends({}, props, {\n colorDefault: !hasImgNotFailing,\n component,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const [ImgSlot, imgSlotProps] = useSlot('img', {\n className: classes.img,\n elementType: AvatarImg,\n externalForwardedProps: {\n slots,\n slotProps: {\n img: _extends({}, imgProps, slotProps.img)\n }\n },\n additionalProps: {\n alt,\n src,\n srcSet,\n sizes\n },\n ownerState\n });\n if (hasImgNotFailing) {\n children = /*#__PURE__*/_jsx(ImgSlot, _extends({}, imgSlotProps));\n // We only render valid children, non valid children are rendered with a fallback\n // We consider that invalid children are all falsy values, except 0, which is valid.\n } else if (!!childrenProp || childrenProp === 0) {\n children = childrenProp;\n } else if (hasImg && alt) {\n children = alt[0];\n } else {\n children = /*#__PURE__*/_jsx(AvatarFallback, {\n ownerState: ownerState,\n className: classes.fallback\n });\n }\n return /*#__PURE__*/_jsx(AvatarRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Used in combination with `src` or `srcSet` to\n * provide an alt attribute for the rendered `img` element.\n */\n alt: PropTypes.string,\n /**\n * Used to render icon or text elements inside the Avatar if `src` is not set.\n * This can be an element, or just a string.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n * It can be used to listen for the loading error event.\n * @deprecated Use `slotProps.img` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n */\n imgProps: PropTypes.object,\n /**\n * The `sizes` attribute for the `img` element.\n */\n sizes: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n img: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n img: PropTypes.elementType\n }),\n /**\n * The `src` attribute for the `img` element.\n */\n src: PropTypes.string,\n /**\n * The `srcSet` attribute for the `img` element.\n * Use this attribute for responsive image display.\n */\n srcSet: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The shape of the avatar.\n * @default 'circular'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAvatarUtilityClass(slot) {\n return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"TransitionComponent\", \"transitionDuration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n invisible\n } = ownerState;\n const slots = {\n root: ['root', invisible && 'invisible']\n };\n return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n name: 'MuiBackdrop',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.invisible && styles.invisible];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n var _slotProps$root, _ref, _slots$root;\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiBackdrop'\n });\n const {\n children,\n className,\n component = 'div',\n components = {},\n componentsProps = {},\n invisible = false,\n open,\n slotProps = {},\n slots = {},\n TransitionComponent = Fade,\n transitionDuration\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n invisible\n });\n const classes = useUtilityClasses(ownerState);\n const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other, {\n children: /*#__PURE__*/_jsx(BackdropRoot, _extends({\n \"aria-hidden\": true\n }, rootSlotProps, {\n as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n className: clsx(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n classes: classes,\n ref: ref,\n children: children\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n * @default false\n */\n invisible: PropTypes.bool,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Fade\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Backdrop;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const _extendSxProp = extendSxProp(inProps),\n {\n className,\n component = 'div'\n } = _extendSxProp,\n other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n return /*#__PURE__*/_jsx(BoxRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme\n }, other));\n });\n return Box;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nimport THEME_ID from '../styles/identifier';\nimport boxClasses from './boxClasses';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n themeId: THEME_ID,\n defaultTheme,\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersSlideTransitionUtilityClass = slot => // TODO v6: Rename 'PrivatePickersSlideTransition' to 'MuiPickersSlideTransition' to follow convention\ngenerateUtilityClass('PrivatePickersSlideTransition', slot);\nexport const pickersSlideTransitionClasses = generateUtilityClasses( // TODO v6: Rename 'PrivatePickersSlideTransition' to 'MuiPickersSlideTransition' to follow convention\n'PrivatePickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { getPickersSlideTransitionUtilityClass, pickersSlideTransitionClasses } from './pickersSlideTransitionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersSlideTransitionUtilityClass, classes);\n};\n\nexport const slideAnimationDuration = 350;\nconst PickersSlideTransitionRoot = styled(TransitionGroup, {\n name: 'PrivatePickersSlideTransition',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`.${pickersSlideTransitionClasses['slideEnter-left']}`]: styles['slideEnter-left']\n }, {\n [`.${pickersSlideTransitionClasses['slideEnter-right']}`]: styles['slideEnter-right']\n }, {\n [`.${pickersSlideTransitionClasses.slideEnterActive}`]: styles.slideEnterActive\n }, {\n [`.${pickersSlideTransitionClasses.slideExit}`]: styles.slideExit\n }, {\n [`.${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: styles['slideExitActiveLeft-left']\n }, {\n [`.${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: styles['slideExitActiveLeft-right']\n }]\n})(({\n theme\n}) => {\n const slideTransition = theme.transitions.create('transform', {\n duration: slideAnimationDuration,\n easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n });\n return {\n display: 'block',\n position: 'relative',\n overflowX: 'hidden',\n '& > *': {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0\n },\n [`& .${pickersSlideTransitionClasses['slideEnter-left']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n zIndex: 1\n },\n [`& .${pickersSlideTransitionClasses['slideEnter-right']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n zIndex: 1\n },\n [`& .${pickersSlideTransitionClasses.slideEnterActive}`]: {\n transform: 'translate(0%)',\n transition: slideTransition\n },\n [`& .${pickersSlideTransitionClasses.slideExit}`]: {\n transform: 'translate(0%)'\n },\n [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n transition: slideTransition,\n zIndex: 0\n },\n [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n transition: slideTransition,\n zIndex: 0\n }\n };\n});\n/**\n * @ignore - do not document.\n */\n\nexport const PickersSlideTransition = props => {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n children,\n className,\n reduceAnimations,\n slideDirection,\n transKey\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n\n if (reduceAnimations) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: clsx(classes.root, className),\n children: children\n });\n }\n\n const transitionClasses = {\n exit: pickersSlideTransitionClasses.slideExit,\n enterActive: pickersSlideTransitionClasses.slideEnterActive,\n enter: pickersSlideTransitionClasses[`slideEnter-${slideDirection}`],\n exitActive: pickersSlideTransitionClasses[`slideExitActiveLeft-${slideDirection}`]\n };\n return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n className: clsx(classes.root, className),\n childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n classNames: transitionClasses\n }),\n role: \"presentation\",\n children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: slideAnimationDuration,\n classNames: transitionClasses\n }, other, {\n children: children\n }), transKey)\n });\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getDayPickerUtilityClass = slot => generateUtilityClass('MuiDayPicker', slot);\nexport const dayPickerClasses = generateUtilityClasses('MuiDayPicker', ['header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { PickersDay } from '../PickersDay/PickersDay';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { PickersSlideTransition } from './PickersSlideTransition';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { findClosestEnabledDate } from '../internals/utils/date-utils';\nimport { getDayPickerUtilityClass } from './dayPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n header: ['header'],\n weekDayLabel: ['weekDayLabel'],\n loadingContainer: ['loadingContainer'],\n slideTransition: ['slideTransition'],\n monthContainer: ['monthContainer'],\n weekContainer: ['weekContainer']\n };\n return composeClasses(slots, getDayPickerUtilityClass, classes);\n};\n\nconst defaultDayOfWeekFormatter = day => day.charAt(0).toUpperCase();\n\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 2) * 6;\nconst PickersCalendarDayHeader = styled('div', {\n name: 'MuiDayPicker',\n slot: 'Header',\n overridesResolver: (_, styles) => styles.header\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography, {\n name: 'MuiDayPicker',\n slot: 'WeekDayLabel',\n overridesResolver: (_, styles) => styles.weekDayLabel\n})(({\n theme\n}) => ({\n width: 36,\n height: 40,\n margin: '0 2px',\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: theme.palette.text.secondary\n}));\nconst PickersCalendarLoadingContainer = styled('div', {\n name: 'MuiDayPicker',\n slot: 'LoadingContainer',\n overridesResolver: (_, styles) => styles.loadingContainer\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition, {\n name: 'MuiDayPicker',\n slot: 'SlideTransition',\n overridesResolver: (_, styles) => styles.slideTransition\n})({\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div', {\n name: 'MuiDayPicker',\n slot: 'MonthContainer',\n overridesResolver: (_, styles) => styles.monthContainer\n})({\n overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div', {\n name: 'MuiDayPicker',\n slot: 'WeekContainer',\n overridesResolver: (_, styles) => styles.weekContainer\n})({\n margin: `${DAY_MARGIN}px 0`,\n display: 'flex',\n justifyContent: 'center'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function DayPicker(inProps) {\n const now = useNow();\n const utils = useUtils();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDayPicker'\n });\n const classes = useUtilityClasses(props);\n const {\n onFocusedDayChange,\n className,\n currentMonth,\n selectedDays,\n disabled,\n disableHighlightToday,\n focusedDay,\n isMonthSwitchingAnimating,\n loading,\n onSelectedDaysChange,\n onMonthSwitchingAnimationEnd,\n readOnly,\n reduceAnimations,\n renderDay,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n showDaysOutsideCurrentMonth,\n slideDirection,\n TransitionProps,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate,\n dayOfWeekFormatter = defaultDayOfWeekFormatter,\n hasFocus,\n onFocusedViewChange,\n gridLabelId\n } = props;\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disablePast,\n disableFuture\n });\n const [internalFocusedDay, setInternalFocusedDay] = React.useState(() => focusedDay || now);\n const changeHasFocus = React.useCallback(newHasFocus => {\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [onFocusedViewChange]);\n const handleDaySelect = React.useCallback((day, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n onSelectedDaysChange(day, isFinish);\n }, [onSelectedDaysChange, readOnly]);\n const focusDay = React.useCallback(day => {\n if (!isDateDisabled(day)) {\n onFocusedDayChange(day);\n setInternalFocusedDay(day);\n changeHasFocus(true);\n }\n }, [isDateDisabled, onFocusedDayChange, changeHasFocus]);\n const theme = useTheme();\n\n function handleKeyDown(event, day) {\n switch (event.key) {\n case 'ArrowUp':\n focusDay(utils.addDays(day, -7));\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusDay(utils.addDays(day, 7));\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n {\n const newFocusedDayDefault = utils.addDays(day, theme.direction === 'ltr' ? -1 : 1);\n const nextAvailableMonth = theme.direction === 'ltr' ? utils.getPreviousMonth(day) : utils.getNextMonth(day);\n const closestDayToFocus = findClosestEnabledDate({\n utils,\n date: newFocusedDayDefault,\n minDate: theme.direction === 'ltr' ? utils.startOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n maxDate: theme.direction === 'ltr' ? newFocusedDayDefault : utils.endOfMonth(nextAvailableMonth),\n isDateDisabled\n });\n focusDay(closestDayToFocus || newFocusedDayDefault);\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight':\n {\n const newFocusedDayDefault = utils.addDays(day, theme.direction === 'ltr' ? 1 : -1);\n const nextAvailableMonth = theme.direction === 'ltr' ? utils.getNextMonth(day) : utils.getPreviousMonth(day);\n const closestDayToFocus = findClosestEnabledDate({\n utils,\n date: newFocusedDayDefault,\n minDate: theme.direction === 'ltr' ? newFocusedDayDefault : utils.startOfMonth(nextAvailableMonth),\n maxDate: theme.direction === 'ltr' ? utils.endOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n isDateDisabled\n });\n focusDay(closestDayToFocus || newFocusedDayDefault);\n event.preventDefault();\n break;\n }\n\n case 'Home':\n focusDay(utils.startOfWeek(day));\n event.preventDefault();\n break;\n\n case 'End':\n focusDay(utils.endOfWeek(day));\n event.preventDefault();\n break;\n\n case 'PageUp':\n focusDay(utils.getNextMonth(day));\n event.preventDefault();\n break;\n\n case 'PageDown':\n focusDay(utils.getPreviousMonth(day));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n function handleFocus(event, day) {\n focusDay(day);\n }\n\n function handleBlur(event, day) {\n if (hasFocus && utils.isSameDay(internalFocusedDay, day)) {\n changeHasFocus(false);\n }\n }\n\n const currentMonthNumber = utils.getMonth(currentMonth);\n const validSelectedDays = selectedDays.filter(day => !!day).map(day => utils.startOfDay(day)); // need a new ref whenever the `key` of the transition changes: http://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n\n const transitionKey = currentMonthNumber; // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n const startOfCurrentWeek = utils.startOfWeek(now);\n const focusableDay = React.useMemo(() => {\n const startOfMonth = utils.startOfMonth(currentMonth);\n const endOfMonth = utils.endOfMonth(currentMonth);\n\n if (isDateDisabled(internalFocusedDay) || utils.isAfterDay(internalFocusedDay, endOfMonth) || utils.isBeforeDay(internalFocusedDay, startOfMonth)) {\n return findClosestEnabledDate({\n utils,\n date: internalFocusedDay,\n minDate: startOfMonth,\n maxDate: endOfMonth,\n disablePast,\n disableFuture,\n isDateDisabled\n });\n }\n\n return internalFocusedDay;\n }, [currentMonth, disableFuture, disablePast, internalFocusedDay, isDateDisabled, utils]);\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"grid\",\n \"aria-labelledby\": gridLabelId,\n children: [/*#__PURE__*/_jsx(PickersCalendarDayHeader, {\n role: \"row\",\n className: classes.header,\n children: utils.getWeekdays().map((day, i) => {\n var _dayOfWeekFormatter;\n\n return /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n variant: \"caption\",\n role: \"columnheader\",\n \"aria-label\": utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday'),\n className: classes.weekDayLabel,\n children: (_dayOfWeekFormatter = dayOfWeekFormatter == null ? void 0 : dayOfWeekFormatter(day)) != null ? _dayOfWeekFormatter : day\n }, day + i.toString());\n })\n }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n className: classes.loadingContainer,\n children: renderLoading()\n }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n transKey: transitionKey,\n onExited: onMonthSwitchingAnimationEnd,\n reduceAnimations: reduceAnimations,\n slideDirection: slideDirection,\n className: clsx(className, classes.slideTransition)\n }, TransitionProps, {\n nodeRef: slideNodeRef,\n children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n ref: slideNodeRef,\n role: \"rowgroup\",\n className: classes.monthContainer,\n children: utils.getWeekArray(currentMonth).map(week => /*#__PURE__*/_jsx(PickersCalendarWeek, {\n role: \"row\",\n className: classes.weekContainer,\n children: week.map(day => {\n const isFocusableDay = focusableDay !== null && utils.isSameDay(day, focusableDay);\n const isSelected = validSelectedDays.some(selectedDay => utils.isSameDay(selectedDay, day));\n const isToday = utils.isSameDay(day, now);\n const pickersDayProps = {\n key: day == null ? void 0 : day.toString(),\n day,\n isAnimating: isMonthSwitchingAnimating,\n disabled: disabled || isDateDisabled(day),\n autoFocus: hasFocus && isFocusableDay,\n today: isToday,\n outsideCurrentMonth: utils.getMonth(day) !== currentMonthNumber,\n selected: isSelected,\n disableHighlightToday,\n showDaysOutsideCurrentMonth,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onDaySelect: handleDaySelect,\n tabIndex: isFocusableDay ? 0 : -1,\n role: 'gridcell',\n 'aria-selected': isSelected\n };\n\n if (isToday) {\n pickersDayProps['aria-current'] = 'date';\n }\n\n return renderDay ? renderDay(day, validSelectedDays, pickersDayProps) : /*#__PURE__*/_createElement(PickersDay, _extends({}, pickersDayProps, {\n key: pickersDayProps.key\n }));\n })\n }, `week-${week[0]}`))\n })\n }))]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersCalendarHeaderUtilityClass = slot => generateUtilityClass('MuiPickersCalendarHeader', slot);\nexport const pickersCalendarHeaderClasses = generateUtilityClasses('MuiPickersCalendarHeader', ['root', 'labelContainer', 'label', 'switchViewButton', 'switchViewIcon']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { ArrowDropDown } from '../internals/components/icons';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { getPickersCalendarHeaderUtilityClass } from './pickersCalendarHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n labelContainer: ['labelContainer'],\n label: ['label'],\n switchViewButton: ['switchViewButton'],\n switchViewIcon: ['switchViewIcon']\n };\n return composeClasses(slots, getPickersCalendarHeaderUtilityClass, classes);\n};\n\nconst PickersCalendarHeaderRoot = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n display: 'flex',\n alignItems: 'center',\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 24,\n paddingRight: 12,\n // prevent jumping in safari\n maxHeight: 30,\n minHeight: 30\n});\nconst PickersCalendarHeaderLabelContainer = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'LabelContainer',\n overridesResolver: (_, styles) => styles.labelContainer\n})(({\n theme\n}) => _extends({\n display: 'flex',\n maxHeight: 30,\n overflow: 'hidden',\n alignItems: 'center',\n cursor: 'pointer',\n marginRight: 'auto'\n}, theme.typography.body1, {\n fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabel = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'Label',\n overridesResolver: (_, styles) => styles.label\n})({\n marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton, {\n name: 'MuiPickersCalendarHeader',\n slot: 'SwitchViewButton',\n overridesResolver: (_, styles) => styles.switchViewButton\n})({\n marginRight: 'auto'\n});\nconst PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDown, {\n name: 'MuiPickersCalendarHeader',\n slot: 'SwitchViewIcon',\n overridesResolver: (_, styles) => styles.switchViewIcon\n})(({\n theme,\n ownerState\n}) => _extends({\n willChange: 'transform',\n transition: theme.transitions.create('transform'),\n transform: 'rotate(0deg)'\n}, ownerState.openView === 'year' && {\n transform: 'rotate(180deg)'\n}));\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n * @ignore - do not document.\n */\n\nexport function PickersCalendarHeader(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersCalendarHeader'\n });\n const {\n components = {},\n componentsProps = {},\n currentMonth: month,\n disabled,\n disableFuture,\n disablePast,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxDate,\n minDate,\n onMonthChange,\n onViewChange,\n openView: currentView,\n reduceAnimations,\n rightArrowButtonText: rightArrowButtonTextProp,\n views,\n labelId\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.previousMonth;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.nextMonth;\n const getViewSwitchingButtonText = getViewSwitchingButtonTextProp != null ? getViewSwitchingButtonTextProp : localeText.calendarViewSwitchingButtonAriaLabel;\n const utils = useUtils();\n const classes = useUtilityClasses(props);\n const switchViewButtonProps = componentsProps.switchViewButton || {};\n\n const selectNextMonth = () => onMonthChange(utils.getNextMonth(month), 'left');\n\n const selectPreviousMonth = () => onMonthChange(utils.getPreviousMonth(month), 'right');\n\n const isNextMonthDisabled = useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n });\n const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n });\n\n const handleToggleView = () => {\n if (views.length === 1 || !onViewChange || disabled) {\n return;\n }\n\n if (views.length === 2) {\n onViewChange(views.find(view => view !== currentView) || views[0]);\n } else {\n // switching only between first 2\n const nextIndexToOpen = views.indexOf(currentView) !== 0 ? 0 : 1;\n onViewChange(views[nextIndexToOpen]);\n }\n }; // No need to display more information\n\n\n if (views.length === 1 && views[0] === 'year') {\n return null;\n }\n\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, {\n ownerState: ownerState,\n className: classes.root,\n children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {\n role: \"presentation\",\n onClick: handleToggleView,\n ownerState: ownerState // putting this on the label item element below breaks when using transition\n ,\n \"aria-live\": \"polite\",\n className: classes.labelContainer,\n children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'monthAndYear'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabel, {\n id: labelId,\n ownerState: ownerState,\n className: classes.label,\n children: utils.format(month, 'monthAndYear')\n })\n }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewButton, _extends({\n size: \"small\",\n as: components.SwitchViewButton,\n \"aria-label\": getViewSwitchingButtonText(currentView),\n className: classes.switchViewButton\n }, switchViewButtonProps, {\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewIcon, {\n as: components.SwitchViewIcon,\n ownerState: ownerState,\n className: classes.switchViewIcon\n })\n }))]\n }), /*#__PURE__*/_jsx(Fade, {\n in: currentView === 'day',\n children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: selectPreviousMonth,\n onRightClick: selectNextMonth,\n isLeftDisabled: isPreviousMonthDisabled,\n isRightDisabled: isNextMonthDisabled\n })\n })]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersYearUtilityClass(slot) {\n // TODO v6: Rename 'PrivatePickersYear' to 'MuiPickersYear' to follow convention\n return generateUtilityClass('PrivatePickersYear', slot);\n} // TODO v6: Rename 'PrivatePickersYear' to 'MuiPickersYear' to follow convention\n\nexport const pickersYearClasses = generateUtilityClasses('PrivatePickersYear', ['root', 'modeDesktop', 'modeMobile', 'yearButton', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"children\", \"disabled\", \"onClick\", \"onKeyDown\", \"value\", \"tabIndex\", \"onFocus\", \"onBlur\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useForkRef, capitalize } from '@mui/material/utils';\nimport { alpha, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getPickersYearUtilityClass, pickersYearClasses } from './pickersYearClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n wrapperVariant,\n disabled,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', wrapperVariant && `mode${capitalize(wrapperVariant)}`],\n yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n };\n return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\n\nconst PickersYearRoot = styled('div', {\n name: 'PrivatePickersYear',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersYearClasses.modeDesktop}`]: styles.modeDesktop\n }, {\n [`&.${pickersYearClasses.modeMobile}`]: styles.modeMobile\n }]\n})(({\n ownerState\n}) => _extends({\n flexBasis: '33.3%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n}, (ownerState == null ? void 0 : ownerState.wrapperVariant) === 'desktop' && {\n flexBasis: '25%'\n}));\nconst PickersYearButton = styled('button', {\n name: 'PrivatePickersYear',\n slot: 'Button',\n overridesResolver: (_, styles) => [styles.button, {\n [`&.${pickersYearClasses.disabled}`]: styles.disabled\n }, {\n [`&.${pickersYearClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => _extends({\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n width: 72,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n [`&.${pickersYearClasses.disabled}`]: {\n color: theme.palette.text.secondary\n },\n [`&.${pickersYearClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n\nconst noop = () => {};\n/**\n * @ignore - internal component.\n */\n\n\nexport const PickersYear = /*#__PURE__*/React.forwardRef(function PickersYear(props, forwardedRef) {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n autoFocus,\n className,\n children,\n disabled,\n onClick,\n onKeyDown,\n value,\n tabIndex,\n onFocus = noop,\n onBlur = noop\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ref = React.useRef(null);\n const refHandle = useForkRef(ref, forwardedRef);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState); // We can't forward the `autoFocus` to the button because it is a native button, not a MUI Button\n\n React.useEffect(() => {\n if (autoFocus) {\n // `ref.current` being `null` would be a bug in MUI.\n ref.current.focus();\n }\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(PickersYearRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(PickersYearButton, _extends({\n ref: refHandle,\n disabled: disabled,\n type: \"button\",\n tabIndex: disabled ? -1 : tabIndex,\n onClick: event => onClick(event, value),\n onKeyDown: event => onKeyDown(event, value),\n onFocus: event => onFocus(event, value),\n onBlur: event => onBlur(event, value),\n className: classes.yearButton,\n ownerState: ownerState\n }, other, {\n children: children\n }))\n });\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getYearPickerUtilityClass(slot) {\n return generateUtilityClass('MuiYearPicker', slot);\n}\nexport const yearPickerClasses = generateUtilityClasses('MuiYearPicker', ['root']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme, styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { useForkRef } from '@mui/material/utils';\nimport { unstable_useControlled as useControlled } from '@mui/utils';\nimport { PickersYear } from './PickersYear';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getYearPickerUtilityClass } from './yearPickerClasses';\nimport { parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getYearPickerUtilityClass, classes);\n};\n\nfunction useYearPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n disablePast: false,\n disableFuture: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\n\nconst YearPickerRoot = styled('div', {\n name: 'MuiYearPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflowY: 'auto',\n height: '100%',\n padding: '0 4px',\n maxHeight: '304px'\n});\nexport const YearPicker = /*#__PURE__*/React.forwardRef(function YearPicker(inProps, ref) {\n const now = useNow();\n const theme = useTheme();\n const utils = useUtils();\n const props = useYearPickerDefaultizedProps(inProps, 'MuiYearPicker');\n const {\n autoFocus,\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n onChange,\n readOnly,\n shouldDisableYear,\n disableHighlightToday,\n onYearFocus,\n hasFocus,\n onFocusedViewChange\n } = props;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const selectedDateOrStartOfYear = React.useMemo(() => date != null ? date : utils.startOfYear(now), [now, utils, date]);\n const currentYear = React.useMemo(() => {\n if (date != null) {\n return utils.getYear(date);\n }\n\n if (disableHighlightToday) {\n return null;\n }\n\n return utils.getYear(now);\n }, [now, date, utils, disableHighlightToday]);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const selectedYearRef = React.useRef(null);\n const [focusedYear, setFocusedYear] = React.useState(() => currentYear || utils.getYear(now));\n const [internalHasFocus, setInternalHasFocus] = useControlled({\n name: 'YearPicker',\n state: 'hasFocus',\n controlled: hasFocus,\n default: autoFocus\n });\n const changeHasFocus = React.useCallback(newHasFocus => {\n setInternalHasFocus(newHasFocus);\n\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [setInternalHasFocus, onFocusedViewChange]);\n const isYearDisabled = React.useCallback(dateToValidate => {\n if (disablePast && utils.isBeforeYear(dateToValidate, now)) {\n return true;\n }\n\n if (disableFuture && utils.isAfterYear(dateToValidate, now)) {\n return true;\n }\n\n if (minDate && utils.isBeforeYear(dateToValidate, minDate)) {\n return true;\n }\n\n if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {\n return true;\n }\n\n if (shouldDisableYear && shouldDisableYear(dateToValidate)) {\n return true;\n }\n\n return false;\n }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);\n\n const handleYearSelection = (event, year, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setYear(selectedDateOrStartOfYear, year);\n onChange(newDate, isFinish);\n };\n\n const focusYear = React.useCallback(year => {\n if (!isYearDisabled(utils.setYear(selectedDateOrStartOfYear, year))) {\n setFocusedYear(year);\n changeHasFocus(true);\n onYearFocus == null ? void 0 : onYearFocus(year);\n }\n }, [isYearDisabled, utils, selectedDateOrStartOfYear, changeHasFocus, onYearFocus]);\n React.useEffect(() => {\n setFocusedYear(prevFocusedYear => currentYear !== null && prevFocusedYear !== currentYear ? currentYear : prevFocusedYear);\n }, [currentYear]);\n const yearsInRow = wrapperVariant === 'desktop' ? 4 : 3;\n const handleKeyDown = React.useCallback((event, year) => {\n switch (event.key) {\n case 'ArrowUp':\n focusYear(year - yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusYear(year + yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }, [focusYear, theme.direction, yearsInRow]);\n const handleFocus = React.useCallback((event, year) => {\n focusYear(year);\n }, [focusYear]);\n const handleBlur = React.useCallback((event, year) => {\n if (focusedYear === year) {\n changeHasFocus(false);\n }\n }, [focusedYear, changeHasFocus]);\n const nowYear = utils.getYear(now);\n const scrollerRef = React.useRef(null);\n const handleRef = useForkRef(ref, scrollerRef);\n React.useEffect(() => {\n if (autoFocus || scrollerRef.current === null) {\n return;\n }\n\n const tabbableButton = scrollerRef.current.querySelector('[tabindex=\"0\"]');\n\n if (!tabbableButton) {\n return;\n } // Taken from useScroll in x-data-grid, but vertically centered\n\n\n const offsetHeight = tabbableButton.offsetHeight;\n const offsetTop = tabbableButton.offsetTop;\n const clientHeight = scrollerRef.current.clientHeight;\n const scrollTop = scrollerRef.current.scrollTop;\n const elementBottom = offsetTop + offsetHeight;\n\n if (offsetHeight > clientHeight || offsetTop < scrollTop) {\n // Button already visible\n return;\n }\n\n scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(YearPickerRoot, {\n ref: handleRef,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: utils.getYearRange(minDate, maxDate).map(year => {\n const yearNumber = utils.getYear(year);\n const selected = yearNumber === currentYear;\n return /*#__PURE__*/_jsx(PickersYear, {\n selected: selected,\n value: yearNumber,\n onClick: handleYearSelection,\n onKeyDown: handleKeyDown,\n autoFocus: internalHasFocus && yearNumber === focusedYear,\n ref: selected ? selectedYearRef : undefined,\n disabled: disabled || isYearDisabled(year),\n tabIndex: yearNumber === focusedYear ? 0 : -1,\n onFocus: handleFocus,\n onBlur: handleBlur,\n \"aria-current\": nowYear === yearNumber ? 'date' : undefined,\n children: utils.format(year, 'year')\n }, utils.format(year, 'year'));\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? YearPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n date: PropTypes.any,\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n hasFocus: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n onChange: PropTypes.func.isRequired,\n onFocusedDayChange: PropTypes.func,\n onFocusedViewChange: PropTypes.func,\n onYearFocus: PropTypes.func,\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func\n} : void 0;","export const defaultReduceAnimations = typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent);","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getCalendarPickerUtilityClass = slot => generateUtilityClass('MuiCalendarPicker', slot);\nexport const calendarPickerClasses = generateUtilityClasses('MuiCalendarPicker', ['root', 'viewTransitionContainer']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"date\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"onChange\", \"onYearChange\", \"onMonthChange\", \"reduceAnimations\", \"shouldDisableDate\", \"shouldDisableMonth\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\", \"disabled\", \"readOnly\", \"minDate\", \"maxDate\", \"disableHighlightToday\", \"focusedView\", \"onFocusedViewChange\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { useControlled, unstable_useId as useId, useEventCallback } from '@mui/material/utils';\nimport { MonthPicker } from '../MonthPicker/MonthPicker';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { DayPicker } from './DayPicker';\nimport { useViews } from '../internals/hooks/useViews';\nimport { PickersCalendarHeader } from './PickersCalendarHeader';\nimport { YearPicker } from '../YearPicker/YearPicker';\nimport { findClosestEnabledDate, parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { defaultReduceAnimations } from '../internals/utils/defaultReduceAnimations';\nimport { getCalendarPickerUtilityClass } from './calendarPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n viewTransitionContainer: ['viewTransitionContainer']\n };\n return composeClasses(slots, getCalendarPickerUtilityClass, classes);\n};\n\nfunction useCalendarPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n loading: false,\n disablePast: false,\n disableFuture: false,\n openTo: 'day',\n views: ['year', 'day'],\n reduceAnimations: defaultReduceAnimations,\n renderLoading: () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n })\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\n\nconst CalendarPickerRoot = styled(PickerViewRoot, {\n name: 'MuiCalendarPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst CalendarPickerViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n name: 'MuiCalendarPicker',\n slot: 'ViewTransitionContainer',\n overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [CalendarPicker API](https://mui.com/x/api/date-pickers/calendar-picker/)\n */\nexport const CalendarPicker = /*#__PURE__*/React.forwardRef(function CalendarPicker(inProps, ref) {\n const utils = useUtils();\n const id = useId();\n const props = useCalendarPickerDefaultizedProps(inProps, 'MuiCalendarPicker');\n\n const {\n autoFocus,\n onViewChange,\n date,\n disableFuture,\n disablePast,\n defaultCalendarMonth,\n onChange,\n onYearChange,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n view,\n views,\n openTo,\n className,\n disabled,\n readOnly,\n minDate,\n maxDate,\n disableHighlightToday,\n focusedView,\n onFocusedViewChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n openView,\n setOpenView,\n openNext\n } = useViews({\n view,\n views,\n openTo,\n onChange,\n onViewChange\n });\n const {\n calendarState,\n changeFocusedDay,\n changeMonth,\n handleChangeMonth,\n isDateDisabled,\n onMonthSwitchingAnimationEnd\n } = useCalendarState({\n date,\n defaultCalendarMonth,\n reduceAnimations,\n onMonthChange,\n minDate,\n maxDate,\n shouldDisableDate,\n disablePast,\n disableFuture\n });\n const handleDateMonthChange = React.useCallback((newDate, selectionState) => {\n const startOfMonth = utils.startOfMonth(newDate);\n const endOfMonth = utils.endOfMonth(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n maxDate: utils.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onMonthChange == null ? void 0 : onMonthChange(startOfMonth);\n } else {\n openNext();\n changeMonth(startOfMonth);\n }\n\n changeFocusedDay(closestEnabledDate, true);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onMonthChange, changeMonth, openNext, utils]);\n const handleDateYearChange = React.useCallback((newDate, selectionState) => {\n const startOfYear = utils.startOfYear(newDate);\n const endOfYear = utils.endOfYear(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfYear) ? startOfYear : minDate,\n maxDate: utils.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onYearChange == null ? void 0 : onYearChange(closestEnabledDate);\n } else {\n openNext();\n changeMonth(startOfYear);\n }\n\n changeFocusedDay(closestEnabledDate, true);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onYearChange, openNext, utils, changeMonth]);\n const onSelectedDayChange = React.useCallback((day, isFinish) => {\n if (date && day) {\n // If there is a date already selected, then we want to keep its time\n return onChange(utils.mergeDateAndTime(day, date), isFinish);\n }\n\n return onChange(day, isFinish);\n }, [utils, date, onChange]);\n React.useEffect(() => {\n if (date) {\n changeMonth(date);\n }\n }, [date]); // eslint-disable-line\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const baseDateValidationProps = {\n disablePast,\n disableFuture,\n maxDate,\n minDate\n }; // When disabled, limit the view to the selected date\n\n const minDateWithDisabled = disabled && date || minDate;\n const maxDateWithDisabled = disabled && date || maxDate;\n const commonViewProps = {\n disableHighlightToday,\n readOnly,\n disabled\n };\n const gridLabelId = `${id}-grid-label`;\n const [internalFocusedView, setInternalFocusedView] = useControlled({\n name: 'DayPicker',\n state: 'focusedView',\n controlled: focusedView,\n default: autoFocus ? openView : null\n });\n const hasFocus = internalFocusedView !== null;\n const handleFocusedViewChange = useEventCallback(eventView => newHasFocus => {\n if (onFocusedViewChange) {\n // Use the calendar or clock logic\n onFocusedViewChange(eventView)(newHasFocus);\n return;\n } // If alone, do the local modifications\n\n\n if (newHasFocus) {\n setInternalFocusedView(eventView);\n } else {\n setInternalFocusedView(prevView => prevView === eventView ? null : prevView);\n }\n });\n const prevOpenViewRef = React.useRef(openView);\n React.useEffect(() => {\n // Set focus to the button when switching from a view to another\n if (prevOpenViewRef.current === openView) {\n return;\n }\n\n prevOpenViewRef.current = openView;\n handleFocusedViewChange(openView)(true);\n }, [openView, handleFocusedViewChange]);\n return /*#__PURE__*/_jsxs(CalendarPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {\n views: views,\n openView: openView,\n currentMonth: calendarState.currentMonth,\n onViewChange: setOpenView,\n onMonthChange: (newMonth, direction) => handleChangeMonth({\n newMonth,\n direction\n }),\n minDate: minDateWithDisabled,\n maxDate: maxDateWithDisabled,\n disabled: disabled,\n disablePast: disablePast,\n disableFuture: disableFuture,\n reduceAnimations: reduceAnimations,\n labelId: gridLabelId\n })), /*#__PURE__*/_jsx(CalendarPickerViewTransitionContainer, {\n reduceAnimations: reduceAnimations,\n className: classes.viewTransitionContainer,\n transKey: openView,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [openView === 'year' && /*#__PURE__*/_jsx(YearPicker, _extends({}, other, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n date: date,\n onChange: handleDateYearChange,\n shouldDisableYear: shouldDisableYear,\n hasFocus: hasFocus,\n onFocusedViewChange: handleFocusedViewChange('year')\n })), openView === 'month' && /*#__PURE__*/_jsx(MonthPicker, _extends({}, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n hasFocus: hasFocus,\n className: className,\n date: date,\n onChange: handleDateMonthChange,\n shouldDisableMonth: shouldDisableMonth,\n onFocusedViewChange: handleFocusedViewChange('month')\n })), openView === 'day' && /*#__PURE__*/_jsx(DayPicker, _extends({}, other, calendarState, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n onFocusedDayChange: changeFocusedDay,\n reduceAnimations: reduceAnimations,\n selectedDays: [date],\n onSelectedDaysChange: onSelectedDayChange,\n shouldDisableDate: shouldDisableDate,\n hasFocus: hasFocus,\n onFocusedViewChange: handleFocusedViewChange('day'),\n gridLabelId: gridLabelId\n }))]\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CalendarPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n date: PropTypes.any,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n focusedView: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change\n */\n onChange: PropTypes.func.isRequired,\n onFocusedViewChange: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Views for calendar picker.\n * @default ['year', 'day']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils/utils';\n\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n } // Support IOS safari\n\n\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n\n return 'portrait';\n}\n\nexport const useIsLandscape = (views, customOrientation) => {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n};","import * as React from 'react';\nexport const useFocusManagement = ({\n autoFocus,\n openView\n}) => {\n const [focusedView, setFocusedView] = React.useState(autoFocus ? openView : null);\n const setFocusedViewCallback = React.useCallback(view => newHasFocus => {\n if (newHasFocus) {\n setFocusedView(view);\n } else {\n setFocusedView(prevFocusedView => view === prevFocusedView ? null : prevFocusedView);\n }\n }, []);\n return {\n focusedView,\n setFocusedView: setFocusedViewCallback\n };\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getCalendarOrClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiCalendarOrClockPicker', slot);\n}\nexport const calendarOrClockPickerClasses = generateUtilityClasses('MuiCalendarOrClockPicker', ['root', 'mobileKeyboardInputView']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"parsedValue\", \"DateInputProps\", \"isMobileKeyboardViewOpen\", \"onDateChange\", \"onViewChange\", \"openTo\", \"orientation\", \"showToolbar\", \"toggleMobileKeyboardView\", \"ToolbarComponent\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\", \"dateRangeIcon\", \"timeIcon\", \"hideTabs\", \"classes\"];\nimport * as React from 'react';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { useViews } from '../../hooks/useViews';\nimport { ClockPicker } from '../../../ClockPicker/ClockPicker';\nimport { CalendarPicker } from '../../../CalendarPicker/CalendarPicker';\nimport { KeyboardDateInput } from '../KeyboardDateInput';\nimport { useIsLandscape } from '../../hooks/useIsLandscape';\nimport { WrapperVariantContext } from '../wrappers/WrapperVariantContext';\nimport { PickerViewRoot } from '../PickerViewRoot';\nimport { useFocusManagement } from './useFocusManagement';\nimport { getCalendarOrClockPickerUtilityClass } from './calendarOrClockPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n mobileKeyboardInputView: ['mobileKeyboardInputView']\n };\n return composeClasses(slots, getCalendarOrClockPickerUtilityClass, classes);\n};\n\nexport const MobileKeyboardInputView = styled('div', {\n name: 'MuiCalendarOrClockPicker',\n slot: 'MobileKeyboardInputView',\n overridesResolver: (_, styles) => styles.mobileKeyboardInputView\n})({\n padding: '16px 24px'\n});\nconst PickerRoot = styled('div', {\n name: 'MuiCalendarOrClockPicker',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column'\n}, ownerState.isLandscape && {\n flexDirection: 'row'\n}));\nconst MobileKeyboardTextFieldProps = {\n fullWidth: true\n};\n\nconst isDatePickerView = view => view === 'year' || view === 'month' || view === 'day';\n\nconst isTimePickerView = view => view === 'hours' || view === 'minutes' || view === 'seconds';\n\nlet warnedOnceNotValidOpenTo = false;\nexport function CalendarOrClockPicker(inProps) {\n var _other$components, _other$componentsProp;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCalendarOrClockPicker'\n });\n\n const {\n autoFocus,\n parsedValue,\n DateInputProps,\n isMobileKeyboardViewOpen,\n onDateChange,\n onViewChange,\n openTo,\n orientation,\n showToolbar,\n toggleMobileKeyboardView,\n ToolbarComponent = () => null,\n toolbarFormat,\n toolbarPlaceholder,\n toolbarTitle,\n views,\n dateRangeIcon,\n timeIcon,\n hideTabs\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const TabsComponent = (_other$components = other.components) == null ? void 0 : _other$components.Tabs;\n const isLandscape = useIsLandscape(views, orientation);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const classes = useUtilityClasses(props);\n const toShowToolbar = showToolbar != null ? showToolbar : wrapperVariant !== 'desktop';\n const showTabs = !hideTabs && typeof window !== 'undefined' && window.innerHeight > 667;\n const handleDateChange = React.useCallback((newDate, selectionState) => {\n onDateChange(newDate, wrapperVariant, selectionState);\n }, [onDateChange, wrapperVariant]);\n const handleViewChange = React.useCallback(newView => {\n if (isMobileKeyboardViewOpen) {\n toggleMobileKeyboardView();\n }\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [isMobileKeyboardViewOpen, onViewChange, toggleMobileKeyboardView]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnceNotValidOpenTo && !views.includes(openTo)) {\n console.warn(`MUI: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidOpenTo = true;\n }\n }\n\n const {\n openView,\n setOpenView,\n handleChangeAndOpenNext\n } = useViews({\n view: undefined,\n views,\n openTo,\n onChange: handleDateChange,\n onViewChange: handleViewChange\n });\n const {\n focusedView,\n setFocusedView\n } = useFocusManagement({\n autoFocus,\n openView\n });\n return /*#__PURE__*/_jsxs(PickerRoot, {\n ownerState: {\n isLandscape\n },\n className: classes.root,\n children: [toShowToolbar && /*#__PURE__*/_jsx(ToolbarComponent, _extends({}, other, {\n views: views,\n isLandscape: isLandscape,\n parsedValue: parsedValue,\n onChange: handleDateChange,\n setOpenView: setOpenView,\n openView: openView,\n toolbarTitle: toolbarTitle,\n toolbarFormat: toolbarFormat,\n toolbarPlaceholder: toolbarPlaceholder,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView\n })), showTabs && !!TabsComponent && /*#__PURE__*/_jsx(TabsComponent, _extends({\n dateRangeIcon: dateRangeIcon,\n timeIcon: timeIcon,\n view: openView,\n onChange: setOpenView\n }, (_other$componentsProp = other.componentsProps) == null ? void 0 : _other$componentsProp.tabs)), /*#__PURE__*/_jsx(PickerViewRoot, {\n children: isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {\n className: classes.mobileKeyboardInputView,\n children: /*#__PURE__*/_jsx(KeyboardDateInput, _extends({}, DateInputProps, {\n ignoreInvalidInputs: true,\n disableOpenPicker: true,\n TextFieldProps: MobileKeyboardTextFieldProps\n }))\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [isDatePickerView(openView) && /*#__PURE__*/_jsx(CalendarPicker, _extends({\n autoFocus: autoFocus,\n date: parsedValue,\n onViewChange: setOpenView,\n onChange: handleChangeAndOpenNext,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isDatePickerView),\n focusedView: focusedView,\n onFocusedViewChange: setFocusedView\n }, other)), isTimePickerView(openView) && /*#__PURE__*/_jsx(ClockPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: parsedValue,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isTimePickerView),\n onChange: handleChangeAndOpenNext,\n onViewChange: setOpenView,\n showViewSwitcher: wrapperVariant === 'desktop'\n }))]\n })\n })]\n });\n}","import { useReducer, useRef, useLayoutEffect, useEffect } from 'react';\n\nconst useRifm = props => {\n const [, refresh] = useReducer(c => c + 1, 0);\n const valueRef = useRef(null);\n const {\n replace,\n append\n } = props;\n const userValue = replace ? replace(props.format(props.value)) : props.format(props.value); // state of delete button see comments below about inputType support\n\n const isDeleleteButtonDownRef = useRef(false);\n\n const onChange = evt => {\n if (process.env.NODE_ENV !== 'production') {\n if (evt.target.type === 'number') {\n console.error('Rifm does not support input type=number, use type=tel instead.');\n return;\n }\n\n if (evt.target.type === 'date') {\n console.error('Rifm does not support input type=date.');\n return;\n }\n }\n\n const eventValue = evt.target.value;\n valueRef.current = [eventValue, // eventValue\n evt.target, // input\n eventValue.length > userValue.length, // isSizeIncreaseOperation\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\n userValue === props.format(eventValue) // isNoOperation\n ];\n\n if (process.env.NODE_ENV !== 'production') {\n const formattedEventValue = props.format(eventValue);\n\n if (eventValue !== formattedEventValue && eventValue.toLowerCase() === formattedEventValue.toLowerCase()) {\n console.warn('Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead');\n }\n } // The main trick is to update underlying input with non formatted value (= eventValue)\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\n // then we format new value and call props.onChange with masked/formatted value\n // and finally we are able to set cursor position into right place\n\n\n refresh();\n }; // React prints warn on server in non production mode about useLayoutEffect usage\n // in both cases it's noop\n\n\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n useLayoutEffect(() => {\n if (valueRef.current == null) return;\n let [eventValue, input, isSizeIncreaseOperation, isDeleleteButtonDown, // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\n isNoOperation] = valueRef.current;\n valueRef.current = null; // this usually occurs on deleting special symbols like ' here 123'123.00\n // in case of isDeleleteButtonDown cursor should move differently vs backspace\n\n const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;\n const valueAfterSelectionStart = eventValue.slice(input.selectionStart);\n const acceptedCharIndexAfterDelete = valueAfterSelectionStart.search(props.accept || /\\d/g);\n const charsToSkipAfterDelete = acceptedCharIndexAfterDelete !== -1 ? acceptedCharIndexAfterDelete : 0; // Create string from only accepted symbols\n\n const clean = str => (str.match(props.accept || /\\d/g) || []).join('');\n\n const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart)); // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart\n // This works because we assume that format doesn't change the order of accepted symbols.\n // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols\n // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol\n // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4\n // calling getCursorPosition(\"1'2'3'4\") will give us position after 3, 1'2'3|'4\n // so for formatting just this function to determine cursor position after formatting is enough\n // with masking we need to do some additional checks see `mask` below\n\n const getCursorPosition = val => {\n let start = 0;\n let cleanPos = 0;\n\n for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {\n let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;\n let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1; // this skips position change if accepted symbols order was broken\n // For example fixes edge case with fixed point numbers:\n // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption\n // that order of accepted symbols is not changed after format,\n // so here we don't update start position if other accepted symbols was inbetween current and new position\n\n if (newCleanPos - cleanPos > 1) {\n newPos = start;\n newCleanPos = cleanPos;\n }\n\n cleanPos = Math.max(newCleanPos, cleanPos);\n start = Math.max(start, newPos);\n }\n\n return start;\n }; // Masking part, for masks if size of mask is above some value\n // we need to replace symbols instead of do nothing as like in format\n\n\n if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {\n let start = getCursorPosition(eventValue);\n const c = clean(eventValue.substr(start))[0];\n start = eventValue.indexOf(c, start);\n eventValue = `${eventValue.substr(0, start)}${eventValue.substr(start + 1)}`;\n }\n\n let formattedValue = props.format(eventValue);\n\n if (append != null && // cursor at the end\n input.selectionStart === eventValue.length && !isNoOperation) {\n if (isSizeIncreaseOperation) {\n formattedValue = append(formattedValue);\n } else {\n // If after delete last char is special character and we use append\n // delete it too\n // was: \"12-3|\" backspace pressed, then should be \"12|\"\n if (clean(formattedValue.slice(-1)) === '') {\n formattedValue = formattedValue.slice(0, -1);\n }\n }\n }\n\n const replacedValue = replace ? replace(formattedValue) : formattedValue;\n\n if (userValue === replacedValue) {\n // if nothing changed for formatted value, just refresh so userValue will be used at render\n refresh();\n } else {\n props.onChange(replacedValue);\n }\n\n return () => {\n let start = getCursorPosition(formattedValue); // Visually improves working with masked values,\n // like cursor jumping over refused symbols\n // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\n // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\n\n if (props.mask != null && (isSizeIncreaseOperation || isDeleleteButtonDown && !deleteWasNoOp)) {\n while (formattedValue[start] && clean(formattedValue[start]) === '') {\n start += 1;\n }\n }\n\n input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\n };\n });\n }\n\n useEffect(() => {\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\n // there is no way I found to distinguish in onChange\n // backspace or delete was called in some situations\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\n const handleKeyDown = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = true;\n }\n };\n\n const handleKeyUp = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return {\n value: valueRef.current != null ? valueRef.current[0] : userValue,\n onChange\n };\n};\nconst Rifm = props => {\n const renderProps = useRifm(props);\n return props.children(renderProps);\n};\n\nexport { Rifm, useRifm };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"components\", \"disableOpenPicker\", \"getOpenDialogAriaText\", \"InputAdornmentProps\", \"InputProps\", \"inputRef\", \"openPicker\", \"OpenPickerButtonProps\", \"renderInput\"];\nimport * as React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { Calendar } from './icons';\nimport { useMaskedInput } from '../hooks/useMaskedInput';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const KeyboardDateInput = /*#__PURE__*/React.forwardRef(function KeyboardDateInput(props, ref) {\n const {\n className,\n components = {},\n disableOpenPicker,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n InputAdornmentProps,\n InputProps,\n inputRef,\n openPicker,\n OpenPickerButtonProps,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const localeText = useLocaleText();\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const textFieldProps = useMaskedInput(other);\n const adornmentPosition = (InputAdornmentProps == null ? void 0 : InputAdornmentProps.position) || 'end';\n const OpenPickerIcon = components.OpenPickerIcon || Calendar;\n return renderInput(_extends({\n ref,\n inputRef,\n className\n }, textFieldProps, {\n InputProps: _extends({}, InputProps, {\n [`${adornmentPosition}Adornment`]: disableOpenPicker ? undefined : /*#__PURE__*/_jsx(InputAdornment, _extends({\n position: adornmentPosition\n }, InputAdornmentProps, {\n children: /*#__PURE__*/_jsx(IconButton, _extends({\n edge: adornmentPosition,\n disabled: other.disabled || other.readOnly,\n \"aria-label\": getOpenDialogAriaText(other.rawValue, utils)\n }, OpenPickerButtonProps, {\n onClick: openPicker,\n children: /*#__PURE__*/_jsx(OpenPickerIcon, {})\n }))\n }))\n })\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRifm } from 'rifm';\nimport { useUtils } from './useUtils';\nimport { maskedDateFormatter, getDisplayDate, checkMaskIsValidForCurrentFormat, getMaskFromCurrentFormat } from '../utils/text-field-helper';\nexport const useMaskedInput = ({\n acceptRegex = /[\\d]/gi,\n disabled,\n disableMaskedInput,\n ignoreInvalidInputs,\n inputFormat,\n inputProps,\n label,\n mask,\n onChange,\n rawValue,\n readOnly,\n rifmFormatter,\n TextFieldProps,\n validationError\n}) => {\n const utils = useUtils();\n const formatHelperText = utils.getFormatHelperText(inputFormat);\n const {\n shouldUseMaskedInput,\n maskToUse\n } = React.useMemo(() => {\n // formatting of dates is a quite slow thing, so do not make useless .format calls\n if (disableMaskedInput) {\n return {\n shouldUseMaskedInput: false,\n maskToUse: ''\n };\n }\n\n const computedMaskToUse = getMaskFromCurrentFormat(mask, inputFormat, acceptRegex, utils);\n return {\n shouldUseMaskedInput: checkMaskIsValidForCurrentFormat(computedMaskToUse, inputFormat, acceptRegex, utils),\n maskToUse: computedMaskToUse\n };\n }, [acceptRegex, disableMaskedInput, inputFormat, mask, utils]);\n const formatter = React.useMemo(() => shouldUseMaskedInput && maskToUse ? maskedDateFormatter(maskToUse, acceptRegex) : st => st, [acceptRegex, maskToUse, shouldUseMaskedInput]); // TODO: Implement with controlled vs uncontrolled `rawValue`\n\n const parsedValue = rawValue === null ? null : utils.date(rawValue); // Track the value of the input\n\n const [innerInputValue, setInnerInputValue] = React.useState(parsedValue); // control the input text\n\n const [innerDisplayedInputValue, setInnerDisplayedInputValue] = React.useState(getDisplayDate(utils, rawValue, inputFormat)); // Inspired from autocomplete: https://github.com/mui/material-ui/blob/2c89d036dc2e16f100528f161600dffc83241768/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js#L185:L201\n\n const prevRawValue = React.useRef();\n const prevLocale = React.useRef(utils.locale);\n const prevInputFormat = React.useRef(inputFormat);\n React.useEffect(() => {\n const rawValueHasChanged = rawValue !== prevRawValue.current;\n const localeHasChanged = utils.locale !== prevLocale.current;\n const inputFormatHasChanged = inputFormat !== prevInputFormat.current;\n prevRawValue.current = rawValue;\n prevLocale.current = utils.locale;\n prevInputFormat.current = inputFormat;\n\n if (!rawValueHasChanged && !localeHasChanged && !inputFormatHasChanged) {\n return;\n }\n\n const newParsedValue = rawValue === null ? null : utils.date(rawValue);\n const isAcceptedValue = rawValue === null || utils.isValid(newParsedValue);\n let innerEqualsParsed = innerInputValue === null && newParsedValue === null; // equal by being both null\n\n if (innerInputValue !== null && newParsedValue !== null) {\n const areEqual = utils.isEqual(innerInputValue, newParsedValue);\n\n if (areEqual) {\n innerEqualsParsed = true;\n } else {\n const diff = Math.abs(utils.getDiff(innerInputValue, newParsedValue)); // diff in ms\n\n innerEqualsParsed = diff === 0 ? areEqual // if no diff, use equal to test the time-zone\n : diff < 1000; // accept a difference bellow 1s\n }\n }\n\n if (!localeHasChanged && !inputFormatHasChanged && (!isAcceptedValue || innerEqualsParsed)) {\n return;\n } // When dev set a new valid value, we trust them\n\n\n const newDisplayDate = getDisplayDate(utils, rawValue, inputFormat);\n setInnerInputValue(newParsedValue);\n setInnerDisplayedInputValue(newDisplayDate);\n }, [utils, rawValue, inputFormat, innerInputValue]);\n\n const handleChange = text => {\n const finalString = text === '' || text === mask ? '' : text;\n setInnerDisplayedInputValue(finalString);\n const date = finalString === null ? null : utils.parse(finalString, inputFormat);\n\n if (ignoreInvalidInputs && !utils.isValid(date)) {\n return;\n }\n\n setInnerInputValue(date);\n onChange(date, finalString || undefined);\n };\n\n const rifmProps = useRifm({\n value: innerDisplayedInputValue,\n onChange: handleChange,\n format: rifmFormatter || formatter\n });\n const inputStateArgs = shouldUseMaskedInput ? rifmProps : {\n value: innerDisplayedInputValue,\n onChange: event => {\n handleChange(event.currentTarget.value);\n }\n };\n return _extends({\n label,\n disabled,\n error: validationError,\n inputProps: _extends({}, inputStateArgs, {\n disabled,\n placeholder: formatHelperText,\n readOnly,\n type: shouldUseMaskedInput ? 'tel' : 'text'\n }, inputProps)\n }, TextFieldProps);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Pen, Calendar, Clock } from './icons';\nimport { useLocaleText } from '../hooks/useUtils';\nimport { getPickersToolbarUtilityClass, pickersToolbarClasses } from './pickersToolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n isLandscape\n } = ownerState;\n const slots = {\n root: ['root'],\n content: ['content'],\n penIconButton: ['penIconButton', isLandscape && 'penIconButtonLandscape']\n };\n return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\n\nconst PickersToolbarRoot = styled('div', {\n name: 'MuiPickersToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: theme.spacing(2, 3)\n}, ownerState.isLandscape && {\n height: 'auto',\n maxWidth: 160,\n padding: 16,\n justifyContent: 'flex-start',\n flexWrap: 'wrap'\n}));\nconst PickersToolbarContent = styled(Grid, {\n name: 'MuiPickersToolbar',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n ownerState\n}) => _extends({\n flex: 1\n}, !ownerState.isLandscape && {\n alignItems: 'center'\n}));\nconst PickersToolbarPenIconButton = styled(IconButton, {\n name: 'MuiPickersToolbar',\n slot: 'PenIconButton',\n overridesResolver: (props, styles) => [{\n [`&.${pickersToolbarClasses.penIconButtonLandscape}`]: styles.penIconButtonLandscape\n }, styles.penIconButton]\n})({});\n\nconst getViewTypeIcon = viewType => viewType === 'clock' ? /*#__PURE__*/_jsx(Clock, {\n color: \"inherit\"\n}) : /*#__PURE__*/_jsx(Calendar, {\n color: \"inherit\"\n});\n\nexport const PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersToolbar'\n });\n const {\n children,\n className,\n getMobileKeyboardInputViewButtonText,\n isLandscape,\n isMobileKeyboardViewOpen,\n landscapeDirection = 'column',\n toggleMobileKeyboardView,\n toolbarTitle,\n viewType = 'calendar'\n } = props;\n const ownerState = props;\n const localeText = useLocaleText();\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(PickersToolbarRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n variant: \"overline\",\n children: toolbarTitle\n }), /*#__PURE__*/_jsxs(PickersToolbarContent, {\n container: true,\n justifyContent: \"space-between\",\n className: classes.content,\n ownerState: ownerState,\n direction: isLandscape ? landscapeDirection : 'row',\n alignItems: isLandscape ? 'flex-start' : 'flex-end',\n children: [children, /*#__PURE__*/_jsx(PickersToolbarPenIconButton, {\n onClick: toggleMobileKeyboardView,\n className: classes.penIconButton,\n ownerState: ownerState,\n color: \"inherit\",\n \"aria-label\": getMobileKeyboardInputViewButtonText ? getMobileKeyboardInputViewButtonText(isMobileKeyboardViewOpen, viewType) : localeText.inputModeToggleButtonAriaLabel(isMobileKeyboardViewOpen, viewType),\n children: isMobileKeyboardViewOpen ? getViewTypeIcon(viewType) : /*#__PURE__*/_jsx(Pen, {\n color: \"inherit\"\n })\n })]\n })]\n });\n});","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDown = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowLeft = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowRight = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n/**\n * @ignore - internal component.\n */\n\nexport const Calendar = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n/**\n * @ignore - internal component.\n */\n\nexport const Clock = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');\n/**\n * @ignore - internal component.\n */\n\nexport const DateRange = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n/**\n * @ignore - internal component.\n */\n\nexport const Pen = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Pen');\n/**\n * @ignore - internal component.\n */\n\nexport const Time = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Time');","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiPickersToolbar', slot);\n}\nexport const pickersToolbarClasses = generateUtilityClasses('MuiPickersToolbar', ['root', 'content', 'penIconButton', 'penIconButtonLandscape']);","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersPopperUtilityClass(slot) {\n return generateUtilityClass('MuiPickersPopper', slot);\n}\nexport const pickersPopperClasses = generateUtilityClasses('MuiPickersPopper', ['root', 'paper']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"onClick\", \"onTouchStart\"];\nimport * as React from 'react';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport TrapFocus from '@mui/material/Unstable_TrapFocus';\nimport { useForkRef, useEventCallback, ownerDocument } from '@mui/material/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { getPickersPopperUtilityClass } from './pickersPopperClasses';\nimport { getActiveElement } from '../utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper']\n };\n return composeClasses(slots, getPickersPopperUtilityClass, classes);\n};\n\nconst PickersPopperRoot = styled(Popper, {\n name: 'MuiPickersPopper',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst PickersPopperPaper = styled(Paper, {\n name: 'MuiPickersPopper',\n slot: 'Paper',\n overridesResolver: (_, styles) => styles.paper\n})(({\n ownerState\n}) => _extends({\n transformOrigin: 'top center',\n outline: 0\n}, ownerState.placement === 'top' && {\n transformOrigin: 'bottom center'\n}));\n\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n\n/**\n * Based on @mui/material/ClickAwayListener without the customization.\n * We can probably strip away even more since children won't be portaled.\n * @param {boolean} active Only listen to clicks when the popper is opened.\n * @param {(event: MouseEvent | TouchEvent) => void} onClickAway The callback to call when clicking outside the popper.\n * @returns {Array} The ref and event handler to listen to the outside clicks.\n */\nfunction useClickAwayListener(active, onClickAway) {\n const movedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n React.useEffect(() => {\n if (!active) {\n return undefined;\n } // Ensure that this hook is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n\n\n function armClickAwayListener() {\n activatedRef.current = true;\n }\n\n document.addEventListener('mousedown', armClickAwayListener, true);\n document.addEventListener('touchstart', armClickAwayListener, true);\n return () => {\n document.removeEventListener('mousedown', armClickAwayListener, true);\n document.removeEventListener('touchstart', armClickAwayListener, true);\n activatedRef.current = false;\n };\n }, [active]); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n const handleClickAway = useEventCallback(event => {\n if (!activatedRef.current) {\n return;\n } // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n\n\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!nodeRef.current || // is a TouchEvent?\n 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n\n if (!insideDOM && !insideReactTree) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n const handleSynthetic = () => {\n syntheticEventRef.current = true;\n };\n\n React.useEffect(() => {\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n\n doc.addEventListener('touchstart', handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener('touchstart', handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n React.useEffect(() => {\n // TODO This behavior is not tested automatically\n // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).\n // Or if this is a timing related issues due to different Transition components\n // Once we get rid of all the manual scheduling (e.g. setTimeout(update, 0)) we can revisit this code+test.\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener('click', handleClickAway);\n return () => {\n doc.removeEventListener('click', handleClickAway); // cleanup `handleClickAway`\n\n syntheticEventRef.current = false;\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n return [nodeRef, handleSynthetic, handleSynthetic];\n}\n\nexport function PickersPopper(inProps) {\n var _components$ActionBar;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersPopper'\n });\n const {\n anchorEl,\n children,\n containerRef = null,\n onBlur,\n onClose,\n onClear,\n onAccept,\n onCancel,\n onSetToday,\n open,\n PopperProps,\n role,\n TransitionComponent = Grow,\n TrapFocusProps,\n PaperProps = {},\n components,\n componentsProps\n } = props;\n React.useEffect(() => {\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (open && (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc')) {\n onClose();\n }\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [onClose, open]);\n const lastFocusedElementRef = React.useRef(null);\n React.useEffect(() => {\n if (role === 'tooltip') {\n return;\n }\n\n if (open) {\n lastFocusedElementRef.current = getActiveElement(document);\n } else if (lastFocusedElementRef.current && lastFocusedElementRef.current instanceof HTMLElement) {\n // make sure the button is flushed with updated label, before returning focus to it\n // avoids issue, where screen reader could fail to announce selected date after selection\n setTimeout(() => {\n if (lastFocusedElementRef.current instanceof HTMLElement) {\n lastFocusedElementRef.current.focus();\n }\n });\n }\n }, [open, role]);\n const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onBlur != null ? onBlur : onClose);\n const paperRef = React.useRef(null);\n const handleRef = useForkRef(paperRef, containerRef);\n const handlePaperRef = useForkRef(handleRef, clickAwayRef);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n\n const {\n onClick: onPaperClickProp,\n onTouchStart: onPaperTouchStartProp\n } = PaperProps,\n otherPaperProps = _objectWithoutPropertiesLoose(PaperProps, _excluded);\n\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n // stop the propagation to avoid closing parent modal\n event.stopPropagation();\n onClose();\n }\n };\n\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n const PaperContent = (components == null ? void 0 : components.PaperContent) || React.Fragment;\n return /*#__PURE__*/_jsx(PickersPopperRoot, _extends({\n transition: true,\n role: role,\n open: open,\n anchorEl: anchorEl,\n onKeyDown: handleKeyDown,\n className: classes.root\n }, PopperProps, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(TrapFocus, _extends({\n open: open,\n disableAutoFocus: true // pickers are managing focus position manually\n // without this prop the focus is returned to the button before `aria-label` is updated\n // which would force screen readers to read too old label\n ,\n disableRestoreFocus: true,\n disableEnforceFocus: role === 'tooltip',\n isEnabled: () => true\n }, TrapFocusProps, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({}, TransitionProps, {\n children: /*#__PURE__*/_jsx(PickersPopperPaper, _extends({\n tabIndex: -1,\n elevation: 8,\n ref: handlePaperRef,\n onClick: event => {\n onPaperClick(event);\n\n if (onPaperClickProp) {\n onPaperClickProp(event);\n }\n },\n onTouchStart: event => {\n onPaperTouchStart(event);\n\n if (onPaperTouchStartProp) {\n onPaperTouchStartProp(event);\n }\n },\n ownerState: _extends({}, ownerState, {\n placement\n }),\n className: classes.paper\n }, otherPaperProps, {\n children: /*#__PURE__*/_jsxs(PaperContent, _extends({}, componentsProps == null ? void 0 : componentsProps.paperContent, {\n children: [children, /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: []\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }))\n }))\n }))\n }))\n }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useForkRef } from '@mui/material/utils';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersPopper } from '../PickersPopper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function DesktopWrapper(props) {\n const {\n children,\n DateInputProps,\n KeyboardDateInputComponent,\n onClear,\n onDismiss,\n onCancel,\n onAccept,\n onSetToday,\n open,\n PopperProps,\n PaperProps,\n TransitionComponent,\n components,\n componentsProps\n } = props;\n const ownInputRef = React.useRef(null);\n const inputRef = useForkRef(DateInputProps.inputRef, ownInputRef);\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"desktop\",\n children: [/*#__PURE__*/_jsx(KeyboardDateInputComponent, _extends({}, DateInputProps, {\n inputRef: inputRef\n })), /*#__PURE__*/_jsx(PickersPopper, {\n role: \"dialog\",\n open: open,\n anchorEl: ownInputRef.current,\n TransitionComponent: TransitionComponent,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n onClose: onDismiss,\n onCancel: onCancel,\n onClear: onClear,\n onAccept: onAccept,\n onSetToday: onSetToday,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\n}","import * as React from 'react';\n\n/**\n * TODO consider getting rid from wrapper variant\n * @ignore - internal component.\n */\nexport const WrapperVariantContext = /*#__PURE__*/React.createContext(null);","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const VIEW_HEIGHT = 358;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useOpenState } from './useOpenState';\nimport { useUtils } from './useUtils';\nexport const usePickerState = (props, valueManager) => {\n const {\n onAccept,\n onChange,\n value,\n closeOnSelect\n } = props;\n const utils = useUtils();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n const parsedDateValue = React.useMemo(() => valueManager.parseInput(utils, value), [valueManager, utils, value]);\n const [lastValidDateValue, setLastValidDateValue] = React.useState(parsedDateValue);\n const [dateState, setDateState] = React.useState(() => ({\n committed: parsedDateValue,\n draft: parsedDateValue,\n resetFallback: parsedDateValue\n }));\n const setDate = React.useCallback(params => {\n setDateState(prev => {\n switch (params.action) {\n case 'setAll':\n case 'acceptAndClose':\n {\n return {\n draft: params.value,\n committed: params.value,\n resetFallback: params.value\n };\n }\n\n case 'setCommitted':\n {\n return _extends({}, prev, {\n draft: params.value,\n committed: params.value\n });\n }\n\n case 'setDraft':\n {\n return _extends({}, prev, {\n draft: params.value\n });\n }\n\n default:\n {\n return prev;\n }\n }\n });\n\n if (params.forceOnChangeCall || !params.skipOnChangeCall && !valueManager.areValuesEqual(utils, dateState.committed, params.value)) {\n onChange(params.value);\n }\n\n if (params.action === 'acceptAndClose') {\n setIsOpen(false);\n\n if (onAccept && !valueManager.areValuesEqual(utils, dateState.resetFallback, params.value)) {\n onAccept(params.value);\n }\n }\n }, [onAccept, onChange, setIsOpen, dateState, utils, valueManager]);\n React.useEffect(() => {\n if (utils.isValid(parsedDateValue)) {\n setLastValidDateValue(parsedDateValue);\n }\n }, [utils, parsedDateValue]);\n React.useEffect(() => {\n if (isOpen) {\n // Update all dates in state to equal the current prop value\n setDate({\n action: 'setAll',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps\n // Set the draft and committed date to equal the new prop value.\n\n if (!valueManager.areValuesEqual(utils, dateState.committed, parsedDateValue)) {\n setDate({\n action: 'setCommitted',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n\n const wrapperProps = React.useMemo(() => ({\n open: isOpen,\n onClear: () => {\n // Reset all date in state to the empty value and close picker.\n setDate({\n value: valueManager.emptyValue,\n action: 'acceptAndClose',\n // force `onChange` in cases like input (value) === `Invalid date`\n forceOnChangeCall: !valueManager.areValuesEqual(utils, value, valueManager.emptyValue)\n });\n },\n onAccept: () => {\n // Set all date in state to equal the current draft value and close picker.\n setDate({\n value: dateState.draft,\n action: 'acceptAndClose',\n // force `onChange` in cases like input (value) === `Invalid date`\n forceOnChangeCall: !valueManager.areValuesEqual(utils, value, parsedDateValue)\n });\n },\n onDismiss: () => {\n // Set all dates in state to equal the last committed date.\n // e.g. Reset the state to the last committed value.\n setDate({\n value: dateState.committed,\n action: 'acceptAndClose'\n });\n },\n onCancel: () => {\n // Set all dates in state to equal the last accepted date and close picker.\n // e.g. Reset the state to the last accepted value\n setDate({\n value: dateState.resetFallback,\n action: 'acceptAndClose'\n });\n },\n onSetToday: () => {\n // Set all dates in state to equal today and close picker.\n setDate({\n value: valueManager.getTodayValue(utils),\n action: 'acceptAndClose'\n });\n }\n }), [setDate, isOpen, utils, dateState, valueManager, value, parsedDateValue]); // Mobile keyboard view is a special case.\n // When it's open picker should work like closed, because we are just showing text field\n\n const [isMobileKeyboardViewOpen, setMobileKeyboardViewOpen] = React.useState(false);\n const pickerProps = React.useMemo(() => ({\n parsedValue: dateState.draft,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: () => setMobileKeyboardViewOpen(!isMobileKeyboardViewOpen),\n onDateChange: (newDate, wrapperVariant, selectionState = 'partial') => {\n switch (selectionState) {\n case 'shallow':\n {\n // Update the `draft` state but do not fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate,\n skipOnChangeCall: true\n });\n }\n\n case 'partial':\n {\n // Update the `draft` state and fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate\n });\n }\n\n case 'finish':\n {\n if (closeOnSelect != null ? closeOnSelect : wrapperVariant === 'desktop') {\n // Set all dates in state to equal the new date and close picker.\n return setDate({\n value: newDate,\n action: 'acceptAndClose'\n });\n } // Updates the `committed` state and fire `onChange`\n\n\n return setDate({\n value: newDate,\n action: 'setCommitted'\n });\n }\n\n default:\n {\n throw new Error('MUI: Invalid selectionState passed to `onDateChange`');\n }\n }\n }\n }), [setDate, isMobileKeyboardViewOpen, dateState.draft, closeOnSelect]);\n const handleInputChange = React.useCallback((newParsedValue, keyboardInputValue) => {\n const cleanParsedValue = valueManager.valueReducer ? valueManager.valueReducer(utils, lastValidDateValue, newParsedValue) : newParsedValue;\n onChange(cleanParsedValue, keyboardInputValue);\n }, [onChange, valueManager, lastValidDateValue, utils]);\n const inputProps = React.useMemo(() => ({\n onChange: handleInputChange,\n open: isOpen,\n rawValue: value,\n openPicker: () => setIsOpen(true)\n }), [handleInputChange, isOpen, value, setIsOpen]);\n const pickerState = {\n pickerProps,\n inputProps,\n wrapperProps\n };\n React.useDebugValue(pickerState, () => ({\n MuiPickerState: {\n dateState,\n other: pickerState\n }\n }));\n return pickerState;\n};","import * as React from 'react';\nexport const useOpenState = ({\n open,\n onOpen,\n onClose\n}) => {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false); // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)\n\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n\n if (newIsOpen && onOpen) {\n onOpen();\n }\n\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\n};","import * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\nexport const useLocalizationContext = () => {\n const localization = React.useContext(MuiPickersAdapterContext);\n\n if (localization === null) {\n throw new Error('MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.');\n }\n\n return localization;\n};\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useLocaleText = () => useLocalizationContext().localeText;\nexport const useNow = () => {\n const utils = useUtils();\n const now = React.useRef(utils.date());\n return now.current;\n};","import * as React from 'react';\nimport { useValidation } from './useValidation';\nimport { useLocalizationContext } from '../useUtils';\nimport { parseNonNullablePickerDate } from '../../utils/date-utils';\nexport const validateDate = ({\n props,\n value,\n adapter\n}) => {\n const now = adapter.utils.date();\n const date = adapter.utils.date(value);\n const minDate = parseNonNullablePickerDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);\n const maxDate = parseNonNullablePickerDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);\n\n if (date === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(props.shouldDisableDate && props.shouldDisableDate(date)):\n return 'shouldDisableDate';\n\n case Boolean(props.disableFuture && adapter.utils.isAfterDay(date, now)):\n return 'disableFuture';\n\n case Boolean(props.disablePast && adapter.utils.isBeforeDay(date, now)):\n return 'disablePast';\n\n case Boolean(minDate && adapter.utils.isBeforeDay(date, minDate)):\n return 'minDate';\n\n case Boolean(maxDate && adapter.utils.isAfterDay(date, maxDate)):\n return 'maxDate';\n\n default:\n return null;\n }\n};\nexport const useIsDayDisabled = ({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n}) => {\n const adapter = useLocalizationContext();\n return React.useCallback(day => validateDate({\n adapter,\n value: day,\n props: {\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n }\n }) !== null, [adapter, shouldDisableDate, minDate, maxDate, disableFuture, disablePast]);\n};\nexport const isSameDateError = (a, b) => a === b;\nexport const useDateValidation = props => useValidation(props, validateDate, isSameDateError);","import * as React from 'react';\nimport { useLocalizationContext } from '../useUtils';\nexport function useValidation(props, validate, isSameError) {\n const {\n value,\n onError\n } = props;\n const adapter = useLocalizationContext();\n const previousValidationErrorRef = React.useRef(null);\n const validationError = validate({\n adapter,\n value,\n props\n });\n React.useEffect(() => {\n if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {\n onError(validationError, value);\n }\n\n previousValidationErrorRef.current = validationError;\n }, [isSameError, onError, previousValidationErrorRef, validationError, value]);\n return validationError;\n}","export const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n isDateDisabled,\n utils\n}) => {\n const today = utils.startOfDay(utils.date());\n\n if (disablePast && utils.isBefore(minDate, today)) {\n minDate = today;\n }\n\n if (disableFuture && utils.isAfter(maxDate, today)) {\n maxDate = today;\n }\n\n let forward = date;\n let backward = date;\n\n if (utils.isBefore(date, minDate)) {\n forward = utils.date(minDate);\n backward = null;\n }\n\n if (utils.isAfter(date, maxDate)) {\n if (backward) {\n backward = utils.date(maxDate);\n }\n\n forward = null;\n }\n\n while (forward || backward) {\n if (forward && utils.isAfter(forward, maxDate)) {\n forward = null;\n }\n\n if (backward && utils.isBefore(backward, minDate)) {\n backward = null;\n }\n\n if (forward) {\n if (!isDateDisabled(forward)) {\n return forward;\n }\n\n forward = utils.addDays(forward, 1);\n }\n\n if (backward) {\n if (!isDateDisabled(backward)) {\n return backward;\n }\n\n backward = utils.addDays(backward, -1);\n }\n }\n\n return null;\n};\nexport const parsePickerInputValue = (utils, value) => {\n const parsedValue = utils.date(value);\n return utils.isValid(parsedValue) ? parsedValue : null;\n};\nexport const parseNonNullablePickerDate = (utils, value, defaultValue) => {\n if (value == null) {\n return defaultValue;\n }\n\n const parsedValue = utils.date(value);\n const isDateValid = utils.isValid(parsedValue);\n\n if (isDateValid) {\n return parsedValue;\n }\n\n return defaultValue;\n};","export const getDisplayDate = (utils, rawValue, inputFormat) => {\n const date = utils.date(rawValue);\n const isEmpty = rawValue === null;\n\n if (isEmpty) {\n return '';\n }\n\n return utils.isValid(date) ? utils.formatByString( // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n date, inputFormat) : '';\n};\nconst MASK_USER_INPUT_SYMBOL = '_';\nconst staticDateWith2DigitTokens = '2019-11-21T22:30:00.000';\nconst staticDateWith1DigitTokens = '2019-01-01T09:00:00.000';\nexport function getMaskFromCurrentFormat(mask, format, acceptRegex, utils) {\n if (mask) {\n return mask;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n\n if (inferredFormatPatternWith1Digits === inferredFormatPatternWith2Digits) {\n return inferredFormatPatternWith1Digits;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n\n return '';\n}\nexport function checkMaskIsValidForCurrentFormat(mask, format, acceptRegex, utils) {\n if (!mask) {\n return false;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n const isMaskValid = inferredFormatPatternWith2Digits === inferredFormatPatternWith1Digits && mask === inferredFormatPatternWith2Digits;\n\n if (!isMaskValid && utils.lib !== 'luxon' && process.env.NODE_ENV !== 'production') {\n if (format.includes('MMM')) {\n console.warn([`Mask does not support literals such as 'MMM'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (inferredFormatPatternWith2Digits && inferredFormatPatternWith2Digits !== inferredFormatPatternWith1Digits) {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (mask) {\n console.warn([`The mask \"${mask}\" you passed is not valid for the format used ${format}.`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n }\n\n return isMaskValid;\n}\nexport const maskedDateFormatter = (mask, acceptRegexp) => value => {\n let outputCharIndex = 0;\n return value.split('').map((char, inputCharIndex) => {\n acceptRegexp.lastIndex = 0;\n\n if (outputCharIndex > mask.length - 1) {\n return '';\n }\n\n const maskChar = mask[outputCharIndex];\n const nextMaskChar = mask[outputCharIndex + 1];\n const acceptedChar = acceptRegexp.test(char) ? char : '';\n const formattedChar = maskChar === MASK_USER_INPUT_SYMBOL ? acceptedChar : maskChar + acceptedChar;\n outputCharIndex += formattedChar.length;\n const isLastCharacter = inputCharIndex === value.length - 1;\n\n if (isLastCharacter && nextMaskChar && nextMaskChar !== MASK_USER_INPUT_SYMBOL) {\n // when cursor at the end of mask part (e.g. month) prerender next symbol \"21\" -> \"21/\"\n return formattedChar ? formattedChar + nextMaskChar : '';\n }\n\n return formattedChar;\n }).join('');\n};","export const getMeridiem = (date, utils) => {\n if (!date) {\n return null;\n }\n\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n return utils.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, utils) => {\n return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation = false, utils) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return utils.isAfter(dateLeft, dateRight);\n }\n\n return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};","/* Use it instead of .includes method for IE support */\nexport function arrayIncludes(array, itemOrItems) {\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.every(item => array.indexOf(item) !== -1);\n }\n\n return array.indexOf(itemOrItems) !== -1;\n}\nexport const onSpaceOrEnter = (innerFn, onFocus) => event => {\n if (event.key === 'Enter' || event.key === ' ') {\n innerFn(event); // prevent any side effects\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(event);\n }\n};\nexport const executeInTheNextEventLoopTick = fn => {\n setTimeout(fn, 0);\n};\nexport const doNothing = () => {}; // https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\n\nexport const getActiveElement = (root = document) => {\n const activeEl = root.activeElement;\n\n if (!activeEl) {\n return null;\n }\n\n if (activeEl.shadowRoot) {\n return getActiveElement(activeEl.shadowRoot);\n }\n\n return activeEl;\n};","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t {\r\n const scriptTag = document.createElement('script');\r\n scriptTag.src = 'https://accounts.google.com/gsi/client';\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.nonce = nonce;\r\n scriptTag.onload = () => {\r\n var _a;\r\n setScriptLoadedSuccessfully(true);\r\n (_a = onScriptLoadSuccessRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadSuccessRef);\r\n };\r\n scriptTag.onerror = () => {\r\n var _a;\r\n setScriptLoadedSuccessfully(false);\r\n (_a = onScriptLoadErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadErrorRef);\r\n };\r\n document.body.appendChild(scriptTag);\r\n return () => {\r\n document.body.removeChild(scriptTag);\r\n };\r\n }, [nonce]);\r\n return scriptLoadedSuccessfully;\r\n}\n\nconst GoogleOAuthContext = createContext(null);\r\nfunction GoogleOAuthProvider({ clientId, nonce, onScriptLoadSuccess, onScriptLoadError, children, }) {\r\n const scriptLoadedSuccessfully = useLoadGsiScript({\r\n nonce,\r\n onScriptLoadSuccess,\r\n onScriptLoadError,\r\n });\r\n const contextValue = useMemo(() => ({\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n }), [clientId, scriptLoadedSuccessfully]);\r\n return (React.createElement(GoogleOAuthContext.Provider, { value: contextValue }, children));\r\n}\r\nfunction useGoogleOAuth() {\r\n const context = useContext(GoogleOAuthContext);\r\n if (!context) {\r\n throw new Error('Google OAuth components must be used within GoogleOAuthProvider');\r\n }\r\n return context;\r\n}\n\nfunction extractClientId(credentialResponse) {\r\n var _a;\r\n const clientId = (_a = credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.clientId) !== null && _a !== void 0 ? _a : credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.client_id;\r\n return clientId;\r\n}\n\nconst containerHeightMap = { large: 40, medium: 32, small: 20 };\r\nfunction GoogleLogin({ onSuccess, onError, useOneTap, promptMomentNotification, type = 'standard', theme = 'outline', size = 'large', text, shape, logo_alignment, width, locale, click_listener, containerProps, ...props }) {\r\n const btnContainerRef = useRef(null);\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n promptMomentNotificationRef.current = promptMomentNotification;\r\n useEffect(() => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.initialize({\r\n client_id: clientId,\r\n callback: (credentialResponse) => {\r\n var _a;\r\n if (!(credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.credential)) {\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n }\r\n const { credential, select_by } = credentialResponse;\r\n onSuccessRef.current({\r\n credential,\r\n clientId: extractClientId(credentialResponse),\r\n select_by,\r\n });\r\n },\r\n ...props,\r\n });\r\n (_f = (_e = (_d = window === null || window === void 0 ? void 0 : window.google) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.renderButton(btnContainerRef.current, {\r\n type,\r\n theme,\r\n size,\r\n text,\r\n shape,\r\n logo_alignment,\r\n width,\r\n locale,\r\n click_listener,\r\n });\r\n if (useOneTap)\r\n (_j = (_h = (_g = window === null || window === void 0 ? void 0 : window.google) === null || _g === void 0 ? void 0 : _g.accounts) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.prompt(promptMomentNotificationRef.current);\r\n return () => {\r\n var _a, _b, _c;\r\n if (useOneTap)\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n useOneTap,\r\n type,\r\n theme,\r\n size,\r\n text,\r\n shape,\r\n logo_alignment,\r\n width,\r\n locale,\r\n ]);\r\n return (React.createElement(\"div\", { ...containerProps, ref: btnContainerRef, style: { height: containerHeightMap[size], ...containerProps === null || containerProps === void 0 ? void 0 : containerProps.style } }));\r\n}\n\nfunction googleLogout() {\r\n var _a, _b, _c;\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.disableAutoSelect();\r\n}\n\n/* eslint-disable import/export */\r\nfunction useGoogleLogin({ flow = 'implicit', scope = '', onSuccess, onError, onNonOAuthError, overrideScope, state, ...props }) {\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const clientRef = useRef();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const onNonOAuthErrorRef = useRef(onNonOAuthError);\r\n onNonOAuthErrorRef.current = onNonOAuthError;\r\n useEffect(() => {\r\n var _a;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n const clientMethod = flow === 'implicit' ? 'initTokenClient' : 'initCodeClient';\r\n const client = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts.oauth2[clientMethod]({\r\n client_id: clientId,\r\n scope: overrideScope ? scope : `openid profile email ${scope}`,\r\n callback: (response) => {\r\n var _a, _b;\r\n if (response.error)\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef, response);\r\n (_b = onSuccessRef.current) === null || _b === void 0 ? void 0 : _b.call(onSuccessRef, response);\r\n },\r\n error_callback: (nonOAuthError) => {\r\n var _a;\r\n (_a = onNonOAuthErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onNonOAuthErrorRef, nonOAuthError);\r\n },\r\n state,\r\n ...props,\r\n });\r\n clientRef.current = client;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [clientId, scriptLoadedSuccessfully, flow, scope, state]);\r\n const loginImplicitFlow = useCallback((overrideConfig) => { var _a; return (_a = clientRef.current) === null || _a === void 0 ? void 0 : _a.requestAccessToken(overrideConfig); }, []);\r\n const loginAuthCodeFlow = useCallback(() => { var _a; return (_a = clientRef.current) === null || _a === void 0 ? void 0 : _a.requestCode(); }, []);\r\n return flow === 'implicit' ? loginImplicitFlow : loginAuthCodeFlow;\r\n}\n\nfunction useGoogleOneTapLogin({ onSuccess, onError, promptMomentNotification, cancel_on_tap_outside, hosted_domain, disabled, }) {\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n promptMomentNotificationRef.current = promptMomentNotification;\r\n useEffect(() => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n if (disabled) {\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n return;\r\n }\r\n (_f = (_e = (_d = window === null || window === void 0 ? void 0 : window.google) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.initialize({\r\n client_id: clientId,\r\n callback: (credentialResponse) => {\r\n var _a;\r\n if (!(credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.credential)) {\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n }\r\n const { credential, select_by } = credentialResponse;\r\n onSuccessRef.current({\r\n credential,\r\n clientId: extractClientId(credentialResponse),\r\n select_by,\r\n });\r\n },\r\n hosted_domain,\r\n cancel_on_tap_outside,\r\n });\r\n (_j = (_h = (_g = window === null || window === void 0 ? void 0 : window.google) === null || _g === void 0 ? void 0 : _g.accounts) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.prompt(promptMomentNotificationRef.current);\r\n return () => {\r\n var _a, _b, _c;\r\n (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n };\r\n }, [\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n cancel_on_tap_outside,\r\n hosted_domain,\r\n disabled,\r\n ]);\r\n}\n\n/**\r\n * Checks if the user granted all the specified scope or scopes\r\n * @returns True if all the scopes are granted\r\n */\r\nfunction hasGrantedAllScopesGoogle(tokenResponse, firstScope, ...restScopes) {\r\n var _a, _b, _c;\r\n if (!(window === null || window === void 0 ? void 0 : window.google))\r\n return false;\r\n return (((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2) === null || _c === void 0 ? void 0 : _c.hasGrantedAllScopes(tokenResponse, firstScope, ...restScopes)) || false);\r\n}\n\n/**\r\n * Checks if the user granted any of the specified scope or scopes.\r\n * @returns True if any of the scopes are granted\r\n */\r\nfunction hasGrantedAnyScopeGoogle(tokenResponse, firstScope, ...restScopes) {\r\n var _a, _b, _c;\r\n if (!(window === null || window === void 0 ? void 0 : window.google))\r\n return false;\r\n return (((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2) === null || _c === void 0 ? void 0 : _c.hasGrantedAnyScope(tokenResponse, firstScope, ...restScopes)) || false);\r\n}\n\nexport { GoogleLogin, GoogleOAuthProvider, googleLogout, hasGrantedAllScopesGoogle, hasGrantedAnyScopeGoogle, useGoogleLogin, useGoogleOneTapLogin };\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator[] | { [key: string]: ActionCreator }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n options?:\r\n | undefined\r\n | boolean\r\n | {\r\n date?: true\r\n regex?: true\r\n undefined?: true\r\n error?: true\r\n symbol?: true\r\n map?: true\r\n set?: true\r\n function?: true | ((fn: (...args: any[]) => any) => string)\r\n }\r\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\r\n replacer?: (key: string, value: unknown) => any\r\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\r\n reviver?: (key: string, value: unknown) => any\r\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\r\n immutable?: any\r\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\r\n refs?: any\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: (action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: (state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsDenylist instead.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsAllowlist instead.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsDenylist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsAllowlist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\r\n predicate?: (state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | ((action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: DevToolsEnhancerOptions): Compose\r\n (...funcs: StoreEnhancer[]): StoreEnhancer\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: DevToolsEnhancerOptions): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport { hasMatchFunction } from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction

=\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction | void,\r\n T extends string = string\r\n> = PA extends PrepareAction\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters,\r\n P,\r\n T,\r\n ReturnType extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator {\r\n type: T\r\n match: (action: Action) => action is PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (noArgument: void): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n (payload: PT): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction

| void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload,\r\n // else\r\n ActionCreatorWithPayload\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction

(\r\n type: T\r\n): PayloadActionCreator\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action {\r\n return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\r\n */\r\nexport function isActionCreator(\r\n action: unknown\r\n): action is BaseActionCreator & Function {\r\n return (\r\n typeof action === 'function' &&\r\n 'type' in action &&\r\n // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\r\n hasMatchFunction(action as any)\r\n )\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isAction(action) &&\r\n typeof action.type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType(\r\n actionCreator: PayloadActionCreator\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware[]\r\n> extends Array {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n Enhancers extends StoreEnhancer[]\r\n> extends Array {\r\n constructor(...items: Enhancers)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return EnhancerArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n concat>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new EnhancerArray(...arr[0].concat(this))\r\n }\r\n return new EnhancerArray(...arr.concat(this))\r\n }\r\n}\r\n\r\nexport function freezeDraftable(val: T) {\r\n return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware\r\n : ThunkMiddleware\r\n\r\nexport type CurriedGetDefaultMiddleware = <\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n actionCreatorCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n if (actionCreatorCheck) {\r\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(actionCreatorCheck)) {\r\n actionCreatorOptions = actionCreatorCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createActionCreatorInvariantMiddleware(actionCreatorOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n NoInfer,\r\n ExtractDispatchExtensions,\r\n ExtractStoreExtensions,\r\n ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback = (\r\n defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer | ReducersMapObject\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /*\r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState` is correct\r\n - `Reducer` is being passed in. In this case, actually `CombinedState` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic parameter,\r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: E | ConfigureEnhancersCallback\r\n}\r\n\r\ntype Middlewares = ReadonlyArray>\r\n\r\ntype Enhancers = ReadonlyArray\r\n\r\nexport interface ToolkitStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> extends Store {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions & Dispatch\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> = ToolkitStore, A, M> &\r\n ExtractStoreExtensions\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = [ThunkMiddlewareFor],\r\n E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions): EnhancedStore {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer) as unknown as Reducer\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(defaultEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator {\r\n (...args: any[]): Action\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer>\r\n ): ActionReducerMapBuilder\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n type: Type,\r\n reducer: CaseReducer\r\n ): ActionReducerMapBuilder\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk;\r\n\r\ntype PendingAction = ReturnType;\r\ntype RejectedAction = ReturnType;\r\ntype FulfilledAction = ReturnType;\r\n\r\nconst initialState: Record = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher(\r\n matcher: TypeGuard | ((action: any) => boolean),\r\n reducer: CaseReducer\r\n ): Omit, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback(\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): [\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n CaseReducer | undefined\r\n] {\r\n const actionsMap: CaseReducers = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection = []\r\n let defaultCaseReducer: CaseReducer | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior,\r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (!type) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with an empty action type'\r\n )\r\n }\r\n if (type in actionsMap) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher(\r\n matcher: TypeGuard,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator

= PayloadActionCreator

\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers, any>\r\n | ((builder: ActionReducerMapBuilder>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare = {\r\n reducer: CaseReducer\r\n prepare: PrepareAction\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers = {\r\n [K: string]:\r\n | CaseReducer>\r\n | CaseReducerWithPrepare>\r\n}\r\n\r\ntype SliceActionType<\r\n SliceName extends string,\r\n ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n CaseReducers extends SliceCaseReducers,\r\n SliceName extends string\r\n> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n : ActionCreatorForCaseReducer<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any },\r\n Type extends string\r\n> = _ActionCreatorWithPreparedPayload\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator\r\n : ActionCreatorWithoutPayload\r\n : ActionCreatorWithoutPayload\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions\r\n): Slice {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (options.initialState === undefined) {\r\n console.error(\r\n 'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n )\r\n }\r\n }\r\n\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : freezeDraftable(options.initialState)\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record = {}\r\n const sliceCaseReducersByType: Record = {}\r\n const actionCreators: Record = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer\r\n let prepareCallback: PrepareAction | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof options.extraReducers === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n )\r\n }\r\n }\r\n }\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n return createReducer(initialState, (builder) => {\r\n for (let key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key] as CaseReducer)\r\n }\r\n for (let m of actionMatchers) {\r\n builder.addMatcher(m.matcher, m.reducer)\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer)\r\n }\r\n })\r\n }\r\n\r\n let _reducer: ReducerWithInitialState\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions = Record\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription = {\r\n matcher: ActionMatcher\r\n reducer: CaseReducer>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection = ReadonlyArray<\r\n ActionMatcherDescription\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection = Array<\r\n ActionMatcherDescription\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer = (\r\n state: Draft,\r\n action: A\r\n) => NoInfer | void | Draft>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer : void\r\n}\r\n\r\nexport type NotFunction = T extends Function ? never : T\r\n\r\nfunction isStateFunction(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState> = Reducer & {\r\n getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction(\"increment\");\r\nconst decrement = createAction(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): ReducerWithInitialState\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction,\r\n CR extends CaseReducers = CaseReducers\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection,\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState\r\n\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers\r\n | ((builder: ActionReducerMapBuilder) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection = [],\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof mapOrBuilderCallback === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n )\r\n }\r\n }\r\n }\r\n\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way (if draftable)\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => freezeDraftable(initialState())\r\n } else {\r\n const frozenInitialState = freezeDraftable(initialState)\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (result === undefined) {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (result === undefined) {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable> rather\r\n // than an Immutable, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n PayloadAction,\r\n ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload\r\n\r\nexport type BaseThunkAPI<\r\n S,\r\n E,\r\n D extends Dispatch = Dispatch,\r\n RejectedValue = unknown,\r\n RejectedMeta = unknown,\r\n FulfilledMeta = unknown\r\n> = {\r\n dispatch: D\r\n getState: () => S\r\n extra: E\r\n requestId: string\r\n signal: AbortSignal\r\n abort: (reason?: string) => void\r\n rejectWithValue: IsUnknown<\r\n RejectedMeta,\r\n (value: RejectedValue) => RejectWithValue,\r\n (\r\n value: RejectedValue,\r\n meta: RejectedMeta\r\n ) => RejectWithValue\r\n >\r\n fulfillWithValue: IsUnknown<\r\n FulfilledMeta,\r\n (value: FulfilledValue) => FulfilledValue,\r\n (\r\n value: FulfilledValue,\r\n meta: FulfilledMeta\r\n ) => FulfillWithMeta\r\n >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n name?: string\r\n message?: string\r\n stack?: string\r\n code?: string\r\n}\r\n\r\nconst commonProperties: Array = [\r\n 'name',\r\n 'message',\r\n 'stack',\r\n 'code',\r\n]\r\n\r\nclass RejectWithValue {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'RejectWithValue'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: RejectedMeta\r\n ) {}\r\n}\r\n\r\nclass FulfillWithMeta {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'FulfillWithMeta'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: FulfilledMeta\r\n ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n if (typeof value === 'object' && value !== null) {\r\n const simpleError: SerializedError = {}\r\n for (const property of commonProperties) {\r\n if (typeof value[property] === 'string') {\r\n simpleError[property] = value[property]\r\n }\r\n }\r\n\r\n return simpleError\r\n }\r\n\r\n return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n state?: unknown\r\n dispatch?: Dispatch\r\n extra?: unknown\r\n rejectValue?: unknown\r\n serializedErrorType?: unknown\r\n pendingMeta?: unknown\r\n fulfilledMeta?: unknown\r\n rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState = ThunkApiConfig extends {\r\n state: infer State\r\n}\r\n ? State\r\n : unknown\r\ntype GetExtra = ThunkApiConfig extends { extra: infer Extra }\r\n ? Extra\r\n : unknown\r\ntype GetDispatch = ThunkApiConfig extends {\r\n dispatch: infer Dispatch\r\n}\r\n ? FallbackIfUnknown<\r\n Dispatch,\r\n ThunkDispatch<\r\n GetState,\r\n GetExtra,\r\n AnyAction\r\n >\r\n >\r\n : ThunkDispatch, GetExtra, AnyAction>\r\n\r\nexport type GetThunkAPI = BaseThunkAPI<\r\n GetState,\r\n GetExtra,\r\n GetDispatch,\r\n GetRejectValue,\r\n GetRejectedMeta,\r\n GetFulfilledMeta\r\n>\r\n\r\ntype GetRejectValue = ThunkApiConfig extends {\r\n rejectValue: infer RejectValue\r\n}\r\n ? RejectValue\r\n : unknown\r\n\r\ntype GetPendingMeta = ThunkApiConfig extends {\r\n pendingMeta: infer PendingMeta\r\n}\r\n ? PendingMeta\r\n : unknown\r\n\r\ntype GetFulfilledMeta = ThunkApiConfig extends {\r\n fulfilledMeta: infer FulfilledMeta\r\n}\r\n ? FulfilledMeta\r\n : unknown\r\n\r\ntype GetRejectedMeta = ThunkApiConfig extends {\r\n rejectedMeta: infer RejectedMeta\r\n}\r\n ? RejectedMeta\r\n : unknown\r\n\r\ntype GetSerializedErrorType = ThunkApiConfig extends {\r\n serializedErrorType: infer GetSerializedErrorType\r\n}\r\n ? GetSerializedErrorType\r\n : SerializedError\r\n\r\ntype MaybePromise = T | Promise | (T extends any ? Promise : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n Returned,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n | IsUnknown<\r\n GetFulfilledMeta,\r\n Returned,\r\n FulfillWithMeta>\r\n >\r\n | RejectWithValue<\r\n GetRejectValue,\r\n GetRejectedMeta\r\n >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n arg: ThunkArg,\r\n thunkAPI: GetThunkAPI\r\n) => AsyncThunkPayloadCreatorReturnValue\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n dispatch: GetDispatch,\r\n getState: () => GetState,\r\n extra: GetExtra\r\n) => Promise<\r\n | ReturnType>\r\n | ReturnType>\r\n> & {\r\n abort: (reason?: string) => void\r\n requestId: string\r\n arg: ThunkArg\r\n unwrap: () => Promise\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n ThunkArg,\r\n // any handling\r\n (arg: ThunkArg) => AsyncThunkAction,\r\n // unknown handling\r\n unknown extends ThunkArg\r\n ? (arg: ThunkArg) => AsyncThunkAction // argument not specified or specified as void or undefined\r\n : [ThunkArg] extends [void] | [undefined]\r\n ? () => AsyncThunkAction // argument contains void\r\n : [void] extends [ThunkArg] // make optional\r\n ? (arg?: ThunkArg) => AsyncThunkAction // argument contains undefined\r\n : [undefined] extends [ThunkArg]\r\n ? WithStrictNullChecks<\r\n // with strict nullChecks: make optional\r\n (\r\n arg?: ThunkArg\r\n ) => AsyncThunkAction,\r\n // without strict null checks this will match everything, so don't make it optional\r\n (arg: ThunkArg) => AsyncThunkAction\r\n > // default case: normal argument\r\n : (arg: ThunkArg) => AsyncThunkAction\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n /**\r\n * A method to control whether the asyncThunk should be executed. Has access to the\r\n * `arg`, `api.getState()` and `api.extra` arguments.\r\n *\r\n * @returns `false` if it should be skipped\r\n */\r\n condition?(\r\n arg: ThunkArg,\r\n api: Pick, 'getState' | 'extra'>\r\n ): MaybePromise\r\n /**\r\n * If `condition` returns `false`, the asyncThunk will be skipped.\r\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n * will be dispatched or not.\r\n *\r\n * @default `false`\r\n */\r\n dispatchConditionRejection?: boolean\r\n\r\n serializeError?: (x: unknown) => GetSerializedErrorType\r\n\r\n /**\r\n * A function to use when generating the `requestId` for the request sequence.\r\n *\r\n * @default `nanoid`\r\n */\r\n idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n GetPendingMeta,\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n *\r\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n */\r\n getPendingMeta?(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n },\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n */\r\n getPendingMeta(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [string, ThunkArg, GetPendingMeta?],\r\n undefined,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'pending'\r\n } & GetPendingMeta\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [\r\n Error | null,\r\n string,\r\n ThunkArg,\r\n GetRejectValue?,\r\n GetRejectedMeta?\r\n ],\r\n GetRejectValue | undefined,\r\n string,\r\n GetSerializedErrorType,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'rejected'\r\n aborted: boolean\r\n condition: boolean\r\n } & (\r\n | ({ rejectedWithValue: false } & {\r\n [K in keyof GetRejectedMeta]?: undefined\r\n })\r\n | ({ rejectedWithValue: true } & GetRejectedMeta)\r\n )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [Returned, string, ThunkArg, GetFulfilledMeta?],\r\n Returned,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'fulfilled'\r\n } & GetFulfilledMeta\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator & {\r\n pending: AsyncThunkPendingActionCreator\r\n rejected: AsyncThunkRejectedActionCreator\r\n fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >\r\n typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs = Id<\r\n NewConfig & Omit\r\n>\r\n\r\ntype CreateAsyncThunk = {\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n // separate signature without `AsyncThunkConfig` for better inference\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n CurriedThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk\r\n\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >,\r\n options?: AsyncThunkOptions<\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n ): AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n\r\n withTypes(): CreateAsyncThunk<\r\n OverrideThunkApiConfigs\r\n >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n function createAsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n >(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk {\r\n type RejectedValue = GetRejectValue\r\n type PendingMeta = GetPendingMeta\r\n type FulfilledMeta = GetFulfilledMeta\r\n type RejectedMeta = GetRejectedMeta\r\n\r\n const fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n > = createAction(\r\n typePrefix + '/fulfilled',\r\n (\r\n payload: Returned,\r\n requestId: string,\r\n arg: ThunkArg,\r\n meta?: FulfilledMeta\r\n ) => ({\r\n payload,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'fulfilled' as const,\r\n },\r\n })\r\n )\r\n\r\n const pending: AsyncThunkPendingActionCreator =\r\n createAction(\r\n typePrefix + '/pending',\r\n (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n payload: undefined,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'pending' as const,\r\n },\r\n })\r\n )\r\n\r\n const rejected: AsyncThunkRejectedActionCreator =\r\n createAction(\r\n typePrefix + '/rejected',\r\n (\r\n error: Error | null,\r\n requestId: string,\r\n arg: ThunkArg,\r\n payload?: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => ({\r\n payload,\r\n error: ((options && options.serializeError) || miniSerializeError)(\r\n error || 'Rejected'\r\n ) as GetSerializedErrorType,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: 'rejected' as const,\r\n aborted: error?.name === 'AbortError',\r\n condition: error?.name === 'ConditionError',\r\n },\r\n })\r\n )\r\n\r\n let displayedWarning = false\r\n\r\n const AC =\r\n typeof AbortController !== 'undefined'\r\n ? AbortController\r\n : class implements AbortController {\r\n signal = {\r\n aborted: false,\r\n addEventListener() {},\r\n dispatchEvent() {\r\n return false\r\n },\r\n onabort() {},\r\n removeEventListener() {},\r\n reason: undefined,\r\n throwIfAborted() {},\r\n }\r\n abort() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!displayedWarning) {\r\n displayedWarning = true\r\n console.info(\r\n `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n function actionCreator(\r\n arg: ThunkArg\r\n ): AsyncThunkAction {\r\n return (dispatch, getState, extra) => {\r\n const requestId = options?.idGenerator\r\n ? options.idGenerator(arg)\r\n : nanoid()\r\n\r\n const abortController = new AC()\r\n let abortReason: string | undefined\r\n\r\n let started = false\r\n function abort(reason?: string) {\r\n abortReason = reason\r\n abortController.abort()\r\n }\r\n\r\n const promise = (async function () {\r\n let finalAction: ReturnType\r\n try {\r\n let conditionResult = options?.condition?.(arg, { getState, extra })\r\n if (isThenable(conditionResult)) {\r\n conditionResult = await conditionResult\r\n }\r\n\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw {\r\n name: 'ConditionError',\r\n message: 'Aborted due to condition callback returning false.',\r\n }\r\n }\r\n started = true\r\n\r\n const abortedPromise = new Promise((_, reject) =>\r\n abortController.signal.addEventListener('abort', () =>\r\n reject({\r\n name: 'AbortError',\r\n message: abortReason || 'Aborted',\r\n })\r\n )\r\n )\r\n dispatch(\r\n pending(\r\n requestId,\r\n arg,\r\n options?.getPendingMeta?.(\r\n { requestId, arg },\r\n { getState, extra }\r\n )\r\n )\r\n )\r\n finalAction = await Promise.race([\r\n abortedPromise,\r\n Promise.resolve(\r\n payloadCreator(arg, {\r\n dispatch,\r\n getState,\r\n extra,\r\n requestId,\r\n signal: abortController.signal,\r\n abort,\r\n rejectWithValue: ((\r\n value: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => {\r\n return new RejectWithValue(value, meta)\r\n }) as any,\r\n fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n return new FulfillWithMeta(value, meta)\r\n }) as any,\r\n })\r\n ).then((result) => {\r\n if (result instanceof RejectWithValue) {\r\n throw result\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta)\r\n }\r\n return fulfilled(result as any, requestId, arg)\r\n }),\r\n ])\r\n } catch (err) {\r\n finalAction =\r\n err instanceof RejectWithValue\r\n ? rejected(null, requestId, arg, err.payload, err.meta)\r\n : rejected(err as any, requestId, arg)\r\n }\r\n // We dispatch the result action _after_ the catch, to avoid having any errors\r\n // here get swallowed by the try/catch block,\r\n // per https://twitter.com/dan_abramov/status/770914221638942720\r\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n const skipDispatch =\r\n options &&\r\n !options.dispatchConditionRejection &&\r\n rejected.match(finalAction) &&\r\n (finalAction as any).meta.condition\r\n\r\n if (!skipDispatch) {\r\n dispatch(finalAction)\r\n }\r\n return finalAction\r\n })()\r\n return Object.assign(promise as Promise, {\r\n abort,\r\n requestId,\r\n arg,\r\n unwrap() {\r\n return promise.then(unwrapResult)\r\n },\r\n })\r\n }\r\n }\r\n\r\n return Object.assign(\r\n actionCreator as AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n {\r\n pending,\r\n rejected,\r\n fulfilled,\r\n typePrefix,\r\n }\r\n )\r\n }\r\n createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n return createAsyncThunk as CreateAsyncThunk\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n payload: any\r\n meta?: any\r\n error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload = Exclude<\r\n T,\r\n { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult(\r\n action: R\r\n): UnwrappedActionPayload {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload\r\n }\r\n if (action.error) {\r\n throw action.error\r\n }\r\n return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks = undefined extends boolean\r\n ? False\r\n : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n typeof value.then === 'function'\r\n )\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n ForkOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (\r\n parentAbortSignal: AbortSignalWithReason,\r\n parentBlockingPromises: Promise[]\r\n) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return (\r\n taskExecutor: ForkedTaskExecutor,\r\n opts?: ForkOptions\r\n ): ForkedTask => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask(\r\n async (): Promise => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n if (opts?.autoJoin) {\r\n parentBlockingPromises.push(result)\r\n }\r\n\r\n return {\r\n result: createPause>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = (\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch\r\n >,\r\n signal: AbortSignal\r\n): TakePattern => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async

>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n let stopListening = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n unsubscribe = () => {\r\n stopListening()\r\n reject()\r\n }\r\n })\r\n\r\n const promises: (Promise | Promise<[AnyAction, S, S]>)[] = [\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch = ThunkDispatch,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions = {}) {\r\n const listenerMap = new Map()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of Array.from(listenerMap.values())) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n const autoJoinPromises: Promise[] = []\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal, autoJoinPromises),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n await Promise.allSettled(autoJoinPromises)\r\n\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware =\r\n (api) => (next) => (action) => {\r\n if (!isAction(action)) {\r\n // we only want to notify listeners for action objects\r\n return next(action)\r\n }\r\n\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal(\r\n signal: AbortSignalWithReason,\r\n promise: Promise\r\n): Promise {\r\n let cleanup = noop\r\n return new Promise((resolve, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n return\r\n }\r\n\r\n cleanup = addAbortSignalListener(signal, notifyRejection)\r\n promise.finally(() => cleanup()).then(resolve, reject)\r\n }).finally(() => {\r\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n cleanup = noop\r\n })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async (\r\n task: () => Promise,\r\n cleanUp?: () => void\r\n): Promise> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = (signal: AbortSignal) => {\r\n return (promise: Promise): Promise => {\r\n return catchRejection(\r\n raceWithSignal(signal, promise).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause(signal)\r\n return (timeoutMs: number): Promise => {\r\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n () =>\r\n (payload: T): { payload: T; meta: unknown } => ({\r\n payload,\r\n meta: { [SHOULD_AUTOBATCH]: true },\r\n })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n return (notify: () => void) => {\r\n setTimeout(notify, timeout)\r\n }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n typeof window !== 'undefined' && window.requestAnimationFrame\r\n ? window.requestAnimationFrame\r\n : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n | { type: 'tick' }\r\n | { type: 'timer'; timeout: number }\r\n | { type: 'raf' }\r\n | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n (next) =>\r\n (...args) => {\r\n const store = next(...args)\r\n\r\n let notifying = true\r\n let shouldNotifyAtEndOfTick = false\r\n let notificationQueued = false\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n const queueCallback =\r\n options.type === 'tick'\r\n ? queueMicrotaskShim\r\n : options.type === 'raf'\r\n ? rAF\r\n : options.type === 'callback'\r\n ? options.queueNotification\r\n : createQueueWithTimer(options.timeout)\r\n\r\n const notifyListeners = () => {\r\n // We're running at the end of the event loop tick.\r\n // Run the real listener callbacks to actually update the UI.\r\n notificationQueued = false\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false\r\n listeners.forEach((l) => l())\r\n }\r\n }\r\n\r\n return Object.assign({}, store, {\r\n // Override the base `store.subscribe` method to keep original listeners\r\n // from running if we're delaying notifications\r\n subscribe(listener: () => void) {\r\n // Each wrapped listener will only call the real listener if\r\n // the `notifying` flag is currently active when it's called.\r\n // This lets the base store work as normal, while the actual UI\r\n // update becomes controlled by this enhancer.\r\n const wrappedListener: typeof listener = () => notifying && listener()\r\n const unsubscribe = store.subscribe(wrappedListener)\r\n listeners.add(listener)\r\n return () => {\r\n unsubscribe()\r\n listeners.delete(listener)\r\n }\r\n },\r\n // Override the base `store.dispatch` method so that we can check actions\r\n // for the `shouldAutoBatch` flag and determine if batching is active\r\n dispatch(action: any) {\r\n try {\r\n // If the action does _not_ have the `shouldAutoBatch` flag,\r\n // we resume/continue normal notify-after-each-dispatch behavior\r\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n // Instead, we set a flag so that it's a no-op when it does run\r\n shouldNotifyAtEndOfTick = !notifying\r\n if (shouldNotifyAtEndOfTick) {\r\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n // a microtask to notify listeners at the end of the event loop tick.\r\n // Make sure we only enqueue this _once_ per tick.\r\n if (!notificationQueued) {\r\n notificationQueued = true\r\n queueCallback(notifyListeners)\r\n }\r\n }\r\n // Go ahead and process the action as usual, including reducers.\r\n // If normal notification behavior is enabled, the store will notify\r\n // all of its own listeners, and the wrapper callbacks above will\r\n // see `notifying` is true and pass on to the real listener callbacks.\r\n // If we're \"batching\" behavior, then the wrapped callbacks will\r\n // bail out, causing the base store notification behavior to be no-ops.\r\n return store.dispatch(action)\r\n } finally {\r\n // Assume we're back to normal behavior after each action\r\n notifying = true\r\n }\r\n },\r\n })\r\n }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n isAction,\r\n isActionCreator,\r\n isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nexport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n SHOULD_AUTOBATCH,\r\n prepareAutoBatched,\r\n autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n\r\nexport type { ExtractDispatchExtensions as TSHelpersExtractDispatchExtensions } from './tsHelpers'\r\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `

`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n signal: AbortSignal;\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Remove any lingering deleted fetchers that have already been removed\n // from state.fetchers\n deletedFetchers.forEach((key) => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n deletedFetchersKeys.push(key);\n }\n });\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n } else {\n // We already called deleteFetcher() on these, can remove them from this\n // Set now that we've handed the keys off to the data layer\n deletedFetchersKeys.forEach((key) => deletedFetchers.delete(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches =\n opts?.initialHydration &&\n state.matches &&\n state.matches.length > 0 &&\n !initialMatchesIsFOW\n ? // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches\n : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n\n // If we opted into the flag we can clear this now since we're calling\n // deleteFetcher() at the end of updateState() and we've already handed the\n // deleted fetcher keys off to the data layer.\n // If not, we're eagerly calling deleteFetcher() and we need to keep this\n // Set populated until the next updateState call, and we'll clear\n // `deletedFetchers` then\n if (future.v7_fetcherPersist) {\n deletedFetchers.delete(key);\n }\n\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n if (!future.v7_fetcherPersist) {\n deleteFetcher(key);\n }\n } else {\n activeFetchers.set(key, count);\n }\n\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n signal,\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n ),\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","/*!\n * ApexCharts v3.54.1\n * (c) 2018-2024 ApexCharts\n * Released under the MIT License.\n */\n\"use strict\";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=Array(e);i=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(t){throw t},f:s}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var r,o=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){n=!0,r=t},f:function(){try{o||null==i.return||i.return()}finally{if(n)throw r}}}}function o(t){var i=c();return function(){var a,s=l(t);if(i){var r=l(this).constructor;a=Reflect.construct(s,arguments,r)}else a=s.apply(this,arguments);return function(t,i){if(i&&(\"object\"==typeof i||\"function\"==typeof i))return i;if(void 0!==i)throw new TypeError(\"Derived constructors may only return object or undefined\");return e(t)}(this,a)}}function n(t,e,i){return(e=x(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function h(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&u(t,e)}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function g(t){for(var e=1;e>16,o=i>>8&255,n=255&i;return\"#\"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:\"shadeColor\",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:\"bind\",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:\"isObject\",value:function(t){return t&&\"object\"===b(t)&&!Array.isArray(t)&&null!=t}},{key:\"is\",value:function(t,e){return Object.prototype.toString.call(e)===\"[object \"+t+\"]\"}},{key:\"listToArray\",value:function(t){var e,i=[];for(e=0;e1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:\"randomId\",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:\"noExponents\",value:function(t){var e=String(t).split(/[eE]/);if(1===e.length)return e[0];var i=\"\",a=t<0?\"-\":\"\",s=e[0].replace(\".\",\"\"),r=Number(e[1])+1;if(r<0){for(i=a+\"0.\";r++;)i+=\"0\";return i+s.replace(/^-/,\"\")}for(r-=s.length;r--;)i+=\"0\";return s+i}},{key:\"getDimensions\",value:function(t){var e=getComputedStyle(t,null),i=t.clientHeight,a=t.clientWidth;return i-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i]}},{key:\"getBoundingClientRect\",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:\"getLargestStringFromArr\",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:\"hexToRgba\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"#999999\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;\"#\"!==t.substring(0,1)&&(t=\"#999999\");var i=t.replace(\"#\",\"\");i=i.match(new RegExp(\"(.{\"+i.length/3+\"})\",\"g\"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:\"x\",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\\=?;:'\",.<>{}[\\]\\\\/]/gi,e)}},{key:\"negToZero\",value:function(t){return t<0?0:t}},{key:\"moveIndexInArray\",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:\"extractNumber\",value:function(t){return parseFloat(t.replace(/[^\\d.]*/g,\"\"))}},{key:\"findAncestor\",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:\"setELstyles\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:\"preciseAddition\",value:function(t,e){var i=(String(t).split(\".\")[1]||\"\").length,a=(String(e).split(\".\")[1]||\"\").length,s=Math.pow(10,Math.max(i,a));return(Math.round(t*s)+Math.round(e*s))/s}},{key:\"isNumber\",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:\"isFloat\",value:function(t){return Number(t)===t&&t%1!=0}},{key:\"isSafari\",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:\"isFirefox\",value:function(){return navigator.userAgent.toLowerCase().indexOf(\"firefox\")>-1}},{key:\"isMsEdge\",value:function(){var t=window.navigator.userAgent,e=t.indexOf(\"Edge/\");return e>0&&parseInt(t.substring(e+5,t.indexOf(\".\",e)),10)}},{key:\"getGCD\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));for(t=Math.round(Math.abs(t)*a),e=Math.round(Math.abs(e)*a);e;){var s=e;e=t%e,t=s}return t/a}},{key:\"getPrimeFactors\",value:function(t){for(var e=[],i=2;t>=2;)t%i==0?(e.push(i),t/=i):i++;return e}},{key:\"mod\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));return(t=Math.round(Math.abs(t)*a))%(e=Math.round(Math.abs(e)*a))/a}}]),t}(),y=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return s(t,[{key:\"setEasingFunctions\",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case\"linear\":t=\"-\";break;case\"easein\":t=\"<\";break;case\"easeout\":t=\">\";break;case\"easeinout\":default:t=\"<>\";break;case\"swing\":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case\"bounce\":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case\"elastic\":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:\"animateLine\",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:\"animateMarker\",value:function(t,e,i,a){t.attr({opacity:0}).animate(e,i).attr({opacity:1}).afterAll((function(){a()}))}},{key:\"animateRect\",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:\"animatePathsGradually\",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&\"bar\"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,\"line\"!==h.config.chart.type||h.globals.comboCharts?s:\"stroke\",r,o,n,l*c)}},{key:\"showDelayedElements\",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove(\"apexcharts-element-hidden\"),e.classList.add(\"apexcharts-hidden-element-shown\")}))}},{key:\"animationCompleted\",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),\"function\"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:\"morphSVG\",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr(\"pathFrom\")),r||(r=t.attr(\"pathTo\"));var c=function(t){return\"radar\"===h.config.chart.type&&(o=1),\"M 0 \".concat(h.globals.gridHeight)};(!s||s.indexOf(\"undefined\")>-1||s.indexOf(\"NaN\")>-1)&&(s=c()),(!r||r.indexOf(\"undefined\")>-1||r.indexOf(\"NaN\")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){m.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):\"none\"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),w=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getDefaultFilter\",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size(\"120%\",\"180%\",\"-5%\",\"-40%\"),\"none\"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addNormalFilter\",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains(\"apexcharts-marker\")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addLightenFilter\",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node)}},{key:\"addDarkenFilter\",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:r}})})),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node)}},{key:\"applyFilter\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case\"none\":this.addNormalFilter(t,e);break;case\"lighten\":this.addLightenFilter(t,e,{intensity:a});break;case\"darken\":this.addDarkenFilter(t,e,{intensity:a})}}},{key:\"addShadow\",value:function(t,e,i){var a,s=this.w,r=i.blur,o=i.top,n=i.left,l=i.color,h=i.opacity;if((null===(a=s.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.length)>0&&-1===s.config.chart.dropShadow.enabledOnSeries.indexOf(e))return t;var c=t.flood(Array.isArray(l)?l[e]:l,h).composite(t.sourceAlpha,\"in\").offset(n,o).gaussianBlur(r).merge(t.source);return t.blend(t.source,c)}},{key:\"dropShadow\",value:function(t,e){var i,a,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=e.top,o=e.left,n=e.blur,l=e.color,h=e.opacity,c=e.noUserSpaceOnUse,d=this.w;if(t.unfilter(!0),m.isMsEdge()&&\"radialBar\"===d.config.chart.type)return t;if((null===(i=d.config.chart.dropShadow.enabledOnSeries)||void 0===i?void 0:i.length)>0&&-1===(null===(a=d.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.indexOf(s)))return t;return l=Array.isArray(l)?l[s]:l,t.filter((function(t){var e=null;e=m.isSafari()||m.isFirefox()||m.isMsEdge()?t.flood(l,h).composite(t.sourceAlpha,\"in\").offset(o,r).gaussianBlur(n):t.flood(l,h).composite(t.sourceAlpha,\"in\").offset(o,r).gaussianBlur(n).merge(t.source),t.blend(t.source,e)})),c||t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node),t}},{key:\"setSelectionFilter\",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute(\"selected\",!0);var s=a.config.states.active.filter;\"none\"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:\"_scaleFilterSize\",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:\"200%\",height:\"200%\",x:\"-50%\",y:\"-50%\"})}}]),t}(),k=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"roundPathCorners\",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf(\"NaN\")>-1&&(t=\"\");var o=t.split(/[,\\s]/).reduce((function(t,e){var i=e.match(\"([a-zA-Z])(.+)\");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;\"Z\"==o[o.length-1][0]&&o[0].length>2&&(h=[\"L\",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&\"L\"==g[0]&&u.length>2&&\"L\"==u[0]){var f,p,x=r(d),b=r(g),v=r(u);f=i(b,x,e),p=i(b,v,e),s(g,f),g.origPoint=b,n.push(g);var m=a(f,b,.5),y=a(b,p,.5),w=[\"C\",m.x,m.y,y.x,y.y,p.x,p.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push([\"Z\"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(\" \")+\" \"}),\"\")}},{key:\"drawLine\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"#a8a8a8\",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:\"butt\";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,\"stroke-dasharray\":r,\"stroke-width\":o,\"stroke-linecap\":n})}},{key:\"drawRect\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"#fefefe\",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,\"stroke-width\":null!==n?n:0,stroke:null!==l?l:\"none\",\"stroke-dasharray\":h}),c.node.setAttribute(\"fill\",r),c}},{key:\"drawPolygon\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#e1e1e1\",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"none\";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,\"stroke-width\":i})}},{key:\"drawCircle\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:\"drawPath\",value:function(t){var e=t.d,i=void 0===e?\"\":e,a=t.stroke,s=void 0===a?\"#a8a8a8\":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,f=void 0===u?null:u,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf(\"undefined\")>-1||i.indexOf(\"NaN\")>-1)&&(i=\"M 0 \".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,\"fill-opacity\":h,stroke:s,\"stroke-opacity\":d,\"stroke-linecap\":f,\"stroke-width\":o,\"stroke-dasharray\":x,class:g})}},{key:\"group\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:\"move\",value:function(t,e){var i=[\"M\",t,e].join(\" \");return i}},{key:\"line\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[\" L\",t,e].join(\" \"):\"H\"===i?a=[\" H\",t].join(\" \"):\"V\"===i&&(a=[\" V\",e].join(\" \")),a}},{key:\"curve\",value:function(t,e,i,a,s,r){var o=[\"C\",t,e,i,a,s,r].join(\" \");return o}},{key:\"quadraticCurve\",value:function(t,e,i,a){return[\"Q\",t,e,i,a].join(\" \")}},{key:\"arc\",value:function(t,e,i,a,s,r,o){var n=\"A\";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(n=\"a\");var l=[n,t,e,i,a,s,r,o].join(\" \");return l}},{key:\"renderPaths\",value:function(t){var e,i=t.j,a=t.realIndex,s=t.pathFrom,r=t.pathTo,o=t.stroke,n=t.strokeWidth,l=t.strokeLinecap,h=t.fill,c=t.animationDelay,d=t.initialSpeed,u=t.dataChangeSpeed,f=t.className,p=t.chartType,x=t.shouldClipToGrid,b=void 0===x||x,v=t.bindEventsOnPaths,m=void 0===v||v,k=t.drawShadow,A=void 0===k||k,S=this.w,C=new w(this.ctx),L=new y(this.ctx),P=this.w.config.chart.animations.enabled,M=P&&this.w.config.chart.animations.dynamicAnimation.enabled,I=!!(P&&!S.globals.resized||M&&S.globals.dataChanged&&S.globals.shouldAnimate);I?e=s:(e=r,S.globals.animationEnded=!0);var T=S.config.stroke.dashArray,z=0;z=Array.isArray(T)?T[a]:S.config.stroke.dashArray;var X=this.drawPath({d:e,stroke:o,strokeWidth:n,fill:h,fillOpacity:1,classes:f,strokeLinecap:l,strokeDashArray:z});if(X.attr(\"index\",a),b&&(\"bar\"===p&&!S.globals.isHorizontal||S.globals.comboCharts?X.attr({\"clip-path\":\"url(#gridRectBarMask\".concat(S.globals.cuid,\")\")}):X.attr({\"clip-path\":\"url(#gridRectMask\".concat(S.globals.cuid,\")\")})),\"none\"!==S.config.states.normal.filter.type)C.getDefaultFilter(X,a);else if(S.config.chart.dropShadow.enabled&&A){var E=S.config.chart.dropShadow;C.dropShadow(X,E,a)}m&&(X.node.addEventListener(\"mouseenter\",this.pathMouseEnter.bind(this,X)),X.node.addEventListener(\"mouseleave\",this.pathMouseLeave.bind(this,X)),X.node.addEventListener(\"mousedown\",this.pathMouseDown.bind(this,X))),X.attr({pathTo:r,pathFrom:s});var Y={el:X,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:h,strokeWidth:n,delay:c};return!P||S.globals.resized||S.globals.dataChanged?!S.globals.resized&&S.globals.dataChanged||L.showDelayedElements():L.animatePathsGradually(g(g({},Y),{},{speed:d})),S.globals.dataChanged&&M&&I&&L.animatePathsGradually(g(g({},Y),{},{speed:u})),X}},{key:\"drawPattern\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"#a8a8a8\",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){\"horizontalLines\"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):\"verticalLines\"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):\"slantedLines\"===t?r.line(0,0,e,i).stroke({color:a,width:s}):\"squares\"===t?r.rect(e,i).fill(\"none\").stroke({color:a,width:s}):\"circles\"===t&&r.circle(e).fill(\"none\").stroke({color:a,width:s})}))}},{key:\"drawGradient\",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf(\"#\")&&(e=m.hexToRgba(e,a)),i.length<9&&0===i.indexOf(\"#\")&&(i=m.hexToRgba(i,s));var d=0,g=1,u=1,f=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,f=void 0!==n[3]?n[3]/100:null);var p=!(\"donut\"!==c.config.chart.type&&\"pie\"!==c.config.chart.type&&\"polarArea\"!==c.config.chart.type&&\"bubble\"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(p?\"radial\":\"linear\",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==f&&t.at(f,e,a)})):c.globals.dom.Paper.gradient(p?\"radial\":\"linear\",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),p){var x=c.globals.gridWidth/2,b=c.globals.gridHeight/2;\"bubble\"!==c.config.chart.type?r.attr({gradientUnits:\"userSpaceOnUse\",cx:x,cy:b,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else\"vertical\"===t?r.from(0,0).to(0,1):\"diagonal\"===t?r.from(0,0).to(1,1):\"horizontal\"===t?r.from(0,1).to(1,1):\"diagonal2\"===t&&r.from(1,0).to(0,1);return r}},{key:\"getTextBasedOnMaxWidth\",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(\".apexcharts-series path\").members,h=i.globals.dom.Paper.select(\".apexcharts-series circle, .apexcharts-series rect\").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute(\"selected\",\"false\"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute(\"selected\",\"true\"),o=\"true\",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(\"true\"===o){var d=i.config.states.active.filter;if(\"none\"!==d)a.applyFilter(t,s,d.type,d.value);else if(\"none\"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if(\"none\"!==i.config.states.active.filter.type)if(\"none\"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}\"function\"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent(\"dataPointSelection\",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:\"rotateAroundCenter\",value:function(t){var e={};return t&&\"function\"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:\"getTextRects\",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:\"start\",fontSize:e,fontFamily:i,foreColor:\"#fff\",opacity:0});a&&o.attr(\"transform\",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:\"placeTextWithEllipsis\",value:function(t,e,i){if(\"function\"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+\"...\");t.textContent=\".\"}}}],[{key:\"setAttrs\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),A=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getStackedSeriesTotals\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:\"getStackedSeriesTotalsByGroups\",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,i){a.indexOf(e.globals.seriesNames[i])>-1&&s.push(i)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:\"setSeriesYAxisMappings\",value:function(){var t=this.w.globals,e=this.w.config,i=[],a=[],s=[],r=t.series.length>e.yaxis.length||e.yaxis.some((function(t){return Array.isArray(t.seriesName)}));e.series.forEach((function(t,e){s.push(e),a.push(null)})),e.yaxis.forEach((function(t,e){i[e]=[]}));var o=[];e.yaxis.forEach((function(t,a){var n=!1;if(t.seriesName){var l=[];Array.isArray(t.seriesName)?l=t.seriesName:l.push(t.seriesName),l.forEach((function(t){e.series.forEach((function(e,o){if(e.name===t){var l=o;a===o||r?!r||s.indexOf(o)>-1?i[a].push([a,o]):console.warn(\"Series '\"+e.name+\"' referenced more than once in what looks like the new style. That is, when using either seriesName: [], or when there are more series than yaxes.\"):(i[o].push([o,a]),l=a),n=!0,-1!==(l=s.indexOf(l))&&s.splice(l,1)}}))}))}n||o.push(a)})),i=i.map((function(t,e){var i=[];return t.forEach((function(t){a[t[1]]=t[0],i.push(t[1])})),i}));for(var n=e.yaxis.length-1,l=0;l0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:\"seriesHaveSameValues\",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:\"getCategoryLabels\",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:\"getLargestSeries\",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:\"getLargestMarkerSize\",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(t.config.markers.hover.size>0?e=t.config.markers.hover.size:e+=t.config.markers.hover.sizeOffset),t.globals.markers.largestSize=e,e}},{key:\"getSeriesTotals\",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0){var u=function(t,e){var i=s.config.yaxis[s.globals.seriesYAxisReverseMap[e]],r=t<0?-1:1;return t=Math.abs(t),i.logarithmic&&(t=a.getBaseLog(i.logBase,t)),-r*t/o[e]};if(r.isMultipleYAxis){l=[];for(var f=0;f0&&e.forEach((function(e){var o=[],n=[];t.i.forEach((function(i,a){s.config.series[i].group===e&&(o.push(t.series[a]),n.push(i))})),o.length>0&&r.push(a.draw(o,i,n))})),r}}],[{key:\"checkComboSeries\",value:function(t,e){var i=!1,a=0,s=0;return void 0===e&&(e=\"line\"),t.length&&void 0!==t[0].type&&t.forEach((function(t){\"bar\"!==t.type&&\"column\"!==t.type&&\"candlestick\"!==t.type&&\"boxPlot\"!==t.type||a++,void 0!==t.type&&t.type!==e&&s++})),s>0&&(i=!0),{comboBarCount:a,comboCharts:i}}},{key:\"extendArrayProps\",value:function(t,e,i){var a,s,r,o,n,l;(null!==(a=e)&&void 0!==a&&a.yaxis&&(e=t.extendYAxis(e,i)),null!==(s=e)&&void 0!==s&&s.annotations)&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),null!==(r=e)&&void 0!==r&&null!==(o=r.annotations)&&void 0!==o&&o.xaxis&&(e=t.extendXAxisAnnotations(e)),null!==(n=e)&&void 0!==n&&null!==(l=n.annotations)&&void 0!==l&&l.points&&(e=t.extendPointAnnotations(e)));return e}}]),t}(),S=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e}return s(t,[{key:\"setOrientations\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if(\"vertical\"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='\".concat(a,\"']\"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute(\"x\",parseFloat(s.getAttribute(\"x\"))-r.height+4);var o=\"top\"===t.label.position?r.width:-r.width;s.setAttribute(\"y\",parseFloat(s.getAttribute(\"y\"))+o);var n=this.annoCtx.graphics.rotateAroundCenter(s),l=n.x,h=n.y;s.setAttribute(\"transform\",\"rotate(-90 \".concat(l,\" \").concat(h,\")\"))}}}},{key:\"addBackgroundToAnno\",value:function(t,e){var i=this.w;if(!t||!e.label.text||!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(\".apexcharts-grid\").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding,o=r.left,n=r.right,l=r.top,h=r.bottom;if(\"vertical\"===e.label.orientation){var c=[o,n,l,h];l=c[0],h=c[1],o=c[2],n=c[3]}var d=s.left-a.left-o,g=s.top-a.top-l,u=this.annoCtx.graphics.drawRect(d-i.globals.barPadForNumericAxis,g,s.width+o+n,s.height+l+h,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&u.node.classList.add(e.id),u}},{key:\"annotationsBackground\",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(a,\"']\"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener(\"mouseenter\",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener(\"mouseleave\",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener(\"click\",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.forEach((function(t,e){return i(t,e,\"xaxis\")})),e.config.annotations.yaxis.forEach((function(t,e){return i(t,e,\"yaxis\")})),e.config.annotations.points.forEach((function(t,e){return i(t,e,\"point\")}))}},{key:\"getY1Y2\",value:function(t,e){var i,a=this.w,s=\"y1\"===t?e.y:e.y2,r=!1;if(this.annoCtx.invertAxis){var o=a.config.xaxis.convertedCatToNumeric?a.globals.categoryLabels:a.globals.labels,n=o.indexOf(s),l=a.globals.dom.baseEl.querySelector(\".apexcharts-yaxis-texts-g text:nth-child(\".concat(n+1,\")\"));i=l?parseFloat(l.getAttribute(\"y\")):(a.globals.gridHeight/o.length-1)*(n+1)-a.globals.barHeight,void 0!==e.seriesIndex&&a.globals.barHeight&&(i-=a.globals.barHeight/2*(a.globals.series.length-1)-a.globals.barHeight*e.seriesIndex)}else{var h,c=a.globals.seriesYAxisMap[e.yAxisIndex][0],d=a.config.yaxis[e.yAxisIndex].logarithmic?new A(this.annoCtx.ctx).getLogVal(a.config.yaxis[e.yAxisIndex].logBase,s,c)/a.globals.yLogRatio[c]:(s-a.globals.minYArr[c])/(a.globals.yRange[c]/a.globals.gridHeight);i=a.globals.gridHeight-Math.min(Math.max(d,0),a.globals.gridHeight),r=d>a.globals.gridHeight||d<0,!e.marker||void 0!==e.y&&null!==e.y||(i=0),null!==(h=a.config.yaxis[e.yAxisIndex])&&void 0!==h&&h.reversed&&(i=d)}return\"string\"==typeof s&&s.includes(\"px\")&&(i=parseFloat(s)),{yP:i,clipped:r}}},{key:\"getX1X2\",value:function(t,e){var i=this.w,a=\"x1\"===t?e.x:e.x2,s=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,r=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,o=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,n=!1,l=this.annoCtx.inversedReversedAxis?(r-a)/(o/i.globals.gridWidth):(a-s)/(o/i.globals.gridWidth);return\"category\"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||i.config.chart.sparkline.enabled||(l=this.getStringX(a)),\"string\"==typeof a&&a.includes(\"px\")&&(l=parseFloat(a)),null==a&&e.marker&&(l=i.globals.gridWidth),void 0!==e.seriesIndex&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(l-=i.globals.barWidth/2*(i.globals.series.length-1)-i.globals.barWidth*e.seriesIndex),l>i.globals.gridWidth?(l=i.globals.gridWidth,n=!0):l<0&&(l=0,n=!0),{x:l,clipped:n}}},{key:\"getStringX\",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.map((function(t){return Array.isArray(t)?t.join(\" \"):t})).indexOf(t),s=e.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g text:nth-child(\".concat(a+1,\")\"));return s&&(i=parseFloat(s.getAttribute(\"x\"))),i}}]),t}(),C=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new S(this.annoCtx)}return s(t,[{key:\"addXaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2(\"x1\",t),o=r.x,n=r.clipped,l=!0,h=t.label.text,c=t.strokeDashArray;if(m.isNumber(o)){if(null===t.x2||void 0===t.x2){if(!n){var d=this.annoCtx.graphics.drawLine(o+t.offsetX,0+t.offsetY,o+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c,t.borderWidth);e.appendChild(d.node),t.id&&d.node.classList.add(t.id)}}else{var g=this.helpers.getX1X2(\"x2\",t);if(a=g.x,l=g.clipped,!n||!l){if(a12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\\\])HH+/g,\"$1\"+l(g))).replace(/(^|[^\\\\])H/g,\"$1\"+g)).replace(/(^|[^\\\\])hh+/g,\"$1\"+l(u))).replace(/(^|[^\\\\])h/g,\"$1\"+u);var f=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\\\])mm+/g,\"$1\"+l(f))).replace(/(^|[^\\\\])m/g,\"$1\"+f);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\\\])ss+/g,\"$1\"+l(x))).replace(/(^|[^\\\\])s/g,\"$1\"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\\\])fff+/g,\"$1\"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\\\])ff/g,\"$1\"+l(b)),b=Math.round(b/10);var v=g<12?\"AM\":\"PM\";e=(e=(e=e.replace(/(^|[^\\\\])f/g,\"$1\"+b)).replace(/(^|[^\\\\])TT+/g,\"$1\"+v)).replace(/(^|[^\\\\])T/g,\"$1\"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\\\])tt+/g,\"$1\"+m)).replace(/(^|[^\\\\])t/g,\"$1\"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?\"Z\":y>0?\"+\":\"-\";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+\":\"+l(k)}e=e.replace(/(^|[^\\\\])K/g,\"$1\"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],\"g\"),o[A])).replace(new RegExp(n[0],\"g\"),n[A])).replace(new RegExp(s[0],\"g\"),s[c])).replace(new RegExp(r[0],\"g\"),r[c])).replace(/\\\\(.)/g,\"$1\")}},{key:\"getTimeUnitsfromTimestamp\",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,\"yyyy MM dd HH mm ss fff\").split(\" \"),n=this.formatDate(r,\"yyyy MM dd HH mm ss fff\").split(\" \");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:\"isLeapYear\",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:\"calculcateLastDaysOfMonth\",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:\"determineDaysOfYear\",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:\"determineRemainingDaysOfYear\",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:\"determineDaysOfMonths\",value:function(t,e){var i=30;switch(t=m.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),P=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat=\"dd MMM\"}return s(t,[{key:\"xLabelFormat\",value:function(t,e,i,a){var s=this.w;if(\"datetime\"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new L(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:\"defaultGeneralFormatter\",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:\"defaultYFormatter\",value:function(t,e,i){var a=this.w;if(m.isNumber(t))if(0!==a.globals.yValueDecimal)t=t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal);else{var s=t.toFixed(0);t=t==s?s:t.toFixed(1)}return t}},{key:\"setLabelFormatters\",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(m.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&\"numeric\"===e.config.xaxis.type){if(m.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},\"function\"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,\"function\"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:\"heatmapLabelFormatters\",value:function(){var t=this.w;if(\"heatmap\"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),M=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getLabel\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"12px\",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?\"\":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new P(this.ctx),f=l;o&&(h=u.xLabelFormat(c,l,f,{i:a,dateFormatter:new L(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new L(this.ctx).formatDate,w:n})));var p,x;e.length>0?(p=e[a].unit,x=null,e.forEach((function(t){\"month\"===t.unit?x=\"year\":\"day\"===t.unit?x=\"month\":\"hour\"===t.unit?x=\"day\":\"minute\"===t.unit&&(x=\"hour\")})),g=x===p,i=e[a].position,h=e[a].value):\"datetime\"===n.config.xaxis.type&&void 0===d&&(h=\"\"),void 0===h&&(h=\"\"),h=Array.isArray(h)?h:h.toString();var b=new k(this.ctx),v={};v=n.globals.rotateXLabels&&o?b.getTextRects(h,parseInt(r,10),null,\"rotate(\".concat(n.config.xaxis.labels.rotate,\" 0 0)\"),!1):b.getTextRects(h,parseInt(r,10));var m=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(\"NaN\"===String(h)||s.indexOf(h)>=0&&m)&&(h=\"\"),{x:i,text:h,textRect:v,isBold:g}}},{key:\"checkLabelBasedOnTickamount\",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return\"dataPoints\"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=\"\"),e}},{key:\"checkForOverflowingLabels\",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=\"\"),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=\"\"),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.xa.length||a.some((function(t){return Array.isArray(t.seriesName)}))?t:i.seriesYAxisReverseMap[t]}},{key:\"isYAxisHidden\",value:function(t){var e=this.w,i=e.config.yaxis[t];if(!i.show||this.yAxisAllSeriesCollapsed(t))return!0;if(!i.showForNullSeries){var a=e.globals.seriesYAxisMap[t],s=new A(this.ctx);return a.every((function(t){return s.isSeriesNull(t)}))}return!1}},{key:\"getYAxisForeColor\",value:function(t,e){var i=this.w;return Array.isArray(t)&&i.globals.yAxisScale[e]&&this.ctx.theme.pushExtraColors(t,i.globals.yAxisScale[e].result.length,!1),t}},{key:\"drawYAxisTicks\",value:function(t,e,i,a,s,r,o){var n=this.w,l=new k(this.ctx),h=n.globals.translateY+n.config.yaxis[s].labels.offsetY;if(n.globals.isBarHorizontal?h=0:\"heatmap\"===n.config.chart.type&&(h+=r/2),a.show&&e>0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=l.drawLine(t+i.offsetX-a.width+a.offsetX,h+a.offsetY,t+i.offsetX+a.offsetX,h+a.offsetY,a.color);o.add(d),h+=r}}}}]),t}(),I=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new S(this.annoCtx),this.axesUtils=new M(this.annoCtx)}return s(t,[{key:\"addYaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=t.strokeDashArray,o=this.helpers.getY1Y2(\"y1\",t),n=o.yP,l=o.clipped,h=!0,c=!1,d=t.label.text;if(null===t.y2||void 0===t.y2){if(!l){c=!0;var g=this.annoCtx.graphics.drawLine(0+t.offsetX,n+t.offsetY,this._getYAxisAnnotationWidth(t),n+t.offsetY,t.borderColor,r,t.borderWidth);e.appendChild(g.node),t.id&&g.node.classList.add(t.id)}}else{if(a=(o=this.helpers.getY1Y2(\"y2\",t)).yP,h=o.clipped,a>n){var u=n;n=a,a=u}if(!l||!h){c=!0;var f=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),n-a,0,t.fillColor,t.opacity,1,t.borderColor,r);f.node.classList.add(\"apexcharts-annotation-rect\"),f.attr(\"clip-path\",\"url(#gridRectMask\".concat(s.globals.cuid,\")\")),e.appendChild(f.node),t.id&&f.node.classList.add(t.id)}}if(c){var p=\"right\"===t.label.position?s.globals.gridWidth:\"center\"===t.label.position?s.globals.gridWidth/2:0,x=this.annoCtx.graphics.drawText({x:p+t.label.offsetX,y:(null!=a?a:n)+t.label.offsetY-3,text:d,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-yaxis-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});x.attr({rel:i}),e.appendChild(x.node)}}},{key:\"_getYAxisAnnotationWidth\",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf(\"%\")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:\"drawYAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-yaxis-annotations\"});return e.config.annotations.yaxis.forEach((function(e,a){e.yAxisIndex=t.axesUtils.translateYAxisIndex(e.yAxisIndex),t.axesUtils.isYAxisHidden(e.yAxisIndex)&&t.axesUtils.yAxisAllSeriesCollapsed(e.yAxisIndex)||t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),T=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new S(this.annoCtx)}return s(t,[{key:\"addPointAnnotation\",value:function(t,e,i){if(!(this.w.globals.collapsedSeriesIndices.indexOf(t.seriesIndex)>-1)){var a=this.helpers.getX1X2(\"x1\",t),s=a.x,r=a.clipped,o=(a=this.helpers.getY1Y2(\"y1\",t)).yP,n=a.clipped;if(m.isNumber(s)&&!n&&!r){var l={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:\"apexcharts-point-annotation-marker \".concat(t.marker.cssClass,\" \").concat(t.id?t.id:\"\")},h=this.annoCtx.graphics.drawMarker(s+t.marker.offsetX,o+t.marker.offsetY,l);e.appendChild(h.node);var c=t.label.text?t.label.text:\"\",d=this.annoCtx.graphics.drawText({x:s+t.label.offsetX,y:o+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:c,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-point-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});if(d.attr({rel:i}),e.appendChild(d.node),t.customSVG.SVG){var g=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations-custom-svg \"+t.customSVG.cssClass});g.attr({transform:\"translate(\".concat(s+t.customSVG.offsetX,\", \").concat(o+t.customSVG.offsetY,\")\")}),g.node.innerHTML=t.customSVG.SVG,e.appendChild(g.node)}if(t.image.path){var u=t.image.width?t.image.width:20,f=t.image.height?t.image.height:20;h=this.annoCtx.addImage({x:s+t.image.offsetX-u/2,y:o+t.image.offsetY-f/2,width:u,height:f,path:t.image.path,appendTo:\".apexcharts-point-annotations\"})}t.mouseEnter&&h.node.addEventListener(\"mouseenter\",t.mouseEnter.bind(this,t)),t.mouseLeave&&h.node.addEventListener(\"mouseleave\",t.mouseLeave.bind(this,t)),t.click&&h.node.addEventListener(\"click\",t.click.bind(this,t))}}}},{key:\"drawPointAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations\"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var z={name:\"en\",options:{months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],toolbar:{exportToSVG:\"Download SVG\",exportToPNG:\"Download PNG\",exportToCSV:\"Download CSV\",menu:\"Menu\",selection:\"Selection\",selectionZoom:\"Selection Zoom\",zoomIn:\"Zoom In\",zoomOut:\"Zoom Out\",pan:\"Panning\",reset:\"Reset Zoom\"}}},X=function(){function t(){i(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,showDuplicates:!1,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:\"11px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},formatter:void 0},axisBorder:{show:!1,color:\"#e0e0e0\",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:\"#e0e0e0\",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:\"11px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:\"front\",stroke:{color:\"#b6b6b6\",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:\"#fff\",strokeWidth:2,strokeColor:\"#333\",shape:\"circle\",offsetX:0,offsetY:0,cssClass:\"\"},label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:\"100%\",yAxisIndex:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"end\",position:\"right\",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",orientation:\"vertical\",position:\"top\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:\"\",textAnchor:\"start\",foreColor:void 0,fontSize:\"13px\",fontFamily:void 0,fontWeight:400,appendTo:\".apexcharts-annotations\",backgroundColor:\"transparent\",borderColor:\"#c2c2c2\",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return s(t,[{key:\"init\",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:\"easeinout\",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:\"\",locales:[z],defaultLocale:\"en\",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:\"#000\",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:\"#373d3f\",fontFamily:\"Helvetica, Arial, sans-serif\",height:\"auto\",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:\"x\",fill:{color:\"#24292e\",opacity:.1},stroke:{width:1,color:\"#24292e\",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:\"normal\",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:\",\",headerCategory:\"category\",headerValue:\"value\",categoryFormatter:void 0,valueFormatter:void 0},png:{filename:void 0},svg:{filename:void 0},scale:void 0,width:void 0},autoSelected:\"zoom\"},type:\"line\",width:\"100%\",zoom:{enabled:!0,type:\"x\",autoScaleYaxis:!1,allowMouseWheelZoom:!0,zoomedArea:{fill:{color:\"#90CAF9\",opacity:.4},stroke:{color:\"#0D47A1\",opacity:.4,width:1}}}},plotOptions:{line:{isSlopeChart:!1},area:{fillTo:\"origin\"},bar:{horizontal:!1,columnWidth:\"70%\",barHeight:\"70%\",distributed:!1,borderRadius:0,borderRadiusApplication:\"around\",borderRadiusWhenStacked:\"last\",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:\"top\",maxItems:100,hideOverflowingLabels:!0,orientation:\"horizontal\",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:\"#373d3f\",fontSize:\"12px\",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:\"#00B746\",downward:\"#EF403C\"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:\"#00E396\",lower:\"#008FFB\"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:\"scale\"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:\"50%\",background:\"transparent\",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:\"front\",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:\"#f2f2f2\",strokeWidth:\"97%\",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:\"14px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+\"%\"}},total:{show:!1,label:\"Total\",fontSize:\"16px\",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+\"%\"}}},barLabels:{enabled:!1,offsetX:0,offsetY:0,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:\"16px\",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:\"65%\",background:\"transparent\",labels:{show:!1,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:\"20px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:\"Total\",fontSize:\"16px\",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:\"#e8e8e8\"},spokes:{strokeWidth:1,connectorColors:\"#e8e8e8\"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:\"#e8e8e8\",connectorColors:\"#e8e8e8\",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:\"\"},textAnchor:\"middle\",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:\"12px\",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:\"#fff\",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:\"#fff\",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:\"squares\",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:\"#e0e0e0\",strokeDashArray:0,position:\"back\",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:\"bottom\",horizontalAlign:\"center\",inverseOrder:!1,fontSize:\"12px\",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{size:7,fillColors:void 0,strokeWidth:1,shape:void 0,offsetX:0,offsetY:0,customHTML:void 0,onClick:void 0},itemMargin:{horizontal:5,vertical:4},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:\"#fff\",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:\"circle\",offsetX:0,offsetY:0,showNullDataPoints:!0,onClick:void 0,onDblClick:void 0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:\"center\",verticalAlign:\"middle\",offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"14px\",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:\"none\",value:0}},hover:{filter:{type:\"lighten\",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:\"darken\",value:.5}}},title:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:\"14px\",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:\"12px\",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:\"smooth\",lineCap:\"butt\",width:2,colors:void 0,dashArray:0,fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:\"light\",cssClass:\"\",style:{fontSize:\"12px\",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:\"dd MMM\",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+\": \":\"\"}}},z:{formatter:void 0,title:\"Size: \"},marker:{show:!0,fillColors:void 0},items:{display:\"flex\"},fixed:{enabled:!1,position:\"topRight\",offsetX:0,offsetY:0}},xaxis:{type:\"category\",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:\"yyyy\",month:\"MMM 'yy\",day:\"dd MMM\",hour:\"HH:mm\",minute:\"HH:mm:ss\",second:\"HH:mm:ss\"}},group:{groups:[],style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"}},axisBorder:{show:!0,color:\"#e0e0e0\",width:\"100%\",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:\"#e0e0e0\",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:\"on\",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:\"bottom\",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"12px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},crosshairs:{show:!0,width:1,position:\"back\",opacity:.9,stroke:{color:\"#b6b6b6\",width:1,dashArray:3},fill:{type:\"solid\",color:\"#B1B9C4\",gradient:{colorFrom:\"#D8E3F0\",colorTo:\"#BED1E6\",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:\"12px\",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:\"\",palette:\"palette1\",monochrome:{enabled:!1,color:\"#008FFB\",shadeTo:\"light\",shadeIntensity:.65}}}}}]),t}(),E=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.graphics=new k(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new S(this),this.xAxisAnnotations=new C(this),this.yAxisAnnotations=new I(this),this.pointsAnnotations=new T(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return s(t,[{key:\"drawAxesAnnotations\",value:function(){var t=this.w;if(t.globals.axisCharts&&t.globals.dataPoints){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||\"scatter\"!==t.config.chart.type&&\"bubble\"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add(\"apexcharts-element-hidden\"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:\"drawImageAnnos\",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:\"drawTextAnnos\",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:\"addXaxisAnnotation\",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:\"addYaxisAnnotation\",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:\"addPointAnnotation\",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:\"addText\",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?\".apexcharts-svg\":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||\"start\",fontSize:n||\"12px\",fontWeight:h||\"regular\",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),M=L.globals.dom.baseEl.querySelector(b);M&&M.appendChild(P.node);var I=P.bbox();if(s){var T=this.graphics.drawRect(I.x-m,I.y-C,I.width+m+w,I.height+A+C,f,d||\"transparent\",1,g,p,u);M.insertBefore(T.node,P.node)}}},{key:\"addImage\",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?\".apexcharts-svg\":g,f=i.globals.dom.Paper.image(a);f.size(h,d).move(r,n);var p=i.globals.dom.baseEl.querySelector(u);return p&&p.appendChild(f.node),f}},{key:\"addXaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"xaxis\",contextMethod:i.addXaxisAnnotation}),i}},{key:\"addYaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"yaxis\",contextMethod:i.addYaxisAnnotation}),i}},{key:\"addPointAnnotationExternal\",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"point\",contextMethod:i.addPointAnnotation}),i}},{key:\"addAnnotationExternal\",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations\")),h=l.childNodes.length+1,c=new X,d=Object.assign({},\"xaxis\"===s?c.xAxisAnnotation:\"yaxis\"===s?c.yAxisAnnotation:c.pointAnnotation),g=m.extend(d,e);switch(s){case\"xaxis\":this.addXaxisAnnotation(g,l,h);break;case\"yaxis\":this.addYaxisAnnotation(g,l,h);break;case\"point\":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(h,\"']\")),f=this.helpers.addBackgroundToAnno(u,g);return f&&l.insertBefore(f.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:m.randomId(),method:r,label:\"addAnnotation\",params:e}),a}},{key:\"clearAnnotations\",value:function(t){for(var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations\"),a=e.globals.memory.methodsToExec.length-1;a>=0;a--)\"addText\"!==e.globals.memory.methodsToExec[a].label&&\"addAnnotation\"!==e.globals.memory.methodsToExec[a].label||e.globals.memory.methodsToExec.splice(a,1);i=m.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:\"removeAnnotation\",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(\".\".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),Y=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,o=t.y1,n=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],g=l.config.series[s].name?l.config.series[s].name:\"\",u=l.globals.ttKeyFormatter,f=l.config.tooltip.y.title.formatter,p={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};(\"function\"==typeof f&&(g=f(g,p)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||\"datetime\"===l.config.xaxis.type&&(d=new P(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new L(a).formatDate,w:l}));\"function\"==typeof u&&(d=u(d,p)),Number.isFinite(o)&&Number.isFinite(n)&&(h=o,c=n);var x=\"\",b=\"\",v=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if(\"datetime\"===l.config.xaxis.type){var m=new L(a);x=m.formatDate(m.getDate(h),l.config.tooltip.x.format),b=m.formatDate(m.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:v,seriesName:g}},R=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\\n '.concat(s,'\\n - \\n ').concat(r,\"\\n \");return'
'+(i||\"\")+'
'+a+\": \"+(t.w.globals.comboCharts?\"rangeArea\"===t.w.config.series[o].type||\"rangeBar\"===t.w.config.series[o].type?c:\"\".concat(h,\"\"):c)+\"
\"},F=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"hideYAxis\",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text=\"\",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:\"line\",value:function(){return{chart:{animations:{easing:\"swing\"}},dataLabels:{enabled:!1},stroke:{width:5,curve:\"straight\"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:\"sparkline\",value:function(t){this.hideYAxis();return m.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:\"slope\",value:function(){return this.hideYAxis(),{chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!0,formatter:function(t,e){var i=e.w.config.series[e.seriesIndex].name;return null!==t?i+\": \"+t:\"\"},background:{enabled:!1},offsetX:-5},grid:{xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{position:\"top\",labels:{style:{fontSize:14,fontWeight:900}},tooltip:{enabled:!1},crosshairs:{show:!1}},markers:{size:8,hover:{sizeOffset:1}},legend:{show:!1},tooltip:{shared:!1,intersect:!0,followCursor:!0},stroke:{width:5,curve:\"straight\"}}}},{key:\"bar\",value:function(){return{chart:{stacked:!1,animations:{easing:\"swing\"}},plotOptions:{bar:{dataLabels:{position:\"center\"}}},dataLabels:{style:{colors:[\"#fff\"]},background:{enabled:!1}},stroke:{width:0,lineCap:\"round\"},fill:{opacity:.85},legend:{markers:{shape:\"square\"}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:\"between\",crosshairs:{width:\"barWidth\",position:\"back\",fill:{type:\"gradient\"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:\"funnel\",value:function(){return this.hideYAxis(),g(g({},this.bar()),{},{chart:{animations:{easing:\"linear\",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:\"around\",borderRadius:0,dataLabels:{position:\"center\"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:\"candlestick\",value:function(){var t=this;return{stroke:{width:1,colors:[\"#333\"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Open\",\"High\",\"\",\"Low\",\"Close\"],\"candlestick\")}},states:{active:{filter:{type:\"none\"}}},xaxis:{crosshairs:{width:1}}}}},{key:\"boxPlot\",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:[\"#24292e\"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Minimum\",\"Q1\",\"Median\",\"Q3\",\"Maximum\"],\"boxPlot\")}},markers:{size:7,strokeWidth:1,strokeColors:\"#111\"},xaxis:{crosshairs:{width:1}}}}},{key:\"rangeBar\",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:\"square\"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:\"center\"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?\"rangeBar\"===s.config.series[i].type||\"rangeArea\"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:[\"#fff\"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var e=Y(g(g({},t),{},{isTimeline:!0})),i=e.color,a=e.seriesName,s=e.ylabel,r=e.startVal,o=e.endVal;return R(g(g({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:o}))}(t):function(t){var e=Y(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,o=e.end;return R(g(g({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:o}))}(t)}},xaxis:{tickPlacement:\"between\",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:\"dumbbell\",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:\"area\",value:function(){return{stroke:{width:4,fill:{type:\"solid\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:\"gradient\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:\"rangeArea\",value:function(){return{stroke:{curve:\"straight\",width:0},fill:{type:\"solid\",opacity:.6},markers:{size:0},states:{hover:{filter:{type:\"none\"}},active:{filter:{type:\"none\"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var e=Y(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,o=e.end;return R(g(g({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:o}))}(t)}}}}},{key:\"brush\",value:function(t){return m.extend(t,{chart:{toolbar:{autoSelected:\"selection\",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:\"stacked100\",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),\"bar\"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return\"number\"==typeof t&&t?t.toFixed(0)+\"%\":t}),t}},{key:\"stackedBars\",value:function(){var t=this.bar();return g(g({},t),{},{plotOptions:g(g({},t.plotOptions),{},{bar:g(g({},t.plotOptions.bar),{},{borderRadiusApplication:\"end\",borderRadiusWhenStacked:\"last\"})})})}},{key:\"convertCatToNumeric\",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:\"convertCatToNumericXaxis\",value:function(t,e,i){t.xaxis.type=\"numeric\",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return m.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return m.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||\"dataPoints\",t}},{key:\"bubble\",value:function(){return{dataLabels:{style:{colors:[\"#fff\"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:\"solid\",gradient:{shade:\"light\",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:\"scatter\",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:\"heatmap\",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:[\"#fff\"]}},stroke:{colors:[\"#fff\"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:\"top\",markers:{shape:\"square\"}},grid:{padding:{right:20}}}}},{key:\"treemap\",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:[\"#fff\"]}},stroke:{show:!0,width:2,colors:[\"#fff\"]},legend:{show:!1},fill:{opacity:1,gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:\"pie\",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",stops:[0,100]}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"donut\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"polarArea\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"radar\",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:\"11px\"}},stroke:{width:2},markers:{size:5,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},xaxis:{labels:{formatter:function(t){return t},style:{colors:[\"#a8a8a8\"],fontSize:\"11px\"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:\"radialBar\",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:\"dark\",shadeIntensity:.4,inverseColors:!1,type:\"diagonal2\",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:\"right\"},tooltip:{enabled:!1,fillSeriesColor:!0},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"_getBoxTooltip\",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
\\n '.concat(t.config.series[e].name?t.config.series[e].name:\"series-\"+(e+1),\": \").concat(t.globals.series[e][i],\"\\n
\"):'
')+\"
\".concat(a[0],': ')+r+\"
\"+\"
\".concat(a[1],': ')+o+\"
\"+(n?\"
\".concat(a[2],': ')+n+\"
\":\"\")+\"
\".concat(a[3],': ')+l+\"
\"+\"
\".concat(a[4],': ')+h+\"
\"}}]),t}(),D=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"init\",value:function(t){var e=t.responsiveOverride,i=this.opts,a=new X,s=new F(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),o={};if(i&&\"object\"===b(i)){var n,l,h,c,d,g,u,f,p,x,v={};v=-1!==[\"line\",\"area\",\"bar\",\"candlestick\",\"boxPlot\",\"rangeBar\",\"rangeArea\",\"bubble\",\"scatter\",\"heatmap\",\"treemap\",\"pie\",\"polarArea\",\"donut\",\"radar\",\"radialBar\"].indexOf(i.chart.type)?s[i.chart.type]():s.line(),null!==(n=i.plotOptions)&&void 0!==n&&null!==(l=n.bar)&&void 0!==l&&l.isFunnel&&(v=s.funnel()),i.chart.stacked&&\"bar\"===i.chart.type&&(v=s.stackedBars()),null!==(h=i.chart.brush)&&void 0!==h&&h.enabled&&(v=s.brush(v)),null!==(c=i.plotOptions)&&void 0!==c&&null!==(d=c.line)&&void 0!==d&&d.isSlopeChart&&(v=s.slope()),i.chart.stacked&&\"100%\"===i.chart.stackType&&(i=s.stacked100(i)),null!==(g=i.plotOptions)&&void 0!==g&&null!==(u=g.bar)&&void 0!==u&&u.isDumbbell&&(i=s.dumbbell(i)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},e||(i.xaxis.convertedCatToNumeric=!1),(null!==(f=(i=this.checkForCatToNumericXAxis(this.chartType,v,i)).chart.sparkline)&&void 0!==f&&f.enabled||null!==(p=window.Apex.chart)&&void 0!==p&&null!==(x=p.sparkline)&&void 0!==x&&x.enabled)&&(v=s.sparkline(v)),o=m.extend(r,v)}var y=m.extend(o,window.Apex);return r=m.extend(y,i),r=this.handleUserInputErrors(r)}},{key:\"checkForCatToNumericXAxis\",value:function(t,e,i){var a,s,r=new F(i),o=(\"bar\"===t||\"boxPlot\"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),n=\"pie\"===t||\"polarArea\"===t||\"donut\"===t||\"radar\"===t||\"radialBar\"===t||\"heatmap\"===t,l=\"datetime\"!==i.xaxis.type&&\"numeric\"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return o||n||!l||\"between\"===h||(i=r.convertCatToNumeric(i)),i}},{key:\"extendYAxis\",value:function(t,e){var i=new X;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=m.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[m.extend(i.yAxis,t.yaxis)]:t.yaxis=m.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name=\"series-\".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=m.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn(\"A multi-series logarithmic chart should have equal number of series and y-axes\"),t}},{key:\"extendAnnotations\",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:\"extendYAxisAnnotations\",value:function(t){var e=new X;return t.annotations.yaxis=m.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:\"extendXAxisAnnotations\",value:function(t){var e=new X;return t.annotations.xaxis=m.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:\"extendPointAnnotations\",value:function(t){var e=new X;return t.annotations.points=m.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:\"checkForDarkTheme\",value:function(t){t.theme&&\"dark\"===t.theme.mode&&(t.tooltip||(t.tooltip={}),\"light\"!==t.tooltip.theme&&(t.tooltip.theme=\"dark\"),t.chart.foreColor||(t.chart.foreColor=\"#f6f7f8\"),t.theme.palette||(t.theme.palette=\"palette4\"))}},{key:\"handleUserInputErrors\",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error(\"tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.\");if(\"bar\"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error(\"Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false\");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return\"bar\"!==e.chart.type&&\"rangeBar\"!==e.chart.type||e.tooltip.shared&&\"barWidth\"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width=\"tickWidth\"),\"candlestick\"!==e.chart.type&&\"boxPlot\"!==e.chart.type||e.yaxis[0].reversed&&(console.warn(\"Reversed y-axis in \".concat(e.chart.type,\" chart is not supported.\")),e.yaxis[0].reversed=!1),e}}]),t}(),H=function(){function t(){i(this,t)}return s(t,[{key:\"initGlobalVars\",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.barGroups=[],t.lineGroups=[],t.areaGroups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.lastWheelExecution=0,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0,t.multiAxisTickAmount=0}},{key:\"globalVars\",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:\"ontouchstart\"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],invalidLogScale:!1,ignoreYAxisIndexes:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:\"zoom\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:\"pan\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:\"selection\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:\"http://www.w3.org/2000/svg\",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,isSlopeChart:t.plotOptions.line.isSlopeChart,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]],niceScaleDefaultTicks:[1,2,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,24],seriesYAxisMap:[],seriesYAxisReverseMap:[]}}},{key:\"init\",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=m.extend({},t),e.initialSeries=m.clone(t.series),e.lastXAxis=m.clone(e.initialConfig.xaxis),e.lastYAxis=m.clone(e.initialConfig.yaxis),e}}]),t}(),O=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"init\",value:function(){var t=new D(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new H).init(t)}}}]),t}(),N=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0,this.patternIDs=[]}return s(t,[{key:\"clippedImgArea\",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,\"pattern\");k.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:\"userSpaceOnUse\",width:n+\"px\",height:l+\"px\"});var c=document.createElementNS(e.globals.SVGNS,\"image\");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,\"href\",o),k.setAttrs(c,{x:0,y:0,preserveAspectRatio:\"none\",width:n+\"px\",height:l+\"px\"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:\"getSeriesIndex\",value:function(t){var e=this.w,i=e.config.chart.type;return(\"bar\"===i||\"rangeBar\"===i)&&e.config.plotOptions.bar.distributed||\"heatmap\"===i||\"treemap\"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:\"fillPath\",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),\"function\"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color),o||(o=\"#fff\",console.warn(\"undefined color - ApexCharts\"));var h=o;if(-1===o.indexOf(\"rgb\")?o.length<9&&(h=m.hexToRgba(o,l)):o.indexOf(\"rgba\")>-1&&(l=m.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),\"pattern\"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),\"gradient\"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),\"image\"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:\"\",g=\"pattern\".concat(e.globals.cuid).concat(t.seriesNumber+1).concat(d);-1===this.patternIDs.indexOf(g)&&(this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=m.getOpacityFromRGBA(d));var f=void 0===r.gradient.opacityTo?i:Array.isArray(r.gradient.opacityTo)?r.gradient.opacityTo[s]:r.gradient.opacityTo;if(void 0===r.gradient.gradientToColors||0===r.gradient.gradientToColors.length)o=\"dark\"===r.gradient.shade?h.shadeColor(-1*parseFloat(r.gradient.shadeIntensity),e.indexOf(\"rgb\")>-1?m.rgb2hex(e):e):h.shadeColor(parseFloat(r.gradient.shadeIntensity),e.indexOf(\"rgb\")>-1?m.rgb2hex(e):e);else if(r.gradient.gradientToColors[n.seriesNumber]){var p=r.gradient.gradientToColors[n.seriesNumber];o=p,p.indexOf(\"rgba\")>-1&&(f=m.getOpacityFromRGBA(p))}else o=e;if(r.gradient.gradientFrom&&(d=r.gradient.gradientFrom),r.gradient.gradientTo&&(o=r.gradient.gradientTo),r.gradient.inverseColors){var x=d;d=o,o=x}return d.indexOf(\"rgb\")>-1&&(d=m.rgb2hex(d)),o.indexOf(\"rgb\")>-1&&(o=m.rgb2hex(o)),l.drawGradient(c,d,o,u,f,n.size,r.gradient.stops,r.gradient.colorStops,s)}}]),t}(),W=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"setGlobalMarkerSize\",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new k(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?\"\":\"apexcharts-series-markers\"})).attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(o.globals.cuid,\")\")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0)||r||d){m.isNumber(l.y[g])?f+=\" w\".concat(m.randomId()):f=\"apexcharts-nullpoint\";var p=this.getMarkerConfig({cssClass:f,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(p.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(p.pointStrokeColor=o.config.series[n].data[u].strokeColor)),void 0!==a&&(p.pSize=a),(l.x[g]<-o.globals.markers.largestSize||l.x[g]>o.globals.gridWidth+o.globals.markers.largestSize||l.y[g]<-o.globals.markers.largestSize||l.y[g]>o.globals.gridHeight+o.globals.markers.largestSize)&&(p.pSize=0),(s=c.drawMarker(l.x[g],l.y[g],p)).attr(\"rel\",u),s.attr(\"j\",u),s.attr(\"index\",e),s.node.setAttribute(\"default-marker-size\",p.pSize),new w(this.ctx).setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:\"getMarkerConfig\",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.radius,o=void 0===r?null:r,n=t.size,l=void 0===n?null:n,h=t.strokeWidth,c=void 0===h?null:h,d=this.w,g=this.getMarkerStyle(i),u=null===l?d.globals.markers.size[i]:l,f=d.config.markers;return null!==s&&f.discrete.length&&f.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(g.pointStrokeColor=t.strokeColor,g.pointFillColor=t.fillColor,u=t.size,g.pointShape=t.shape)})),{pSize:null===o?u:o,pRadius:null!==o?o:f.radius,pointStrokeWidth:null!==c?c:Array.isArray(f.strokeWidth)?f.strokeWidth[i]:f.strokeWidth,pointStrokeColor:g.pointStrokeColor,pointFillColor:g.pointFillColor,shape:g.pointShape||(Array.isArray(f.shape)?f.shape[i]:f.shape),class:e,pointStrokeOpacity:Array.isArray(f.strokeOpacity)?f.strokeOpacity[i]:f.strokeOpacity,pointStrokeDashArray:Array.isArray(f.strokeDashArray)?f.strokeDashArray[i]:f.strokeDashArray,pointFillOpacity:Array.isArray(f.fillOpacity)?f.fillOpacity[i]:f.fillOpacity,seriesIndex:i}}},{key:\"addEvents\",value:function(t){var e=this.w,i=new k(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener(\"click\",e.config.markers.onClick),t.node.addEventListener(\"dblclick\",e.config.markers.onDblClick),t.node.addEventListener(\"touchstart\",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:\"getMarkerStyle\",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),B=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled}return s(t,[{key:\"draw\",value:function(t,e,i){var a=this.w,s=new k(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:\"apexcharts-series-markers apexcharts-series-\".concat(a.config.chart.type)});if(h.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(a.globals.cuid,\")\")),Array.isArray(o.x))for(var c=0;cf.maxBubbleRadius&&(u=f.maxBubbleRadius)}var p=o.x[c],x=o.y[c];if(u=u||0,null!==x&&void 0!==a.globals.series[r][d]||(g=!1),g){var b=this.drawPoint(p,x,u,r,d,e);h.add(b)}l.add(h)}}},{key:\"drawPoint\",value:function(t,e,i,a,s,r){var o=this.w,n=a,l=new y(this.ctx),h=new w(this.ctx),c=new N(this.ctx),d=new W(this.ctx),g=new k(this.ctx),u=d.getMarkerConfig({cssClass:\"apexcharts-marker\",seriesIndex:n,dataPointIndex:s,radius:\"bubble\"===o.config.chart.type||o.globals.comboCharts&&o.config.series[a]&&\"bubble\"===o.config.series[a].type?i:null}),f=c.fillPath({seriesNumber:a,dataPointIndex:s,color:u.pointFillColor,patternUnits:\"objectBoundingBox\",value:o.globals.series[a][r]}),p=g.drawMarker(t,e,u);if(o.config.series[n].data[s]&&o.config.series[n].data[s].fillColor&&(f=o.config.series[n].data[s].fillColor),p.attr({fill:f}),o.config.chart.dropShadow.enabled){var x=o.config.chart.dropShadow;h.dropShadow(p,x,a)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var b=o.config.chart.animations.speed;l.animateMarker(p,b,o.globals.easing,(function(){window.setTimeout((function(){l.animationCompleted(p)}),100)}))}return p.attr({rel:s,j:s,index:a,\"default-marker-size\":u.pSize}),h.setSelectionFilter(p,a,s),d.addEvents(p),p.node.classList.add(\"apexcharts-marker\"),p}},{key:\"centerTextInBubble\",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize,10)/4}}}]),t}(),G=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"dataLabelsCorrection\",value:function(t,e,i,a,s,r,o){var n=this.w,l=!1,h=new k(this.ctx).getTextRects(i,o),c=h.width,d=h.height;e<0&&(e=0),e>n.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var f=n.globals.dataLabelsRects[a][u];(t>f.x+f.width||e>f.y+f.height||e+de.globals.gridWidth+b.textRects.width+30)&&(n=\"\");var v=e.globals.dataLabels.style.colors[r];((\"bar\"===e.config.chart.type||\"rangeBar\"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(v=e.globals.dataLabels.style.colors[o]),\"function\"==typeof v&&(v=v({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(v=g);var m=d.offsetX,y=d.offsetY;if(\"bar\"!==e.config.chart.type&&\"rangeBar\"!==e.config.chart.type||(m=0,y=0),e.globals.isSlopeChart&&(0!==o&&(m=-2*d.offsetX+5),0!==o&&o!==e.config.series[r].data.length-1&&(m=0)),b.drawnextLabel){if((x=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+m,y:s+y,foreColor:v,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||\"normal\"})).attr({class:p||\"apexcharts-datalabel\",cx:a,cy:s}),d.dropShadow.enabled){var A=d.dropShadow;new w(this.ctx).dropShadow(x,A)}c.add(x),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}return x}},{key:\"addBackgroundToDataLabel\",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new k(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,\"transparent\"!==i.config.chart.background&&i.config.chart.background?i.config.chart.background:\"#fff\",a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new w(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:\"dataLabelsBackground\",value:function(){var t=this.w;if(\"bubble\"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-datalabels text\"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=m.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:\"emptyCollapsedSeries\",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:\"highlightSeries\",value:function(t){var e=this.w,i=this.getSeriesByName(t),a=parseInt(null==i?void 0:i.getAttribute(\"data:realIndex\"),10),s=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis\"),r=null,o=null,n=null;if(e.globals.axisCharts||\"radialBar\"===e.config.chart.type)if(e.globals.axisCharts){r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(a,\"']\")),o=e.globals.dom.baseEl.querySelector(\".apexcharts-datalabels[data\\\\:realIndex='\".concat(a,\"']\"));var l=e.globals.seriesYAxisReverseMap[a];n=e.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(l,\"']\"))}else r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"']\"));else r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"'] path\"));for(var h=0;h=t.from&&(r0&&void 0!==arguments[0]?arguments[0]:\"asc\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r=\"asc\"===t?0:s.length-1;\"asc\"===t?r=0;\"asc\"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:\"getBarSeriesIndices\",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return\"bar\"===t.type||\"column\"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:\"getPreviousPaths\",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute(\"data:realIndex\")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t.config.chart.type,\" .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] rect\")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e(\"x\")),y:parseFloat(e(\"y\")),width:parseFloat(e(\"width\")),height:parseFloat(e(\"height\"))};a.push({rect:s,color:i[t].getAttribute(\"color\")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),_=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new A(this.ctx)}return s(t,[{key:\"isMultiFormat\",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:\"isFormatXY\",value:function(){var t=this.w.config.series.slice(),e=new V(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:\"isFormat2DArray\",value:function(){var t=this.w.config.series.slice(),e=new V(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:\"handleFormat2DArray\",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s=\"boxPlot\"===i.chart.type||\"boxPlot\"===i.series[e].type,r=0;r=5?this.twoDSeries.push(m.parseNumber(t[e].data[r][4])):this.twoDSeries.push(m.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),\"datetime\"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new L(i),o=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar=\"rangeBar\"===a.chart.type&&s.isBarHorizontal,s.hasXaxisGroups=\"category\"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasXaxisGroups&&(s.groups=a.xaxis.group.groups),t.forEach((function(t,e){void 0!==t.name?s.seriesNames.push(t.name):s.seriesNames.push(\"series-\"+parseInt(e+1,10))})),this.coreUtils.setSeriesYAxisMappings();var n=[],l=p(new Set(a.series.map((function(t){return t.group}))));a.series.forEach((function(t,e){var i=l.indexOf(t.group);n[i]||(n[i]=[]),n[i].push(s.seriesNames[e])})),s.seriesGroups=n;for(var h=function(){for(var t=0;t0&&(this.twoDSeriesX=o,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var d=t[c].data.map((function(t){return m.parseNumber(t)}));s.series.push(d)}s.seriesZ.push(this.threeDSeries),void 0!==t[c].color?s.seriesColors.push(t[c].color):s.seriesColors.push(void 0)}return this.w}},{key:\"parseDataNonAxisCharts\",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new F(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:\"_generateExternalLabels\",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o0&&s==i.length&&e.push(a)})),t.globals.ignoreYAxisIndexes=e.map((function(t){return t}))}}]),t}(),U=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"scaleSvgNode\",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,\"width\")),a=parseFloat(t.getAttributeNS(null,\"height\"));t.setAttributeNS(null,\"width\",i*e),t.setAttributeNS(null,\"height\",a*e),t.setAttributeNS(null,\"viewBox\",\"0 0 \"+i+\" \"+a)}},{key:\"getSvgString\",value:function(){var t=this;return new Promise((function(e){var i=t.w,a=i.config.chart.toolbar.export.width,s=i.config.chart.toolbar.export.scale||a/i.globals.svgWidth;s||(s=1);var r=t.w.globals.dom.Paper.svg(),o=t.w.globals.dom.Paper.node.cloneNode(!0);1!==s&&t.scaleSvgNode(o,s),t.convertImagesToBase64(o).then((function(){r=(new XMLSerializer).serializeToString(o),e(r.replace(/ /g,\" \"))}))}))}},{key:\"convertImagesToBase64\",value:function(t){var e=this,i=t.getElementsByTagName(\"image\"),a=Array.from(i).map((function(t){var i=t.getAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\");return i&&!i.startsWith(\"data:\")?e.getBase64FromUrl(i).then((function(e){t.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",e)})).catch((function(t){console.error(\"Error converting image to base64:\",t)})):Promise.resolve()}));return Promise.all(a)}},{key:\"getBase64FromUrl\",value:function(t){return new Promise((function(e,i){var a=new Image;a.crossOrigin=\"Anonymous\",a.onload=function(){var t=document.createElement(\"canvas\");t.width=a.width,t.height=a.height,t.getContext(\"2d\").drawImage(a,0,0),e(t.toDataURL())},a.onerror=i,a.src=t}))}},{key:\"cleanup\",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-xcrosshairs\"),i=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-ycrosshairs\"),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-zoom-rect, .apexcharts-selection-rect\");Array.prototype.forEach.call(a,(function(t){t.setAttribute(\"width\",0)})),e&&e[0]&&(e[0].setAttribute(\"x\",-500),e[0].setAttribute(\"x1\",-500),e[0].setAttribute(\"x2\",-500)),i&&i[0]&&(i[0].setAttribute(\"y\",-100),i[0].setAttribute(\"y1\",-100),i[0].setAttribute(\"y2\",-100))}},{key:\"svgUrl\",value:function(){var t=this;return new Promise((function(e){t.cleanup(),t.getSvgString().then((function(t){var i=new Blob([t],{type:\"image/svg+xml;charset=utf-8\"});e(URL.createObjectURL(i))}))}))}},{key:\"dataURI\",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement(\"canvas\");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o=\"transparent\"!==a.config.chart.background&&a.config.chart.background?a.config.chart.background:\"#fff\",n=r.getContext(\"2d\");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s),e.getSvgString().then((function(t){var e=\"data:image/svg+xml,\"+encodeURIComponent(t),a=new Image;a.crossOrigin=\"anonymous\",a.onload=function(){if(n.drawImage(a,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL(\"image/png\");i({imgURI:e})}},a.src=e}))}))}},{key:\"exportToSVG\",value:function(){var t=this;this.svgUrl().then((function(e){t.triggerDownload(e,t.w.config.chart.toolbar.export.svg.filename,\".svg\")}))}},{key:\"exportToPng\",value:function(){var t=this,e=this.w.config.chart.toolbar.export.scale,i=this.w.config.chart.toolbar.export.width,a=e?{scale:e}:i?{width:i}:void 0;this.dataURI(a).then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+\".png\"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,\".png\")}))}},{key:\"exportToCSV\",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?\",\":s,o=t.lineDelimiter,n=void 0===o?\"\\n\":o,l=this.w;i||(i=l.config.series);var h,c,d=[],g=[],u=\"\",f=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),x=function(t){return\"function\"==typeof l.config.chart.toolbar.export.csv.categoryFormatter?l.config.chart.toolbar.export.csv.categoryFormatter(t):\"datetime\"===l.config.xaxis.type&&String(t).length>=10?new Date(t).toDateString():m.isNumber(t)?t:t.split(r).join(\"\")},b=function(t){return\"function\"==typeof l.config.chart.toolbar.export.csv.valueFormatter?l.config.chart.toolbar.export.csv.valueFormatter(t):t},v=Math.max.apply(Math,p(i.map((function(t){return t.data?t.data.length:0})))),y=new _(this.ctx),w=new M(this.ctx),k=function(t){var i=\"\";if(l.globals.axisCharts){if(\"category\"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new V(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=w.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;\"datetime\"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return null===i?\"nullvalue\":(Array.isArray(i)&&(i=i.join(\" \")),m.isNumber(i)?i:i.split(r).join(\"\"))},A=function(t,e){if(d.length&&0===e&&g.push(d.join(r)),t.data){t.data=t.data.length&&t.data||p(Array(v)).map((function(){return\"\"}));for(var a=0;a0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],\"top\"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf(\"%\")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return s(t,[{key:\"drawXaxis\",value:function(){var t=this.w,e=new k(this.ctx),i=e.group({class:\"apexcharts-xaxis\",transform:\"translate(\".concat(t.config.xaxis.offsetX,\", \").concat(t.config.xaxis.offsetY,\")\")}),a=e.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(t.globals.translateXAxisX,\", \").concat(t.globals.translateXAxisY,\")\")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,f=l.xaxisForeColors||this.xaxisForeColors,p=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m=\"category\"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/Math.min(y,v-1),b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&\"top\"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&\"dataPoints\"!==d.config.xaxis.tickAmount&&\"datetime\"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-(\"top\"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:\"middle\",fontWeight:y.isBold?600:p,fontSize:g,fontFamily:u,foreColor:Array.isArray(f)?t&&d.config.xaxis.convertedCatToNumeric?f[d.globals.minX+s-1]:f[s]:f,isPlainText:!1,cssClass:(t?\"apexcharts-xaxis-label \":\"apexcharts-xaxis-group-label \")+x});if(i.add(k),k.on(\"click\",(function(t){if(\"function\"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,\"title\");A.textContent=Array.isArray(y.text)?y.text.join(\" \"):y.text,k.node.appendChild(A),\"\"!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,\"top\"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new k(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add(\"apexcharts-xaxis-tick\")}}}},{key:\"getXAxisTicksPositions\",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=a.globals.timescaleLabels.slice())}return s(t,[{key:\"drawGridArea\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new k(this.ctx);t||(t=i.group({class:\"apexcharts-grid\"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,\"transparent\"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,\"transparent\");return t.add(s),t.add(a),t}},{key:\"drawGrid\",value:function(){if(this.w.globals.axisCharts){var t=this.renderGrid();return this.drawGridArea(t.el),t}return null}},{key:\"createGridMask\",value:function(){var t=this.w,e=t.globals,i=new k(this.ctx),a=Array.isArray(t.config.stroke.width)?Math.max.apply(Math,p(t.config.stroke.width)):t.config.stroke.width,s=function(t){var i=document.createElementNS(e.SVGNS,\"clipPath\");return i.setAttribute(\"id\",t),i};e.dom.elGridRectMask=s(\"gridRectMask\".concat(e.cuid)),e.dom.elGridRectBarMask=s(\"gridRectBarMask\".concat(e.cuid)),e.dom.elGridRectMarkerMask=s(\"gridRectMarkerMask\".concat(e.cuid)),e.dom.elForecastMask=s(\"forecastMask\".concat(e.cuid)),e.dom.elNonForecastMask=s(\"nonForecastMask\".concat(e.cuid));var r=0,o=0;([\"bar\",\"rangeBar\",\"candlestick\",\"boxPlot\"].includes(t.config.chart.type)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(r=Math.max(t.config.grid.padding.left,e.barPadForNumericAxis),o=Math.max(t.config.grid.padding.right,e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(0,0,e.gridWidth,e.gridHeight,0,\"#fff\"),e.dom.elGridRectBar=i.drawRect(-a/2-r-2,-a/2-2,e.gridWidth+a+o+r+4,e.gridHeight+a+4,0,\"#fff\");var n=t.globals.markers.largestSize;e.dom.elGridRectMarker=i.drawRect(-n,-n,e.gridWidth+2*n,e.gridHeight+2*n,0,\"#fff\"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectBarMask.appendChild(e.dom.elGridRectBar.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var l=e.dom.baseEl.querySelector(\"defs\");l.appendChild(e.dom.elGridRectMask),l.appendChild(e.dom.elGridRectBarMask),l.appendChild(e.dom.elGridRectMarkerMask),l.appendChild(e.dom.elForecastMask),l.appendChild(e.dom.elNonForecastMask)}},{key:\"_drawGridLines\",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||\"radar\"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasXaxisGroups&&\"between\"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d0&&\"datetime\"!==t.config.xaxis.type&&(s=e.yAxisScale[a].result.length-1);this._drawXYLines({xCount:s,tickAmount:r})}else s=r,r=e.xTickAmount,this._drawInvertedXYLines({xCount:s,tickAmount:r});return this.drawGridBands(s,r),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.gridWidth/s}}},{key:\"drawGridBands\",value:function(t,e){var i,a,s=this,r=this.w;if((null===(i=r.config.grid.row.colors)||void 0===i?void 0:i.length)>0&&function(t,i,a,o,n,l){for(var h=0,c=0;h=r.config.grid[t].colors.length&&(c=0),s._drawGridBandRect({c:c,x1:a,y1:o,x2:n,y2:l,type:t}),o+=r.globals.gridHeight/e}(\"row\",e,0,0,r.globals.gridWidth,r.globals.gridHeight/e),(null===(a=r.config.grid.column.colors)||void 0===a?void 0:a.length)>0){var o=r.globals.isBarHorizontal||\"on\"!==r.config.xaxis.tickPlacement||\"category\"!==r.config.xaxis.type&&!r.config.xaxis.convertedCatToNumeric?t:t-1;r.globals.isXNumeric&&(o=r.globals.xAxisScale.result.length-1);for(var n=r.globals.padHorizontal,l=r.globals.padHorizontal+r.globals.gridWidth/o,h=r.globals.gridHeight,c=0,d=0;c=r.config.grid.column.colors.length&&(d=0),\"datetime\"===r.config.xaxis.type)n=this.xaxisLabels[c].position,l=((null===(g=this.xaxisLabels[c+1])||void 0===g?void 0:g.position)||r.globals.gridWidth)-this.xaxisLabels[c].position;this._drawGridBandRect({c:d,x1:n,y1:0,x2:l,y2:h,type:\"column\"}),n+=r.globals.gridWidth/o}}}}]),t}(),$=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.coreUtils=new A(this.ctx)}return s(t,[{key:\"niceScale\",value:function(t,e){var i,a,s,r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=1e-11,l=this.w,h=l.globals;h.isBarHorizontal?(i=l.config.xaxis,a=Math.max((h.svgWidth-100)/25,2)):(i=l.config.yaxis[o],a=Math.max((h.svgHeight-100)/15,2)),m.isNumber(a)||(a=10),s=void 0!==i.min&&null!==i.min,r=void 0!==i.max&&null!==i.min;var c=void 0!==i.stepSize&&null!==i.stepSize,d=void 0!==i.tickAmount&&null!==i.tickAmount,g=d?i.tickAmount:h.niceScaleDefaultTicks[Math.min(Math.round(a/2),h.niceScaleDefaultTicks.length-1)];if(h.isMultipleYAxis&&!d&&h.multiAxisTickAmount>0&&(g=h.multiAxisTickAmount,d=!0),g=\"dataPoints\"===g?h.dataPoints-1:Math.abs(Math.round(g)),(t===Number.MIN_VALUE&&0===e||!m.isNumber(t)&&!m.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)&&(t=m.isNumber(i.min)?i.min:0,e=m.isNumber(i.max)?i.max:t+g,h.allSeriesCollapsed=!1),t>e){console.warn(\"axis.min cannot be greater than axis.max: swapping min and max\");var u=e;e=t,t=u}else t===e&&(t=0===t?0:t-1,e=0===e?2:e+1);var f=[];g<1&&(g=1);var p=g,x=Math.abs(e-t);!s&&t>0&&t/x<.15&&(t=0,s=!0),!r&&e<0&&-e/x<.15&&(e=0,r=!0);var b=(x=Math.abs(e-t))/p,v=b,y=Math.floor(Math.log10(v)),w=Math.pow(10,y),k=Math.ceil(v/w);if(b=v=(k=h.niceScaleAllowedMagMsd[0===h.yValueDecimal?0:1][k])*w,h.isBarHorizontal&&i.stepSize&&\"datetime\"!==i.type?(b=i.stepSize,c=!0):c&&(b=i.stepSize),c&&i.forceNiceScale){var A=Math.floor(Math.log10(b));b*=Math.pow(10,y-A)}if(s&&r){var S=x/p;if(d)if(c)if(0!=m.mod(x,b)){var C=m.getGCD(b,S);b=S/C<10?C:S}else 0==m.mod(b,S)?b=S:(S=b,d=!1);else b=S;else if(c)0==m.mod(x,b)?S=b:b=S;else if(0==m.mod(x,b))S=b;else{S=x/(p=Math.ceil(x/b));var L=m.getGCD(x,b);x/La&&(t=e-b*g,t+=b*Math.floor((P-t)/b))}else if(s)if(d)e=t+b*p;else{var M=e;e=b*Math.ceil(e/b),Math.abs(e-t)/m.getGCD(x,b)>a&&(e=t+b*g,e+=b*Math.ceil((M-e)/b))}}else if(h.isMultipleYAxis&&d){var I=b*Math.floor(t/b),T=I+b*p;T0&&t16&&m.getPrimeFactors(p).length<2&&p++,!d&&i.forceNiceScale&&0===h.yValueDecimal&&p>x&&(p=x,b=Math.round(x/p)),p>a&&(!d&&!c||i.forceNiceScale)){var z=m.getPrimeFactors(p),X=z.length-1,E=p;t:for(var Y=0;YW);return{result:f,niceMin:f[0],niceMax:f[f.length-1]}}},{key:\"linearScale\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,r=Math.abs(e-t),o=[];if(t===e)return{result:o=[t],niceMin:o[0],niceMax:o[o.length-1]};\"dataPoints\"===(i=this._adjustTicksForSmallRange(i,a,r))&&(i=this.w.globals.dataPoints-1),s||(s=r/i),s=Math.round(10*(s+Number.EPSILON))/10,i===Number.MAX_VALUE&&(i=5,s=1);for(var n=t;i>=0;)o.push(n),n=m.preciseAddition(n,s),i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:\"logarithmicScaleNice\",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase)):i!==-Number.MAX_VALUE&&m.isNumber(i)&&e!==Number.MAX_VALUE&&m.isNumber(e)?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.niceScale(e,i,t)):a.yAxisScale[t]=this.niceScale(Number.MIN_VALUE,0,t)}},{key:\"setXScale\",value:function(t,e){var i=this.w,a=i.globals,s=Math.abs(e-t);if(e!==-Number.MAX_VALUE&&m.isNumber(e)){var r=a.xTickAmount+1;s<10&&s>1&&(r=s),a.xAxisScale=this.linearScale(t,e,r,0,i.config.xaxis.stepSize)}else a.xAxisScale=this.linearScale(0,10,10);return a.xAxisScale}},{key:\"scaleMultipleYAxes\",value:function(){var t=this,e=this.w.config,i=this.w.globals;this.coreUtils.setSeriesYAxisMappings();var a=i.seriesYAxisMap,s=i.minYArr,r=i.maxYArr;i.allSeriesCollapsed=!0,i.barGroups=[],a.forEach((function(a,o){var n=[];a.forEach((function(t){var i=e.series[t].group;n.indexOf(i)<0&&n.push(i)})),a.length>0?function(){var l,h,c=Number.MAX_VALUE,d=-Number.MAX_VALUE,g=c,u=d;if(e.chart.stacked)!function(){var t=new Array(i.dataPoints).fill(0),s=[],r=[],f=[];n.forEach((function(){s.push(t.map((function(){return Number.MIN_VALUE}))),r.push(t.map((function(){return Number.MIN_VALUE}))),f.push(t.map((function(){return Number.MIN_VALUE})))}));for(var p=function(t){!l&&e.series[a[t]].type&&(l=e.series[a[t]].type);var c=a[t];h=e.series[c].group?e.series[c].group:\"axis-\".concat(o),!(i.collapsedSeriesIndices.indexOf(c)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(c)<0)||(i.allSeriesCollapsed=!1,n.forEach((function(t,a){if(e.series[c].group===t)for(var o=0;o=0?r[a][o]+=n:f[a][o]+=n,s[a][o]+=n,g=Math.min(g,n),u=Math.max(u,n)}}))),\"bar\"!==l&&\"column\"!==l||i.barGroups.push(h)},x=0;x1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;\"candlestick\"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):\"boxPlot\"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);var d=!1;if(r.seriesX.length>=a){var g,u=null===(g=r.brushSource)||void 0===g?void 0:g.w.config.chart.brush;(s.chart.zoom.enabled&&s.chart.zoom.autoScaleYaxis||null!=u&&u.enabled&&null!=u&&u.autoScaleYaxis)&&(d=!0)}for(var f=t;fx&&r.seriesX[f][b]>s.xaxis.max;b--);}for(var v=x;v<=b&&vh[f][v]&&h[f][v]<0&&(n=h[f][v])}else r.hasNullValues=!0}\"bar\"!==p&&\"column\"!==p||(n<0&&o<0&&(o=0,i=Math.max(i,0)),n===Number.MIN_VALUE&&(n=0,e=Math.min(e,0)))}return\"rangeBar\"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),\"bar\"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:\"setYRange\",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i,a=Number.MAX_VALUE;if(t.isMultipleYAxis){a=Number.MAX_VALUE;for(var s=0;st.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1);else if(\"dataPoints\"===e.xaxis.tickAmount){if(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric){var s=t.maxX-t.minX;s<30&&(a=s-1)}}else a=e.xaxis.tickAmount;if(t.xTickAmount=a,void 0!==e.xaxis.max&&\"number\"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&\"number\"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var r=[],o=t.minX-1;o0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1,0,e.xaxis.stepSize),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:\"setZRange\",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:\"_setStackedMinMax\",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.globals.seriesNames.map((function(t){return t}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,a){return i.indexOf(e.seriesNames[a])>-1?a:null})).filter((function(t){return null!==t})).forEach((function(r){for(var o=0;o0?a[i][o]+=parseFloat(e.series[r][o])+1e-4:s[i][o]+=parseFloat(e.series[r][o]))}}))})),Object.entries(a).forEach((function(t){var i=f(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),Q=function(){function t(e,a){i(this,t),this.ctx=e,this.elgrid=a,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX=\"bottom\"===s.config.xaxis.position?s.globals.gridHeight:0,this.drawnLabels=[],this.axesUtils=new M(e)}return s(t,[{key:\"drawYaxis\",value:function(t){var e=this.w,i=new k(this.ctx),a=e.config.yaxis[t].labels.style,s=a.fontSize,r=a.fontFamily,o=a.fontWeight,n=i.group({class:\"apexcharts-yaxis\",rel:t,transform:\"translate(\".concat(e.globals.translateYAxisX[t],\", 0)\")});if(this.axesUtils.isYAxisHidden(t))return n;var l=i.group({class:\"apexcharts-yaxis-texts-g\"});n.add(l);var h=e.globals.yAxisScale[t].result.length-1,c=e.globals.gridHeight/h,d=e.globals.yLabelFormatters[t],g=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice());if(e.config.yaxis[t].labels.show){var u=e.globals.translateY+e.config.yaxis[t].labels.offsetY;e.globals.isBarHorizontal?u=0:\"heatmap\"===e.config.chart.type&&(u-=c/2),u+=parseInt(s,10)/3;for(var f=h;f>=0;f--){var p=d(g[f],f,e),x=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(x*=-1);var b=this.getTextAnchor(e.config.yaxis[t].labels.align,e.config.yaxis[t].opposite),v=this.axesUtils.getYAxisForeColor(a.colors,t),y=Array.isArray(v)?v[f]:v,w=m.listToArray(e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-label tspan\"))).map((function(t){return t.textContent})),A=i.drawText({x:x,y:u,text:w.includes(p)&&!e.config.yaxis[t].labels.showDuplicates?\"\":p,textAnchor:b,fontSize:s,fontFamily:r,fontWeight:o,maxWidth:e.config.yaxis[t].labels.maxWidth,foreColor:y,isPlainText:!1,cssClass:\"apexcharts-yaxis-label \".concat(a.cssClass)});l.add(A),this.addTooltip(A,p),0!==e.config.yaxis[t].labels.rotate&&this.rotateLabel(i,A,firstLabel,e.config.yaxis[t].labels.rotate),u+=c}}return this.addYAxisTitle(i,n,t),this.addAxisBorder(i,n,t,h,c),n}},{key:\"getTextAnchor\",value:function(t,e){return\"left\"===t?\"start\":\"center\"===t?\"middle\":\"right\"===t?\"end\":e?\"start\":\"end\"}},{key:\"addTooltip\",value:function(t,e){var i=document.createElementNS(this.w.globals.SVGNS,\"title\");i.textContent=Array.isArray(e)?e.join(\" \"):e,t.node.appendChild(i)}},{key:\"rotateLabel\",value:function(t,e,i,a){var s=t.rotateAroundCenter(i.node),r=t.rotateAroundCenter(e.node);e.node.setAttribute(\"transform\",\"rotate(\".concat(a,\" \").concat(s.x,\" \").concat(r.y,\")\"))}},{key:\"addYAxisTitle\",value:function(t,e,i){var a=this.w;if(void 0!==a.config.yaxis[i].title.text){var s=t.group({class:\"apexcharts-yaxis-title\"}),r=a.config.yaxis[i].opposite?a.globals.translateYAxisX[i]:0,o=t.drawText({x:r,y:a.globals.gridHeight/2+a.globals.translateY+a.config.yaxis[i].title.offsetY,text:a.config.yaxis[i].title.text,textAnchor:\"end\",foreColor:a.config.yaxis[i].title.style.color,fontSize:a.config.yaxis[i].title.style.fontSize,fontWeight:a.config.yaxis[i].title.style.fontWeight,fontFamily:a.config.yaxis[i].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \".concat(a.config.yaxis[i].title.style.cssClass)});s.add(o),e.add(s)}}},{key:\"addAxisBorder\",value:function(t,e,i,a,s){var r=this.w,o=r.config.yaxis[i].axisBorder,n=31+o.offsetX;if(r.config.yaxis[i].opposite&&(n=-31-o.offsetX),o.show){var l=t.drawLine(n,r.globals.translateY+o.offsetY-2,n,r.globals.gridHeight+r.globals.translateY+o.offsetY+2,o.color,0,o.width);e.add(l)}r.config.yaxis[i].axisTicks.show&&this.axesUtils.drawYAxisTicks(n,a,o,r.config.yaxis[i].axisTicks,i,s,e)}},{key:\"drawYaxisInversed\",value:function(t){var e=this.w,i=new k(this.ctx),a=i.group({class:\"apexcharts-xaxis apexcharts-yaxis-inversed\"}),s=i.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(e.globals.translateXAxisX,\", \").concat(e.globals.translateXAxisY,\")\")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice()),c=e.globals.timescaleLabels;if(c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),e.config.xaxis.labels.show)for(var d=c.length?0:r;c.length?d=0;c.length?d++:d--){var g=l(h[d],d,e),u=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var f=this.axesUtils.getLabel(h,c,u,d,this.drawnLabels,this.xaxisFontSize);u=f.x,g=f.text,this.drawnLabels.push(f.text),0===d&&e.globals.skipFirstTimelinelabel&&(g=\"\"),d===h.length-1&&e.globals.skipLastTimelinelabel&&(g=\"\")}var p=i.drawText({x:u,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-(\"top\"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:g,textAnchor:\"middle\",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:\"apexcharts-xaxis-label \".concat(e.config.xaxis.labels.style.cssClass)});s.add(p),p.tspan(g),this.addTooltip(p,g),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:\"inversedYAxisBorder\",value:function(t){var e=this.w,i=new k(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;\"bar\"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:\"inversedYAxisTitleText\",value:function(t){var e=this.w,i=new k(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:\"apexcharts-xaxis-title apexcharts-yaxis-title-inversed\"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:\"middle\",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \".concat(e.config.xaxis.title.style.cssClass)});a.add(s),t.add(a)}}},{key:\"yAxisTitleRotate\",value:function(t,e){var i=this.w,a=new k(this.ctx),s=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-texts-g\")),r=s?s.getBoundingClientRect():{width:0,height:0},o=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-title text\")),n=o?o.getBoundingClientRect():{width:0,height:0};if(o){var l=this.xPaddingForYAxisTitle(t,r,n,e);o.setAttribute(\"x\",l.xPos-(e?10:0));var h=a.rotateAroundCenter(o);o.setAttribute(\"transform\",\"rotate(\".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate,\" \").concat(h.x,\" \").concat(h.y,\")\"))}}},{key:\"xPaddingForYAxisTitle\",value:function(t,e,i,a){var s=this.w,r=0,o=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:r,padd:0}:(a?r=e.width+s.config.yaxis[t].title.offsetX+i.width/2+o/2:(r=-1*e.width+s.config.yaxis[t].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,r=-1*e.width-s.config.yaxis[t].title.offsetX-o)),{xPos:r,padd:o})}},{key:\"setYAxisXPosition\",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.forEach((function(n,l){var h=i.globals.ignoreYAxisIndexes.includes(l)||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o+=c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r+=c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:\"setYAxisTextAlignments\",value:function(){var t=this.w;m.listToArray(t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-yaxis\")).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-texts-g\")),r=m.listToArray(t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-label\"))),o=s.getBoundingClientRect();r.forEach((function(t){t.setAttribute(\"text-anchor\",a.labels.align)})),\"left\"!==a.labels.align||a.opposite?\"center\"===a.labels.align?s.setAttribute(\"transform\",\"translate(\".concat(o.width/2*(a.opposite?1:-1),\", 0)\")):\"right\"===a.labels.align&&a.opposite&&s.setAttribute(\"transform\",\"translate(\".concat(o.width,\", 0)\")):s.setAttribute(\"transform\",\"translate(-\".concat(o.width,\", 0)\"))}}))}}]),t}(),K=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.documentEvent=m.bind(this.documentEvent,this)}return s(t,[{key:\"addEventListener\",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:\"removeEventListener\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:\"fireEvent\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error(\"Wrong locale name provided. Please make sure you set the correct locale name in options\");var a=m.extend(z,i);this.w.globals.locale=a.options}}]),t}(),et=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawAxis\",value:function(t,e){var i,a,s=this,r=this.w.globals,o=this.w.config,n=new q(this.ctx,e),l=new Q(this.ctx,e);r.axisCharts&&\"radar\"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=n.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=n.drawXaxis(),r.dom.elGraphical.add(i),o.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),\"back\"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),it=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawXCrosshairs\",value:function(){var t=this.w,e=new k(this.ctx),i=new w(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,f=s.blur,p=s.color,x=s.opacity,b=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){\"gradient\"===r&&(b=e.drawGradient(\"vertical\",o,n,l,h,null,c,null));var v=e.drawRect();1===t.config.xaxis.crosshairs.width&&(v=e.drawLine());var y=t.globals.gridHeight;(!m.isNumber(y)||y<0)&&(y=0);var A=t.config.xaxis.crosshairs.width;(!m.isNumber(A)||A<0)&&(A=0),v.attr({class:\"apexcharts-xcrosshairs\",x:0,y:0,y2:y,width:A,height:y,fill:b,filter:\"none\",\"fill-opacity\":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,\"stroke-width\":t.config.xaxis.crosshairs.stroke.width,\"stroke-dasharray\":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(v=i.dropShadow(v,{left:g,top:u,blur:f,color:p,opacity:x})),t.globals.dom.elGraphical.add(v)}}},{key:\"drawYCrosshairs\",value:function(){var t=this.w,e=new k(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:\"apexcharts-ycrosshairs\"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:\"apexcharts-ycrosshairs-hidden\"}),t.globals.dom.elGraphical.add(r)}}]),t}(),at=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"checkResponsiveConfig\",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new D({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=m.clone(i.globals.initialConfig);n.series=m.clone(i.config.series);var l=A.extendArrayProps(r,n,i);t=m.extend(l,t),t=m.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var h=0;h0&&\"function\"==typeof t[0]?(this.isColorFn=!0,i.config.series.map((function(a,s){var r=t[s]||t[0];return\"function\"==typeof r?r({value:i.globals.axisCharts?i.globals.series[s][0]||0:i.globals.series[s],seriesIndex:s,dataPointIndex:s,w:e.w}):r}))):t:this.predefined()}},{key:\"applySeriesColors\",value:function(t,e){t.forEach((function(t,i){t&&(e[i]=t)}))}},{key:\"getMonochromeColors\",value:function(t,e,i){var a=t.color,s=t.shadeIntensity,r=t.shadeTo,o=this.isBarDistributed||this.isHeatmapDistributed?e[0].length*e.length:e.length,n=1/(o/s),l=0;return Array.from({length:o},(function(){var t=\"dark\"===r?i.shadeColor(-1*l,a):i.shadeColor(l,a);return l+=n,t}))}},{key:\"applyColorTypes\",value:function(t,e){var i=this,a=this.w;t.forEach((function(t){a.globals[t].colors=void 0===a.config[t].colors?i.isColorFn?a.config.colors:e:a.config[t].colors.slice(),i.pushExtraColors(a.globals[t].colors)}))}},{key:\"applyDataLabelsColors\",value:function(t){var e=this.w;e.globals.dataLabels.style.colors=void 0===e.config.dataLabels.style.colors?t:e.config.dataLabels.style.colors.slice(),this.pushExtraColors(e.globals.dataLabels.style.colors,50)}},{key:\"applyRadarPolygonsColors\",value:function(){var t=this.w;t.globals.radarPolygons.fill.colors=void 0===t.config.plotOptions.radar.polygons.fill.colors?[\"dark\"===t.config.theme.mode?\"#424242\":\"none\"]:t.config.plotOptions.radar.polygons.fill.colors.slice(),this.pushExtraColors(t.globals.radarPolygons.fill.colors,20)}},{key:\"applyMarkersColors\",value:function(t){var e=this.w;e.globals.markers.colors=void 0===e.config.markers.colors?t:e.config.markers.colors.slice(),this.pushExtraColors(e.globals.markers.colors)}},{key:\"pushExtraColors\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||\"heatmap\"===a.config.chart.type&&a.config.plotOptions.heatmap&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:\"getDatalabelsRect\",value:function(){var t=this,e=this.w,i=[];e.config.series.forEach((function(s,r){s.data.forEach((function(s,o){var n;n=e.globals.series[r][o],a=e.config.dataLabels.formatter(n,{ctx:t.dCtx.ctx,seriesIndex:r,dataPointIndex:o,w:e}),i.push(a)}))}));var a=m.getLargestStringFromArr(i),s=new k(this.dCtx.ctx),r=e.config.dataLabels.style,o=s.getTextRects(a,parseInt(r.fontSize),r.fontFamily);return{width:1.05*o.width,height:o.height}}},{key:\"getLargestStringFromMultiArr\",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,p(a));i=e[a.indexOf(s)]}return i}}]),t}(),nt=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getxAxisLabelsCoords\",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=\"left\"!==e.config.legend.position&&\"right\"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=m.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new P(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new L(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new L(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||\"\"===String(r).trim())&&(o=r=\"1\");var h=new k(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,\"rotate(\".concat(e.config.xaxis.labels.rotate,\" 0 0)\"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:\"getxAxisGroupLabelsCoords\",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=m.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new k(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:\"getxAxisTitleCoords\",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new k(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:\"getxAxisTimeScaleLabelsCoords\",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error(\"You have possibly supplied invalid Date format. Please supply a valid JavaScript Date\"),0):t.length>e.length?t:e}),0);return 1.05*(t=new k(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:\"additionalPaddingXLabels\",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c=\"right\"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||\"bar\"!==s.chart.type&&\"candlestick\"!==s.chart.type&&\"rangeBar\"!==s.chart.type&&\"boxPlot\"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else\"datetime\"===r?e.dCtx.gridPad.right(null===(a=String(c(e,n)))||void 0===a?void 0:a.length)?t:e}),d),u=g=c(g,n);if(void 0!==g&&0!==g.length||(g=l.niceMax),e.globals.isBarHorizontal){a=0;var f=e.globals.labels.slice();g=m.getLargestStringFromArr(f),g=c(g,{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,f)}var p=new k(t.dCtx.ctx),x=\"rotate(\".concat(r.labels.rotate,\" 0 0)\"),b=p.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1),v=b;g!==u&&(v=p.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1)),i.push({width:(h>v.width||h>b.width?h:v.width>b.width?v.width:b.width)+a,height:v.height>b.height?v.height:b.height})}else i.push({width:0,height:0})})),i}},{key:\"getyAxisTitleCoords\",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new k(t.dCtx.ctx),r=\"rotate(\".concat(e.title.rotate,\" 0 0)\"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:\"getTotalYAxisWidth\",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new M(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),ht=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"gridPadForColumnsInNumericAxis\",value:function(t){var e=this.w,i=e.config,a=e.globals;if(a.noData||a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.series.length)return 0;var s=function(t){return[\"bar\",\"rangeBar\",\"candlestick\",\"boxPlot\"].includes(t)},r=i.chart.type,o=0,n=s(r)?i.series.length:1;a.comboBarCount>0&&(n=a.comboBarCount),a.collapsedSeries.forEach((function(t){s(t.type)&&(n-=1)})),i.chart.stacked&&(n=1);var l=s(r)||a.comboBarCount>0,h=Math.abs(a.initialMaxX-a.initialMinX);if(l&&a.isXNumeric&&!a.isBarHorizontal&&n>0&&0!==h){h<=3&&(h=a.dataPoints);var c=h/t,d=a.minXDiff&&a.minXDiff/c>0?a.minXDiff/c:0;d>t/2&&(d/=2),(o=d*parseInt(i.plotOptions.bar.columnWidth,10)/100)<1&&(o=1),a.barPadForNumericAxis=o}return o}},{key:\"gridPadFortitleSubtitle\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!i.axisCharts?0:10;[\"title\",\"subtitle\"].forEach((function(s){void 0!==e.config[s].text?a+=e.config[s].margin:a+=t.dCtx.isSparkline||!i.axisCharts?0:5})),!e.config.legend.show||\"bottom\"!==e.config.legend.position||e.config.legend.floating||i.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"title\"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"subtitle\");i.gridHeight-=s.height+r.height+a,i.translateY+=s.height+r.height+a}},{key:\"setGridXPosForDualYAxis\",value:function(t,e){var i=this.w,a=new M(this.dCtx.ctx);i.config.yaxis.forEach((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX-=e[r].width+t[r].width+parseInt(s.labels.style.fontSize,10)/1.2+12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ct=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new ot(this),this.dimYAxis=new lt(this),this.dimXAxis=new nt(this),this.dimGrid=new ht(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return s(t,[{key:\"plotCoords\",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.datalabelsCoords={width:0,height:0};var a=Array.isArray(e.config.stroke.width)?Math.max.apply(Math,p(e.config.stroke.width)):e.config.stroke.width;this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=f(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(a/2,this.gridPad.top),this.gridPad.bottom=Math.max(a/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var s=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*s,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(s>0?s:0),i.translateY=i.translateY+this.gridPad.top}},{key:\"setDimensionsForAxisCharts\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();i.isSlopeChart&&(this.datalabelsCoords=this.dimHelpers.getDatalabelsRect()),e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;(\"radar\"===e.config.chart.type||this.isSparkline)&&(l=0,h=0),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||\"treemap\"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||\"treemap\"===e.config.chart.type||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l+t.datalabelsCoords.width,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||\"treemap\"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l-2*t.datalabelsCoords.width};switch(\"top\"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case\"bottom\":i.translateY=c,d();break;case\"top\":i.translateY=this.lgRect.height+c,d();break;case\"left\":i.translateY=c,i.translateX=this.lgRect.width+l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width;break;case\"right\":i.translateY=c,i.translateX=l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width-5;break;default:throw new Error(\"Legend position not supported\")}this.dimGrid.setGridXPosForDualYAxis(s,a),new Q(this.ctx).setYAxisXPosition(a,s)}},{key:\"setDimensionsForNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s=\"pie\"===i.chart.type||\"polarArea\"===i.chart.type||\"donut\"===i.chart.type?\"pie\":\"radialBar\",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating){e.gridHeight=e.svgHeight;var n=e.dom.elWrap.getBoundingClientRect().width;return e.gridWidth=Math.min(n,e.gridHeight),e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2)}switch(i.legend.position){case\"bottom\":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case\"top\":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case\"left\":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case\"right\":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error(\"Legend position not supported\")}}},{key:\"conditionalChecksForAxisCoords\",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&\"bottom\"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),dt=function(){function t(e){i(this,t),this.w=e.w,this.lgCtx=e}return s(t,[{key:\"getLegendStyles\",value:function(){var t,e,i,a=document.createElement(\"style\");a.setAttribute(\"type\",\"text/css\");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute(\"nonce\",s);var r=document.createTextNode(\"\\n .apexcharts-flip-y {\\n transform: scaleY(-1) translateY(-100%);\\n transform-origin: top;\\n transform-box: fill-box;\\n }\\n .apexcharts-flip-x {\\n transform: scaleX(-1);\\n transform-origin: center;\\n transform-box: fill-box;\\n }\\n .apexcharts-legend {\\n display: flex;\\n overflow: auto;\\n padding: 0 10px;\\n }\\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\\n flex-wrap: wrap\\n }\\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n flex-direction: column;\\n bottom: 0;\\n }\\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n justify-content: flex-start;\\n }\\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\\n justify-content: center;\\n }\\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\\n justify-content: flex-end;\\n }\\n .apexcharts-legend-series {\\n cursor: pointer;\\n line-height: normal;\\n display: flex;\\n align-items: center;\\n }\\n .apexcharts-legend-text {\\n position: relative;\\n font-size: 14px;\\n }\\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\\n pointer-events: none;\\n }\\n .apexcharts-legend-marker {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n margin-right: 1px;\\n }\\n\\n .apexcharts-legend-series.apexcharts-no-click {\\n cursor: auto;\\n }\\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\\n display: none !important;\\n }\\n .apexcharts-inactive-legend {\\n opacity: 0.45;\\n }\");return a.appendChild(r),a}},{key:\"getLegendDimensions\",value:function(){var t=this.w.globals.dom.baseEl.querySelector(\".apexcharts-legend\").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:\"appendToForeignObject\",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:\"toggleDataSeries\",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||\"radialBar\"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\")),r=parseInt(s.getAttribute(\"data:realIndex\"),10)):(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(t+1,\"']\")),r=parseInt(s.getAttribute(\"rel\"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(\" .apexcharts-series[rel='\".concat(t+1,\"'] path\")),n=a.config.chart.type;if(\"pie\"===n||\"polarArea\"===n||\"donut\"===n){var l=a.config.plotOptions.pie.donut.labels;new k(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire(\"click\")}}},{key:\"getSeriesAfterCollapsing\",value:function(t){var e=t.realIndex,i=this.w,a=i.globals,s=m.clone(i.config.series);if(a.axisCharts){var r=i.config.yaxis[a.seriesYAxisReverseMap[e]],o={index:e,data:s[e].data.slice(),type:s[e].type||i.config.chart.type};if(r&&r.show&&r.showAlways)a.ancillaryCollapsedSeriesIndices.indexOf(e)<0&&(a.ancillaryCollapsedSeries.push(o),a.ancillaryCollapsedSeriesIndices.push(e));else if(a.collapsedSeriesIndices.indexOf(e)<0){a.collapsedSeries.push(o),a.collapsedSeriesIndices.push(e);var n=a.risingSeries.indexOf(e);a.risingSeries.splice(n,1)}}else a.collapsedSeries.push({index:e,data:s[e]}),a.collapsedSeriesIndices.push(e);return a.allSeriesCollapsed=a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.config.series.length,this._getSeriesBasedOnCollapsedState(s)}},{key:\"hideSeries\",value:function(t){for(var e=t.seriesEl,i=t.realIndex,a=this.w,s=this.getSeriesAfterCollapsing({realIndex:i}),r=e.childNodes,o=0;o0){for(var r=0;r1;if(this.legendHelpers.appendToForeignObject(),(a||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),\"bottom\"===i.legend.position||\"top\"===i.legend.position?this.legendAlignHorizontal():\"right\"!==i.legend.position&&\"left\"!==i.legend.position||this.legendAlignVertical()}}},{key:\"createLegendMarker\",value:function(t){var e=t.i,i=t.fillcolor,a=this.w,s=document.createElement(\"span\");s.classList.add(\"apexcharts-legend-marker\");var r=a.config.legend.markers.shape||a.config.markers.shape,o=r;Array.isArray(r)&&(o=r[e]);var n=Array.isArray(a.config.legend.markers.size)?parseFloat(a.config.legend.markers.size[e]):parseFloat(a.config.legend.markers.size),l=Array.isArray(a.config.legend.markers.offsetX)?parseFloat(a.config.legend.markers.offsetX[e]):parseFloat(a.config.legend.markers.offsetX),h=Array.isArray(a.config.legend.markers.offsetY)?parseFloat(a.config.legend.markers.offsetY[e]):parseFloat(a.config.legend.markers.offsetY),c=Array.isArray(a.config.legend.markers.strokeWidth)?parseFloat(a.config.legend.markers.strokeWidth[e]):parseFloat(a.config.legend.markers.strokeWidth),d=s.style;if(d.height=2*(n+c)+\"px\",d.width=2*(n+c)+\"px\",d.left=l+\"px\",d.top=h+\"px\",a.config.legend.markers.customHTML)d.background=\"transparent\",d.color=i[e],Array.isArray(a.config.legend.markers.customHTML)?a.config.legend.markers.customHTML[e]&&(s.innerHTML=a.config.legend.markers.customHTML[e]()):s.innerHTML=a.config.legend.markers.customHTML();else{var u=new W(this.ctx).getMarkerConfig({cssClass:\"apexcharts-legend-marker apexcharts-marker apexcharts-marker-\".concat(o),seriesIndex:e,strokeWidth:c,size:n}),f=SVG(s).size(\"100%\",\"100%\"),p=new k(this.ctx).drawMarker(0,0,g(g({},u),{},{pointFillColor:Array.isArray(i)?i[e]:u.pointFillColor,shape:o}));SVG.select(\".apexcharts-legend-marker.apexcharts-marker\").members.forEach((function(t){t.node.classList.contains(\"apexcharts-marker-triangle\")?t.node.style.transform=\"translate(50%, 45%)\":t.node.style.transform=\"translate(50%, 50%)\"})),f.add(p)}return s}},{key:\"drawLegends\",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.config.legend.markers.fillColors?e.config.legend.markers.fillColors.slice():e.globals.colors.slice();if(\"heatmap\"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+\" - \"+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h,c=o(a[l],{seriesIndex:l,w:e}),d=!1,g=!1;if(e.globals.collapsedSeries.length>0)for(var u=0;u0)for(var f=0;f0?l-10:0)+(h>0?h-10:0)}a.style.position=\"absolute\",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+\"px\",a.style.top=o+\"px\",\"right\"===i.config.legend.position&&(a.style.left=\"auto\",a.style.right=25+i.config.legend.offsetX+\"px\");[\"width\",\"height\"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+\"px\")}))}},{key:\"legendAlignHorizontal\",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=new ct(this.ctx),i=e.dimHelpers.getTitleSubtitleCoords(\"title\"),a=e.dimHelpers.getTitleSubtitleCoords(\"subtitle\"),s=0;\"top\"===t.config.legend.position&&(s=i.height+a.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,s)}},{key:\"legendAlignVertical\",value:function(){var t=this.w,e=this.legendHelpers.getLegendDimensions(),i=0;\"left\"===t.config.legend.position&&(i=20),\"right\"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:\"onLegendHovered\",value:function(t){var e=this.w,i=t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\");if(\"heatmap\"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute(\"rel\"),10)-1;this.ctx.events.fireEvent(\"legendHover\",[this.ctx,a,this.w]),new V(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains(\"apexcharts-inactive-legend\")&&i&&new V(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:\"onLegendClick\",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\"))){var i=parseInt(t.target.getAttribute(\"rel\"),10)-1,a=\"true\"===t.target.getAttribute(\"data:collapsed\"),s=this.w.config.chart.events.legendClick;\"function\"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendClick\",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;\"function\"==typeof r&&t.target.classList.contains(\"apexcharts-legend-marker\")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendMarkerClick\",[this.ctx,i,this.w])),\"treemap\"!==e.config.chart.type&&\"heatmap\"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ut=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.ev=this.w.config.chart.events,this.selectedClass=\"apexcharts-selected\",this.localeValues=this.w.globals.locale.toolbar,this.minX=a.globals.minX,this.maxX=a.globals.maxX}return s(t,[{key:\"createToolbar\",value:function(){var t=this,e=this.w,i=function(){return document.createElement(\"div\")},a=i();if(a.setAttribute(\"class\",\"apexcharts-toolbar\"),a.style.top=e.config.chart.toolbar.offsetY+\"px\",a.style.right=3-e.config.chart.toolbar.offsetX+\"px\",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\\n \\n \\n\\n'),o(\"zoomOut\",this.elZoomOut,'\\n \\n \\n\\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:\"zoom\"===i?t.elZoom:t.elSelection,icon:\"string\"==typeof t.t[i]?t.t[i]:\"zoom\"===i?'\\n \\n \\n \\n':'\\n \\n \\n',title:t.localeValues[\"zoom\"===i?\"selectionZoom\":\"selection\"],class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-\".concat(i,\"-icon\")})};n(\"zoom\"),n(\"selection\"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:\"string\"==typeof this.t.pan?this.t.pan:'\\n \\n \\n \\n \\n \\n \\n \\n',title:this.localeValues.pan,class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-pan-icon\"}),o(\"reset\",this.elZoomReset,'\\n \\n \\n'),this.t.download&&r.push({el:this.elMenuIcon,icon:\"string\"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:\"apexcharts-menu-icon\"});for(var l=0;lthis.wheelDelay&&(this.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a),this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout((function(){a-i.globals.lastWheelExecution>e.wheelDelay&&(e.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a)}),this.debounceDelay)}},{key:\"executeMouseWheelZoom\",value:function(t){var e,i=this.w;this.minX=i.globals.isRangeBar?i.globals.minY:i.globals.minX,this.maxX=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;var a=null===(e=this.gridRect)||void 0===e?void 0:e.getBoundingClientRect();if(a){var s,r,o,n=(t.clientX-a.left)/a.width,l=this.minX,h=this.maxX,c=h-l;if(t.deltaY<0){var d=l+n*c;r=d-(s=.5*c)/2,o=d+s/2}else r=l-(s=1.5*c)/2,o=h+s/2;if(!i.globals.isRangeBar){r=Math.max(r,i.globals.initialMinX),o=Math.min(o,i.globals.initialMaxX);var g=.01*(i.globals.initialMaxX-i.globals.initialMinX);if(o-r0&&e.height>0&&this.slDraggableRect.selectize({points:\"l, r\",pointSize:8,pointType:\"rect\"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on(\"resizing\",this.selectionDragging.bind(this,\"resizing\"))}}},{key:\"preselectedSelection\",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),\"function\"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:\"drawSelectionRect\",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:\"translate(\"+o+\", \"+l+\")\"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,\"fill-opacity\":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,\"stroke-width\":h.config.chart.zoom.zoomedArea.stroke.width,\"stroke-opacity\":h.config.chart.zoom.zoomedArea.stroke.opacity}),k.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,\"fill-opacity\":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,\"stroke-width\":h.config.chart.selection.stroke.width,\"stroke-dasharray\":h.config.chart.selection.stroke.dashArray,\"stroke-opacity\":h.config.chart.selection.stroke.opacity}),k.setAttrs(d.node,g))}}},{key:\"hideSelectionRect\",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:\"selectionDrawing\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g=\"x\"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:\"y\"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging(\"resizing\"),g}},{key:\"selectionDragging\",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;\"resizing\"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n(\"x\"),y:n(\"y\"),width:n(\"width\"),height:n(\"height\")};a.globals.selection=l,\"function\"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,o,n,l=i.gridRect.getBoundingClientRect(),h=r.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(h.left-l.left)*s.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(h.right-l.left)*s.invertedYRatio,o=0,n=1):(t=a.globals.xAxisScale.niceMin+(h.left-l.left)*s.xRatio,e=a.globals.xAxisScale.niceMin+(h.right-l.left)*s.xRatio,o=a.globals.yAxisScale[0].niceMin+(l.bottom-h.bottom)*s.yRatio[0],n=a.globals.yAxisScale[0].niceMax-(h.top-l.top)*s.yRatio[0]);var c={xaxis:{min:t,max:e},yaxis:{min:o,max:n}};a.config.chart.events.selection(i.ctx,c),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,c)}),o))}},{key:\"selectionDrawn\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){var i=a.globals.seriesYAxisMap[e][0];d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[i]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[i]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=m.clone(a.globals.initialConfig.yaxis),f=m.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),\"xy\"!==i&&\"x\"!==i||(f={min:h,max:c}),\"xy\"!==i&&\"y\"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),o){var p=o.getBeforeZoomRange(f,u);p&&(f=p.xaxis?p.xaxis:f,u=p.yaxis?p.yaxis:u)}var x={xaxis:f};a.config.chart.group||(x.yaxis=u),s.ctx.updateHelpers._updateOptions(x,!1,s.w.config.chart.animations.dynamicAnimation.enabled),\"function\"==typeof a.config.chart.events.zoomed&&o.zoomCallback(f,u)}else if(a.globals.selectionEnabled){var b,v=null;b={min:h,max:c},\"xy\"!==i&&\"y\"!==i||(v=m.clone(a.config.yaxis)).forEach((function(t,e){v[e].min=g[e],v[e].max=d[e]})),a.globals.selection=s.selection,\"function\"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:b,yaxis:v})}}},{key:\"panDragging\",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection=\"left\":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection=\"right\":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection=\"up\":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection=\"down\")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:\"delayedPanScrolled\",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;\"left\"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):\"right\"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:\"panScrolled\",value:function(t,e){var i=this.w,a=this.xyRatios,s=m.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),\"left\"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):\"right\"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={xaxis:{min:t,max:e}};i.config.chart.group||(l.yaxis=s),this.updateScrolledChart(l,t,e)}},{key:\"updateScrolledChart\",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),\"function\"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),a}(),pt=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return s(t,[{key:\"getNearestValues\",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove(\"hovering-zoom\"),e.classList.remove(\"hovering-pan\")):r.globals.zoomEnabled?(e.classList.remove(\"hovering-pan\"),e.classList.add(\"hovering-zoom\")):r.globals.panEnabled&&(e.classList.remove(\"hovering-zoom\"),e.classList.add(\"hovering-pan\"));var f=Math.round(g/h),p=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(f=Math.ceil(g/h),f-=1);var x=null,b=null,v=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return m.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return m.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);x=(b=this.closestInMultiArray(k,A,v,y)).index,f=b.j,null!==x&&(v=r.globals.seriesXvalues[x],f=(b=this.closestInArray(k,v)).index)}return r.globals.capturedSeriesIndex=null===x?-1:x,(!f||f<1)&&(f=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=p:r.globals.capturedDataPointIndex=f,{capturedSeries:x,j:r.globals.isBarHorizontal?p:f,hoverX:g,hoverY:u}}},{key:\"closestInMultiArray\",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a<=h&&(h=a,n=i)}))})),-1!==n){var c=a[r][n],d=Math.abs(e-c);o=r,a.forEach((function(t,i){var a=Math.abs(e-t[n]);a<=d&&(d=a,o=i)}))}return{index:o,j:n}}},{key:\"getFirstActiveXArray\",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s0)for(var a=0;a *\")):this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap > *\")}},{key:\"getAllMarkers\",value:function(){var t=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap\");(t=p(t)).sort((function(t,e){var i=Number(t.getAttribute(\"data:realIndex\")),a=Number(e.getAttribute(\"data:realIndex\"));return ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(\".apexcharts-marker\"))})),e}},{key:\"hasMarkers\",value:function(t){return this.getElMarkers(t).length>0}},{key:\"getPathFromPoint\",value:function(t,e){var i=Number(t.getAttribute(\"cx\")),a=Number(t.getAttribute(\"cy\")),s=t.getAttribute(\"shape\");return new k(this.ctx).getMarkerPath(i,a,s,e)}},{key:\"getElBars\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series\")}},{key:\"hasBars\",value:function(){return this.getElBars().length>0}},{key:\"getHoverMarkerSize\",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:\"toggleAllTooltipSeriesGroups\",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-tooltip-series-group\"));for(var a=i.allTooltipSeriesGroups,s=0;s\",e=\"
\";d.forEach((function(i,a){t+='
').concat(i.attrs.name,\"
\"),e+=\"
\".concat(i.val,\"
\")})),v.innerHTML=t+\"
\",m.innerHTML=e+\"\"};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML=\"\",m.innerHTML=\"\"):y()}else v.innerHTML=\"\",m.innerHTML=\"\";null!==f&&(a[e].querySelector(\".apexcharts-tooltip-text-z-label\").innerHTML=l.config.tooltip.z.title,a[e].querySelector(\".apexcharts-tooltip-text-z-value\").innerHTML=void 0!==f?f:\"\");if(o&&p[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(\".apexcharts-tooltip-marker\"),k=a[e].querySelector(\".apexcharts-tooltip-text\");0==parseFloat(c)?(w.style.display=\"none\",k.style.display=\"none\"):(w.style.display=\"block\",k.style.display=\"block\")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1||Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)?p[0].parentNode.style.display=\"none\":p[0].parentNode.style.display=l.config.tooltip.items.display}else Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)&&(p[0].parentNode.style.display=\"none\")}},{key:\"toggleActiveInactiveSeries\",value:function(t,e){var i=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups(\"enable\");else{this.tooltipUtil.toggleAllTooltipSeriesGroups(\"disable\");var a=i.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-series-group-\".concat(e));a&&(a.classList.add(\"apexcharts-active\"),a.style.display=i.config.tooltip.items.display)}}},{key:\"getValuesToPrint\",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r=\"\",o=\"\",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&\"treemap\"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=new _(this.ctx).isFormatXY()?void 0!==a.config.series[e].data[i]?a.config.series[e].data[i].x:\"\":void 0!==a.globals.labels[i]?a.globals.labels[i]:\"\";var d=r;a.globals.isXNumeric&&\"datetime\"===a.config.xaxis.type?r=new P(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new L(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o=\"function\"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(\" \"):l,xVal:Array.isArray(r)?r.join(\" \"):r,xAxisTTVal:Array.isArray(o)?o.join(\" \"):o,zVal:n}}},{key:\"handleCustomTooltip\",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),bt=function(){function t(e){i(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return s(t,[{key:\"moveXCrosshairs\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute(\"x\",r),s.setAttribute(\"x1\",r),s.setAttribute(\"x2\",r),s.setAttribute(\"y2\",a.globals.gridHeight),s.classList.add(\"apexcharts-active\")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;\"tickWidth\"!==a.config.xaxis.crosshairs.width&&\"barWidth\"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:\"moveYCrosshairs\",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&k.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&k.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:\"moveXAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add(\"apexcharts-active\");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new k(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+\"px\",i.xaxisTooltip.style.left=t+\"px\",i.xaxisTooltip.style.top=a+\"px\"}}}},{key:\"moveYAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));var a=parseInt(i.ycrosshairsHidden.getAttribute(\"y1\"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add(\"apexcharts-active\"),i.yaxisTTEls[t].style.top=s+\"px\",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+\"px\"):i.yaxisTTEls[t].classList.remove(\"apexcharts-active\")}},{key:\"moveTooltip\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+\"px\",r.style.top=h+\"px\")}},{key:\"moveMarkers\",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-marker\")),r=0;r0){var u=g.getAttribute(\"shape\"),f=l.getMarkerPath(s,r,u,1.5*c);g.setAttribute(\"d\",f)}this.moveXCrosshairs(s),n.fixedTooltip||this.moveTooltip(s,r,c)}}},{key:\"moveDynamicPointsOnHover\",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray,n=new V(this.ctx),l=new k(this.ctx);e=n.getActiveConfigSeriesIndex(\"asc\",[\"line\",\"area\",\"scatter\",\"bubble\"]);var h=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var c=i.tooltipUtil.getAllMarkers();if(null!==c)for(var d=0;d0){var b=l.getMarkerPath(s,u,p,h);c[d].setAttribute(\"d\",b)}else c[d].setAttribute(\"d\",\"\")}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,h)}},{key:\"moveStickyTooltipOverBars\",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new V(this.ctx).getActiveConfigSeriesIndex(\"desc\")+1);var o=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[rel='\".concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-candlestick-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-boxPlot-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-rangebar-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"']\"));o||\"number\"!=typeof e||(o=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] path[j='\").concat(t,\"'],\\n .apexcharts-candlestick-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n .apexcharts-boxPlot-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n .apexcharts-rangebar-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"']\")));var n=o?parseFloat(o.getAttribute(\"cx\")):0,l=o?parseFloat(o.getAttribute(\"cy\")):0,h=o?parseFloat(o.getAttribute(\"barWidth\")):0,c=a.getElGrid().getBoundingClientRect(),d=o&&(o.classList.contains(\"apexcharts-candlestick-area\")||o.classList.contains(\"apexcharts-boxPlot-area\"));i.globals.isXNumeric?(o&&!d&&(n-=s%2!=0?h/2:0),o&&d&&i.globals.comboCharts&&(n-=h/2)):i.globals.isBarHorizontal||(n=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(n)&&(n=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(n),a.fixedTooltip||this.moveTooltip(n,l||i.globals.gridHeight)}}]),t}(),vt=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new bt(e)}return s(t,[{key:\"drawDynamicPoints\",value:function(){var t=this.w,e=new k(this.ctx),i=new W(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");a=p(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute(\"data:realIndex\"))-parseFloat(e.getAttribute(\"data:realIndex\"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;\"bubble\"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute(\"cx\"),o=e.getAttribute(\"cy\");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(\"radar\"===s.config.chart.type){var n=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-n.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:\"enlargePoints\",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),o=e.config.markers.hover.size,n=0;n=0){var a=this.ttCtx.tooltipUtil.getPathFromPoint(t[e],i);t[e].setAttribute(\"d\",a)}else t[e].setAttribute(\"d\",\"M0,0\")}}}]),t}(),mt=function(){function t(e){i(this,t),this.w=e.w;var a=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!a.globals.isBarHorizontal&&\"rangeBar\"===a.config.chart.type&&a.config.plotOptions.bar.rangeBarGroupRows}return s(t,[{key:\"getAttr\",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:\"handleHeatTreeTooltip\",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains(\"apexcharts-\".concat(r,\"-rect\"))){var l=this.getAttr(e,\"i\"),h=this.getAttr(e,\"j\"),c=this.getAttr(e,\"cx\"),d=this.getAttr(e,\"cy\"),g=this.getAttr(e,\"width\"),u=this.getAttr(e,\"height\");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var f=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-f.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-f.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:\"handleMarkerTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains(\"apexcharts-marker\")){var h=parseInt(s.paths.getAttribute(\"cx\"),10),c=parseInt(s.paths.getAttribute(\"cy\"),10),d=parseFloat(s.paths.getAttribute(\"val\"));if(i=parseInt(s.paths.getAttribute(\"rel\"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute(\"rel\"),10)-1,l.intersect){var g=m.findAncestor(s.paths,\"apexcharts-series\");g&&(e=parseInt(g.getAttribute(\"data:realIndex\"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),\"mouseup\"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:\"handleBarTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=g,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-o.tooltipRect.ttHeight);var u=parseInt(s.paths.parentNode.getAttribute(\"data:realIndex\"),10);if(r.globals.isMultipleYAxis?r.config.yaxis[u]&&r.config.yaxis[u].reversed:r.config.yaxis[0].reversed,h+o.tooltipRect.ttWidth>r.globals.gridWidth?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var f=o.getElGrid().getBoundingClientRect();c=o.e.clientY-f.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(c=c+r.globals.translateY-o.tooltipRect.ttHeight/2,n.style.left=h+r.globals.translateX+\"px\",n.style.top=c+\"px\")}},{key:\"getBarTooltipXY\",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,o=this.ttCtx,n=0,l=0,h=0,c=0,d=0,g=i.target.classList;if(g.contains(\"apexcharts-bar-area\")||g.contains(\"apexcharts-candlestick-area\")||g.contains(\"apexcharts-boxPlot-area\")||g.contains(\"apexcharts-rangebar-area\")){var u=i.target,f=u.getBoundingClientRect(),p=a.elGrid.getBoundingClientRect(),x=f.height;d=f.height;var b=f.width,v=parseInt(u.getAttribute(\"cx\"),10),m=parseInt(u.getAttribute(\"cy\"),10);c=parseFloat(u.getAttribute(\"barWidth\"));var y=\"touchmove\"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(u.getAttribute(\"j\"),10),n=parseInt(u.parentNode.getAttribute(\"rel\"),10)-1;var w=u.getAttribute(\"data-range-y1\"),k=u.getAttribute(\"data-range-y2\");s.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute(\"data:realIndex\"),10));var A=function(t){return s.globals.isXNumeric?v-b/2:e.isVerticalGroupedRangeBar?v+b/2:v-o.dataPointsDividedWidth+b/2},S=function(){return m-o.dataPointsDividedHeight+x/2-o.tooltipRect.ttHeight/2};o.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:n,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!o.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-p.left+15,h=S()):(l=A(),h=i.clientY-p.top-o.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=v)0&&i.setAttribute(\"width\",e.xcrosshairsWidth)}},{key:\"handleYCrosshair\",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs\"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs-hidden\")}},{key:\"drawYaxisTooltipText\",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals,o=r.seriesYAxisMap[t];if(a.yaxisTooltips[t]&&o.length>0){var n=r.yLabelFormatters[t],l=a.getElGrid().getBoundingClientRect(),h=o[0],c=0;i.yRatio.length>1&&(c=h);var d=(e-l.top)*i.yRatio[c],g=r.maxYArr[h]-r.minYArr[h],u=r.minYArr[h]+(g-d);s.config.yaxis[t].reversed&&(u=r.maxYArr[h]-(g-d)),a.tooltipPosition.moveYCrosshairs(e-l.top),a.yaxisTooltipText[t].innerHTML=n(u),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),wt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.tConfig=a.config.tooltip,this.tooltipUtil=new pt(this),this.tooltipLabels=new xt(this),this.tooltipPosition=new bt(this),this.marker=new vt(this),this.intersect=new mt(this),this.axesTooltip=new yt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!a.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return s(t,[{key:\"getElTooltip\",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\"):null}},{key:\"getElXCrosshairs\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-xcrosshairs\")}},{key:\"getElGrid\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-grid\")}},{key:\"drawTooltip\",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement(\"div\");if(i.classList.add(\"apexcharts-tooltip\"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add(\"apexcharts-theme-\".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new q(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&\"rangeBar\"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement(\"div\"),this.tooltipTitle.classList.add(\"apexcharts-tooltip-title\"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-legend-text\"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:\"createTTElements\",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement(\"div\");o.classList.add(\"apexcharts-tooltip-series-group\",\"apexcharts-tooltip-series-group-\".concat(r)),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1;var n=document.createElement(\"span\");n.classList.add(\"apexcharts-tooltip-marker\"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement(\"div\");l.classList.add(\"apexcharts-tooltip-text\"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,[\"y\",\"goals\",\"z\"].forEach((function(t){var e=document.createElement(\"div\");e.classList.add(\"apexcharts-tooltip-\".concat(t,\"-group\"));var i=document.createElement(\"span\");i.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-label\")),e.appendChild(i);var a=document.createElement(\"span\");a.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-value\")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:\"drawFixedTooltipRect\",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf(\"right\")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf(\"bottom\")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+\"px\",e.style.top=o+\"px\",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:\"addDatapointEventsListeners\",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area\");this.addPathsEventListeners(e,t)}},{key:\"addPathsEventListeners\",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};[\"mousemove\",\"mouseup\",\"touchmove\",\"mouseout\",\"touchend\"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:\"seriesHover\",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:\"seriesHoverByContext\",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip(e);if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new V(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:\"axisChartsTooltips\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n=\"touchmove\"===a.type?a.touches[0].clientX:a.clientX,l=\"touchmove\"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute(\"index\"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=[];r.config.chart.group&&(g=this.ctx.getSyncedCharts());var u=r.globals.xyCharts||\"bar\"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(\"mousemove\"===a.type||\"touchmove\"===a.type||\"mouseup\"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add(\"apexcharts-active\");var f=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&f.length&&this.ycrosshairs.classList.add(\"apexcharts-active\"),u&&!this.showOnIntersect||g.length>1)this.handleStickyTooltip(a,n,l,s);else if(\"heatmap\"===r.config.chart.type||\"treemap\"===r.config.chart.type){var p=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=p.x,i=p.y,c.style.left=e+\"px\",c.style.top=i+\"px\"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var x=0;xl.width)this.handleMouseOut(a);else if(null!==n)this.handleStickyCapturedSeries(t,n,a,o);else if(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,o,a.ttItems)}}},{key:\"handleStickyCapturedSeries\",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:\"deactivateHoverFilter\",value:function(){for(var t=this.w,e=new k(this.ctx),i=t.globals.dom.Paper.select(\".apexcharts-bar-area\"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,S=this.w,C=e;\"mouseup\"===t.type&&this.markerClick(t,i,a),null===A&&(A=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(i),P=this.tooltipUtil.getElBars();if(S.config.legend.tooltipHoverFormatter){var M=S.config.legend.tooltipHoverFormatter,I=Array.from(this.legendLabels);I.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)}));for(var T=0;T0?C.marker.enlargePoints(a):C.tooltipPosition.moveDynamicPointsOnHover(a);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(P),this.barSeriesHeight>0)){var F=new k(this.ctx),D=S.globals.dom.Paper.select(\".apexcharts-bar-area[j='\".concat(a,\"']\"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a,i);for(var H=0;H0&&e.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(g-=h*A)),w){g=g+d.height/2-b/2-2}var C=e.globals.series[i][a]<0,L=n;switch(this.barCtx.isReversed&&(L=n+(C?c:-c)),p.position){case\"center\":u=w?C?L-c/2+m:L+c/2-m:C?L-c/2+d.height/2+m:L+c/2+d.height/2-m;break;case\"bottom\":u=w?C?L-c+m:L+c-m:C?L-c+d.height+b+m:L+c-d.height/2+b-m;break;case\"top\":u=w?C?L+m:L-m:C?L-d.height/2-m:L+d.height+m}if(this.barCtx.lastActiveBarSerieIndex===s&&x.enabled){var P=new k(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:s,j:a}),f.fontSize);r=C?L-P.height/2-m-x.offsetY+18:L+P.height+m+x.offsetY-18;var M=S;o=y+(e.globals.isXNumeric?-h*e.globals.barGroups.length/2:e.globals.barGroups.length*h/2-(e.globals.barGroups.length-1)*h-M)+x.offsetX}return e.config.chart.stacked||(u<0?u=0+b:u+d.height/3>e.globals.gridHeight&&(u=e.globals.gridHeight-b)),{bcx:l,bcy:n,dataLabelsX:g,dataLabelsY:u,totalDataLabelsX:o,totalDataLabelsY:r,totalDataLabelsAnchor:\"middle\"}}},{key:\"calculateBarsDataLabelsPosition\",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.bcy,n=t.barHeight,l=t.barWidth,h=t.textRects,c=t.dataLabelsX,d=t.strokeWidth,g=t.dataLabelsConfig,u=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,p=t.offX,x=t.offY,b=e.globals.gridHeight/e.globals.dataPoints;l=Math.abs(l);var v,m,y=o-(this.barCtx.isRangeBar?0:b)+n/2+h.height/2+x-3,w=\"start\",A=e.globals.series[a][s]<0,S=i;switch(this.barCtx.isReversed&&(S=i+(A?-l:l),w=A?\"start\":\"end\"),u.position){case\"center\":c=A?S+l/2-p:Math.max(h.width/2,S-l/2)+p;break;case\"bottom\":c=A?S+l-d-p:S-l+d+p;break;case\"top\":c=A?S-d-p:S-d+p}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var C=new k(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),g.fontSize);A?(v=S-d-p-f.offsetX,w=\"end\"):v=S+p+f.offsetX+(this.barCtx.isReversed?-(l+d):d),m=y-h.height/2+C.height/2+f.offsetY+d}return e.config.chart.stacked||(\"start\"===g.textAnchor?c-h.width<0?c=A?h.width+d:d:c+h.width>e.globals.gridWidth&&(c=A?e.globals.gridWidth-d:e.globals.gridWidth-h.width-d):\"middle\"===g.textAnchor?c-h.width/2<0?c=h.width/2+d:c+h.width/2>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width/2-d):\"end\"===g.textAnchor&&(c<1?c=h.width+d:c+1>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width-d))),{bcx:i,bcy:o,dataLabelsX:c,dataLabelsY:y,totalDataLabelsX:v,totalDataLabelsY:m,totalDataLabelsAnchor:w}}},{key:\"drawCalculatedDataLabels\",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.i,r=t.j,o=t.textRects,n=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d=\"rotate(0)\";\"vertical\"===c.config.plotOptions.bar.dataLabels.orientation&&(d=\"rotate(-90, \".concat(e,\", \").concat(i,\")\"));var u=new G(this.barCtx.ctx),f=new k(this.barCtx.ctx),p=h.formatter,x=null,b=c.globals.collapsedSeriesIndices.indexOf(s)>-1;if(h.enabled&&!b){x=f.group({class:\"apexcharts-data-labels\",transform:d});var v=\"\";void 0!==a&&(v=p(a,g(g({},c),{},{seriesIndex:s,dataPointIndex:r,w:c}))),!a&&c.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(v=\"\");var m=c.globals.series[s][r]<0,y=c.config.plotOptions.bar.dataLabels.position;if(\"vertical\"===c.config.plotOptions.bar.dataLabels.orientation&&(\"top\"===y&&(h.textAnchor=m?\"end\":\"start\"),\"center\"===y&&(h.textAnchor=\"middle\"),\"bottom\"===y&&(h.textAnchor=m?\"end\":\"start\")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)lMath.abs(l)&&(v=\"\"):o.height/1.6>Math.abs(n)&&(v=\"\"));var w=g({},h);this.barCtx.isHorizontal&&a<0&&(\"start\"===h.textAnchor?w.textAnchor=\"end\":\"end\"===h.textAnchor&&(w.textAnchor=\"start\")),u.plotDataLabelsText({x:e,y:i,text:v,i:s,j:r,parent:x,dataLabelsConfig:w,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:\"drawTotalDataLabels\",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.realIndex,r=t.textAnchor,o=t.barTotalDataLabelsConfig;this.w;var n,l=new k(this.barCtx.ctx);return o.enabled&&void 0!==e&&void 0!==i&&this.barCtx.lastActiveBarSerieIndex===s&&(n=l.drawText({x:e,y:i,foreColor:o.style.color,text:a,textAnchor:r,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),n}}]),t}(),At=function(){function t(e){i(this,t),this.w=e.w,this.barCtx=e}return s(t,[{key:\"initVariables\",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/c*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}-1===String(this.barCtx.barOptions.columnWidth).indexOf(\"%\")&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.translationsIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return l.globals.barHeight=s,l.globals.barWidth=r,{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:\"initializeStackedPrevVars\",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]}))}},{key:\"initializeStackedXYVars\",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]}))}},{key:\"getPathFillColor\",value:function(t,e,i,a){var s,r,o,n,l,h=this.w,c=this.barCtx.ctx.fill,d=null,g=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(d=a.color)}));return null!==(s=h.config.series[e].data[i])&&void 0!==s&&s.fillColor&&(d=h.config.series[e].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?g:a,dataPointIndex:i,color:d,value:t[e][i],fillConfig:null===(r=h.config.series[e].data[i])||void 0===r?void 0:r.fill,fillType:null!==(o=h.config.series[e].data[i])&&void 0!==o&&null!==(n=o.fill)&&void 0!==n&&n.type?null===(l=h.config.series[e].data[i])||void 0===l?void 0:l.fill.type:Array.isArray(h.config.fill.type)?h.config.fill.type[a]:h.config.fill.type})}},{key:\"getStrokeWidth\",value:function(t,e,i){var a=0,s=this.w;return this.barCtx.series[t][e]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:\"createBorderRadiusArr\",value:function(t){var e=this.w,i=!this.w.config.chart.stacked||\"last\"!==e.config.plotOptions.bar.borderRadiusWhenStacked||e.config.plotOptions.bar.borderRadius<=0,a=t.length,s=t[0].length,o=Array.from({length:a},(function(){return Array(s).fill(i?\"top\":\"none\")}));if(i)return o;for(var n=0;n0?(l.push(d),c++):g<0&&(h.push(d),c++)}if(l.length>0&&0===h.length)if(1===l.length)o[l[0]][n]=\"both\";else{var u,f=l[0],p=l[l.length-1],x=r(l);try{for(x.s();!(u=x.n()).done;){var b=u.value;o[b][n]=b===f?\"bottom\":b===p?\"top\":\"none\"}}catch(t){x.e(t)}finally{x.f()}}else if(h.length>0&&0===l.length)if(1===h.length)o[h[0]][n]=\"both\";else{var v,m=h[0],y=h[h.length-1],w=r(h);try{for(w.s();!(v=w.n()).done;){var k=v.value;o[k][n]=k===m?\"bottom\":k===y?\"top\":\"none\"}}catch(t){w.e(t)}finally{w.f()}}else if(l.length>0&&h.length>0){var A,S=l[l.length-1],C=r(l);try{for(C.s();!(A=C.n()).done;){var L=A.value;o[L][n]=L===S?\"top\":\"none\"}}catch(t){C.e(t)}finally{C.f()}var P,M=h[h.length-1],I=r(h);try{for(I.s();!(P=I.n()).done;){var T=P.value;o[T][n]=T===M?\"bottom\":\"none\"}}catch(t){I.e(t)}finally{I.f()}}else if(1===c){o[l[0]||h[0]][n]=\"both\"}}return o}},{key:\"barBackground\",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new k(this.barCtx.ctx),c=new V(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add(\"apexcharts-backgroundBar\")}}},{key:\"getColumnPaths\",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,g=t.j,u=t.w,f=new k(this.barCtx.ctx);(o=Array.isArray(o)?o[c]:o)||(o=0);var p=i,x=a;null!==(e=u.config.series[c].data[g])&&void 0!==e&&e.columnWidthOffset&&(x=a-u.config.series[c].data[g].columnWidthOffset/2,p=i+u.config.series[c].data[g].columnWidthOffset);var b=o/2,v=x+b,m=x+p-b,y=(l[d][g]>=0?1:-1)*(n?-1:1);s+=.001-b*y,r+=.001+b*y;var w=f.move(v,s),A=f.move(v,s),S=f.line(m,s);if(u.globals.previousPaths.length>0&&(A=this.barCtx.getPreviousPath(c,g,!1)),w=w+f.line(v,r)+f.line(m,r)+S+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),A=A+f.line(v,s)+S+S+S+S+S+f.line(v,s)+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),\"none\"!==this.arrBorderRadius[c][g]&&(w=f.roundPathCorners(w,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).yArrj.push(r-b*y),C.yArrjF.push(Math.abs(s-r+o*y)),C.yArrjVal.push(this.barCtx.series[d][g])}return{pathTo:w,pathFrom:A}}},{key:\"getBarpaths\",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,g=t.j,u=t.w,f=new k(this.barCtx.ctx);(o=Array.isArray(o)?o[c]:o)||(o=0);var p=i,x=a;null!==(e=u.config.series[c].data[g])&&void 0!==e&&e.barHeightOffset&&(p=i-u.config.series[c].data[g].barHeightOffset/2,x=a+u.config.series[c].data[g].barHeightOffset);var b=o/2,v=p+b,m=p+x-b,y=(l[d][g]>=0?1:-1)*(n?-1:1);s+=.001+b*y,r+=.001-b*y;var w=f.move(s,v),A=f.move(s,v);u.globals.previousPaths.length>0&&(A=this.barCtx.getPreviousPath(c,g,!1));var S=f.line(s,m);if(w=w+f.line(r,v)+f.line(r,m)+S+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),A=A+f.line(s,v)+S+S+S+S+S+f.line(s,v)+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),\"none\"!==this.arrBorderRadius[c][g]&&(w=f.roundPathCorners(w,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).xArrj.push(r+b*y),C.xArrjF.push(Math.abs(s-r-o*y)),C.xArrjVal.push(this.barCtx.series[d][g])}return{pathTo:w,pathFrom:A}}},{key:\"checkZeroSeries\",value:function(t){for(var e=t.series,i=this.w,a=0;a2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:\"getYForValue\",value:function(t,e,i){var a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[i]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[i]:0)),a}},{key:\"getGoalValues\",value:function(t,e,i,a,s,r){var o=this,l=this.w,h=[],c=function(a,s){var l;h.push((n(l={},t,\"x\"===t?o.getXForValue(a,e,!1):o.getYForValue(a,i,r,!1)),n(l,\"attrs\",s),l))};if(l.globals.seriesGoals[a]&&l.globals.seriesGoals[a][s]&&Array.isArray(l.globals.seriesGoals[a][s])&&l.globals.seriesGoals[a][s].forEach((function(t){c(t.value,t)})),this.barCtx.barOptions.isDumbbell&&l.globals.seriesRange.length){var d=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:l.globals.colors,u={strokeHeight:\"x\"===t?0:l.globals.markers.size[a],strokeWidth:\"x\"===t?l.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:\"round\",strokeColor:Array.isArray(d[a])?d[a][0]:d[a]};c(l.globals.seriesRangeStart[a][s],u),c(l.globals.seriesRangeEnd[a][s],g(g({},u),{},{strokeColor:Array.isArray(d[a])?d[a][1]:d[a]}))}return h}},{key:\"drawGoalLine\",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new k(this.barCtx.ctx),l=n.group({className:\"apexcharts-bar-goals-groups\"});l.node.classList.add(\"apexcharts-element-hidden\"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(this.barCtx.w.globals.cuid,\")\"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){if(t.x>=-1&&t.x<=n.w.globals.gridWidth+1){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)}})):Array.isArray(s)&&s.forEach((function(t){if(t.y>=-1&&t.y<=n.w.globals.gridHeight+1){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)}})),l}},{key:\"drawBarShadow\",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,o=e.x1,n=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=n+i.barHeight,g=new k(this.barCtx.ctx),u=new m,f=g.move(o,d)+g.line(r,d)+g.line(l,c)+g.line(h,c)+g.line(o,d)+(\"around\"===s.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[realIndex][j]?\" Z\":\" z\");return g.drawPath({d:f,fill:u.shadeColor(.5,m.rgb2hex(a)),stroke:\"none\",strokeWidth:0,fillOpacity:1,classes:\"apexcharts-bar-shadows\"})}},{key:\"getZeroValueEncounters\",value:function(t){var e,i=t.i,a=t.j,s=this.w,r=0,o=0;return(s.config.plotOptions.bar.horizontal?s.globals.series.map((function(t,e){return e})):(null===(e=s.globals.columnSeries)||void 0===e?void 0:e.i.map((function(t){return t})))||[]).forEach((function(t){var e=s.globals.seriesPercent[t][a];e&&r++,t-1})),a=this.barCtx.columnGroupIndices,s=a.indexOf(i);return s<0&&(a.push(i),s=a.length-1),{groupIndex:i,columnGroupIndex:s}}}]),t}(),St=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!s.globals.isBarHorizontal&&s.globals.seriesRange.length&&s.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.xyRatios=a,null!==this.xyRatios&&(this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.invertedXRatio=a.invertedXRatio,this.invertedYRatio=a.invertedYRatio,this.baseLineY=a.baseLineY,this.baseLineInvertedY=a.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[];var r=new V(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex(\"desc\",[\"bar\",\"column\"]),this.columnGroupIndices=[];var o=r.getBarSeriesIndices(),n=new A(this.ctx);this.stackedSeriesTotals=n.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===o.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new At(this)}return s(t,[{key:\"draw\",value:function(t,e){var i=this.w,a=new k(this.ctx),s=new A(this.ctx,i);t=s.getLogSeries(t),this.series=t,this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var r=a.group({class:\"apexcharts-bar-series apexcharts-plot-series\"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn(\"WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts\");for(var o=0,n=0;o0&&(this.visibleI=this.visibleI+1);var w=0,S=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[b],this.translationsIndex=b);var C=this.translationsIndex;this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var L=this.barHelpers.initialPositions();f=L.y,w=L.barHeight,h=L.yDivision,d=L.zeroW,u=L.x,S=L.barWidth,l=L.xDivision,c=L.zeroH,this.horizontal||x.push(u+S/2);var P=a.group({class:\"apexcharts-datalabels\",\"data:realIndex\":b});i.globals.delayedElements.push({el:P.node}),P.node.classList.add(\"apexcharts-element-hidden\");var M=a.group({class:\"apexcharts-bar-goals-markers\"}),I=a.group({class:\"apexcharts-bar-shadows\"});i.globals.delayedElements.push({el:I.node}),I.node.classList.add(\"apexcharts-element-hidden\");for(var T=0;T0){var R=this.barHelpers.drawBarShadow({color:\"string\"==typeof Y&&-1===(null==Y?void 0:Y.indexOf(\"url\"))?Y:m.hexToRgba(i.globals.colors[o]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:X});R&&I.add(R)}this.pathArr.push(X);var F=this.barHelpers.drawGoalLine({barXPosition:X.barXPosition,barYPosition:X.barYPosition,goalX:X.goalX,goalY:X.goalY,barHeight:w,barWidth:S});F&&M.add(F),f=X.y,u=X.x,T>0&&x.push(u+S/2),p.push(f),this.renderSeries({realIndex:b,pathFill:Y,j:T,i:o,columnGroupIndex:v,pathFrom:X.pathFrom,pathTo:X.pathTo,strokeWidth:z,elSeries:y,x:u,y:f,series:t,barHeight:Math.abs(X.barHeight?X.barHeight:w),barWidth:Math.abs(X.barWidth?X.barWidth:S),elDataLabelsWrap:P,elGoalsMarkers:M,elBarShadows:I,visibleSeries:this.visibleI,type:\"bar\"})}i.globals.seriesXvalues[b]=x,i.globals.seriesYvalues[b]=p,r.add(y)}return r}},{key:\"renderSeries\",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.columnGroupIndex,n=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,g=t.y,u=t.y1,f=t.y2,p=t.series,x=t.barHeight,b=t.barWidth,v=t.barXPosition,m=t.barYPosition,y=t.elDataLabelsWrap,A=t.elGoalsMarkers,S=t.elBarShadows,C=t.visibleSeries,L=t.type,P=t.classes,M=this.w,I=new k(this.ctx);if(!a){var T=\"function\"==typeof M.globals.stroke.colors[e]?function(t){var e,i=M.config.stroke.colors;return Array.isArray(i)&&i.length>0&&((e=i[t])||(e=\"\"),\"function\"==typeof e)?e({value:M.globals.series[t][s],dataPointIndex:s,w:M}):e}(e):M.globals.stroke.colors[e];a=this.barOptions.distributed?M.globals.stroke.colors[s]:T}M.config.series[r].data[s]&&M.config.series[r].data[s].strokeColor&&(a=M.config.series[r].data[s].strokeColor),this.isNullValue&&(i=\"none\");var z=s/M.config.chart.animations.animateGradually.delay*(M.config.chart.animations.speed/M.globals.dataPoints)/2.4,X=I.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:M.config.stroke.lineCap,fill:i,animationDelay:z,initialSpeed:M.config.chart.animations.speed,dataChangeSpeed:M.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(L,\"-area \").concat(P),chartType:L});X.attr(\"clip-path\",\"url(#gridRectBarMask\".concat(M.globals.cuid,\")\"));var E=M.config.forecastDataPoints;E.count>0&&s>=M.globals.dataPoints-E.count&&(X.node.setAttribute(\"stroke-dasharray\",E.dashArray),X.node.setAttribute(\"stroke-width\",E.strokeWidth),X.node.setAttribute(\"fill-opacity\",E.fillOpacity)),void 0!==u&&void 0!==f&&(X.attr(\"data-range-y1\",u),X.attr(\"data-range-y2\",f)),new w(this.ctx).setSelectionFilter(X,e,s),c.add(X);var Y=new kt(this).handleBarDataLabels({x:d,y:g,y1:u,y2:f,i:r,j:s,series:p,realIndex:e,columnGroupIndex:o,barHeight:x,barWidth:b,barXPosition:v,barYPosition:m,renderedPath:X,visibleSeries:C});return null!==Y.dataLabels&&y.add(Y.dataLabels),Y.totalDataLabels&&y.add(Y.totalDataLabels),c.add(y),A&&c.add(A),S&&c.add(S),c}},{key:\"drawBarPaths\",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,g=i.j;if(c.globals.isXNumeric)e=(n=(c.globals.seriesX[d][g]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var u=0,f=0;c.globals.seriesPercent.forEach((function(t,e){t[g]&&u++,e0&&(a=this.seriesLen*a/u),e=n+a*this.visibleI,e-=a*f}else e=n+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][g],r)-r)/2),o=this.barHelpers.getXForValue(this.series[d][g],r);var p=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:o,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,i:d,j:g,w:c});return c.globals.isXNumeric||(n+=l),this.barHelpers.barBackground({j:g,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:p.pathTo,pathFrom:p.pathFrom,x1:r,x:o,y:n,goalX:this.barHelpers.getGoalValues(\"x\",r,null,d,g),barYPosition:e,barHeight:a}}},{key:\"drawColumnPaths\",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,o=t.barWidth,n=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,g=i.translationsIndex,u=i.i,f=i.j,p=i.bc;if(c.globals.isXNumeric){var x=this.getBarXForNumericXAxis({x:a,j:f,realIndex:d,barWidth:o});a=x.x,e=x.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var b=this.barHelpers.getZeroValueEncounters({i:u,j:f}),v=b.nonZeroColumns,m=b.zeroEncounters;v>0&&(o=this.seriesLen*o/v),e=a+o*this.visibleI,e-=o*m}else e=a+o*this.visibleI;s=this.barHelpers.getYForValue(this.series[u][f],n,g);var y=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:o,y1:n,y2:s,strokeWidth:l,isReversed:this.isReversed,series:this.series,realIndex:d,i:u,j:f,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:p,j:f,i:u,x1:e-l/2-o*this.visibleI,x2:o*this.seriesLen+l/2,elSeries:h}),{pathTo:y.pathTo,pathFrom:y.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues(\"y\",null,n,u,f,g),barXPosition:e,barWidth:o}}},{key:\"getBarXForNumericXAxis\",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,o=a;return r.globals.seriesX[a].length||(o=r.globals.maxValsInArrayIndex),r.globals.seriesX[o][s]&&(e=(r.globals.seriesX[o][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:\"getPreviousPath\",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),Ct=function(t){h(a,St);var e=o(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e){var i=this,a=this.w;this.graphics=new k(this.ctx),this.bar=new St(this.ctx,this.xyRatios);var s=new A(this.ctx,a);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),\"100%\"===a.config.chart.stackType&&(t=a.globals.comboCharts?e.map((function(t){return a.globals.seriesPercent[t]})):a.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var r=this.graphics.group({class:\"apexcharts-bar-series apexcharts-plot-series\"}),o=0,n=0,l=function(s,l){var h=void 0,c=void 0,d=void 0,u=void 0,f=a.globals.comboCharts?e[s]:s,p=i.barHelpers.getGroupIndex(f),x=p.groupIndex,b=p.columnGroupIndex;i.groupCtx=i[a.globals.seriesGroups[x]];var v=[],y=[],w=0;i.yRatio.length>1&&(i.yaxisIndex=a.globals.seriesYAxisReverseMap[f][0],w=f),i.isReversed=a.config.yaxis[i.yaxisIndex]&&a.config.yaxis[i.yaxisIndex].reversed;var k=i.graphics.group({class:\"apexcharts-series\",seriesName:m.escapeString(a.globals.seriesNames[f]),rel:s+1,\"data:realIndex\":f});i.ctx.series.addCollapsedClassToSeries(k,f);var A=i.graphics.group({class:\"apexcharts-datalabels\",\"data:realIndex\":f}),S=i.graphics.group({class:\"apexcharts-bar-goals-markers\"}),C=0,L=0,P=i.initialPositions(o,n,h,c,d,u,w);n=P.y,C=P.barHeight,c=P.yDivision,u=P.zeroW,o=P.x,L=P.barWidth,h=P.xDivision,d=P.zeroH,a.globals.barHeight=C,a.globals.barWidth=L,i.barHelpers.initializeStackedXYVars(i),1===i.groupCtx.prevY.length&&i.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(i.groupCtx.prevY[0]=i.groupCtx.prevY[0].map((function(){return d})),i.groupCtx.prevYF[0]=i.groupCtx.prevYF[0].map((function(){return 0})));for(var M=0;M0&&(Y=\"apexcharts-flip-x\"):\"bottom\"===i.barHelpers.arrBorderRadius[f][M]&&a.globals.series[f][M]>0&&(Y=\"apexcharts-flip-y\"),k=i.renderSeries({realIndex:f,pathFill:E,j:M,i:s,columnGroupIndex:b,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:I,elSeries:k,x:o,y:n,series:t,barHeight:C,barWidth:L,elDataLabelsWrap:A,elGoalsMarkers:S,type:\"bar\",visibleSeries:b,classes:Y})}a.globals.seriesXvalues[f]=v,a.globals.seriesYvalues[f]=y,i.groupCtx.prevY.push(i.groupCtx.yArrj),i.groupCtx.prevYF.push(i.groupCtx.yArrjF),i.groupCtx.prevYVal.push(i.groupCtx.yArrjVal),i.groupCtx.prevX.push(i.groupCtx.xArrj),i.groupCtx.prevXF.push(i.groupCtx.xArrjF),i.groupCtx.prevXVal.push(i.groupCtx.xArrjVal),r.add(k)},h=0,c=0;h1?l=(i=h.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:-1===String(d).indexOf(\"%\")?l=parseInt(d,10):l*=parseInt(d,10)/100,s=this.isReversed?this.baseLineY[o]:h.globals.gridHeight-this.baseLineY[o],t=h.globals.padHorizontal+(i-l)/2}var g=h.globals.barGroups.length||1;return{x:t,y:e,yDivision:a,xDivision:i,barHeight:n/g,barWidth:l/g,zeroH:s,zeroW:r}}},{key:\"drawStackedBarPaths\",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.columnGroupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,g=this.w,u=n+l*a,f=i.i,p=i.j,x=i.realIndex,b=i.translationsIndex,v=0,m=0;m0){var w=r;this.groupCtx.prevXVal[y-1][p]<0?w=this.series[f][p]>=0?this.groupCtx.prevX[y-1][p]+v-2*(this.isReversed?v:0):this.groupCtx.prevX[y-1][p]:this.groupCtx.prevXVal[y-1][p]>=0&&(w=this.series[f][p]>=0?this.groupCtx.prevX[y-1][p]:this.groupCtx.prevX[y-1][p]-v+2*(this.isReversed?v:0)),e=w}else e=r;o=null===this.series[f][p]?e:e+this.series[f][p]/this.invertedYRatio-2*(this.isReversed?this.series[f][p]/this.invertedYRatio:0);var k=this.barHelpers.getBarpaths({barYPosition:u,barHeight:a,x1:e,x2:o,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:f,j:p,w:g});return this.barHelpers.barBackground({j:p,i:f,y1:u,y2:a,elSeries:d}),n+=c,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalX:this.barHelpers.getGoalValues(\"x\",r,null,f,p,b),barXPosition:e,barYPosition:u,x:o,y:n}}},{key:\"drawStackedColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.columnGroupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,g=e.j,u=e.bc,f=e.realIndex,p=e.translationsIndex;if(c.globals.isXNumeric){var x=c.globals.seriesX[f][g];x||(x=0),i=(x-c.globals.minX)/this.xRatio-r/2*c.globals.barGroups.length}for(var b,v=i+n*r,m=0,y=0;y0&&!c.globals.isXNumeric||w>0&&c.globals.isXNumeric&&c.globals.seriesX[f-1][g]===c.globals.seriesX[f][g]){var k,A,S,C=Math.min(this.yRatio.length+1,f+1);if(void 0!==this.groupCtx.prevY[w-1]&&this.groupCtx.prevY[w-1].length)for(var L=1;L=0?S-m+2*(this.isReversed?m:0):S;break}if((null===(T=this.groupCtx.prevYVal[w-M])||void 0===T?void 0:T[g])>=0){A=this.series[d][g]>=0?S:S+m-2*(this.isReversed?m:0);break}}void 0===A&&(A=c.globals.gridHeight),b=null!==(k=this.groupCtx.prevYF[0])&&void 0!==k&&k.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,w).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:A}else b=o;a=this.series[d][g]?b-this.series[d][g]/this.yRatio[p]+2*(this.isReversed?this.series[d][g]/this.yRatio[p]:0):b;var z=this.barHelpers.getColumnPaths({barXPosition:v,barWidth:r,y1:b,y2:a,yRatio:this.yRatio[p],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:g,w:c});return this.barHelpers.barBackground({bc:u,j:g,i:d,x1:v,x2:r,elSeries:h}),{pathTo:z.pathTo,pathFrom:z.pathFrom,goalY:this.barHelpers.getGoalValues(\"y\",null,o,d,g),barXPosition:v,x:c.globals.isXNumeric?i:i+s,y:a}}}]),a}(),Lt=function(t){h(a,St);var e=o(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e,i){var a=this,s=this.w,r=new k(this.ctx),o=s.globals.comboCharts?e:s.config.chart.type,n=new N(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal;var l=new A(this.ctx,s);t=l.getLogSeries(t),this.series=t,this.yRatio=l.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var h=r.group({class:\"apexcharts-\".concat(o,\"-series apexcharts-plot-series\")}),c=function(e){a.isBoxPlot=\"boxPlot\"===s.config.chart.type||\"boxPlot\"===s.config.series[e].type;var o,l,c,d,u=void 0,f=void 0,p=[],x=[],b=s.globals.comboCharts?i[e]:e,v=a.barHelpers.getGroupIndex(b).columnGroupIndex,y=r.group({class:\"apexcharts-series\",seriesName:m.escapeString(s.globals.seriesNames[b]),rel:e+1,\"data:realIndex\":b});a.ctx.series.addCollapsedClassToSeries(y,b),t[e].length>0&&(a.visibleI=a.visibleI+1);var w,k,A=0;a.yRatio.length>1&&(a.yaxisIndex=s.globals.seriesYAxisReverseMap[b][0],A=b);var S=a.barHelpers.initialPositions();f=S.y,w=S.barHeight,l=S.yDivision,d=S.zeroW,u=S.x,k=S.barWidth,o=S.xDivision,c=S.zeroH,x.push(u+k/2);for(var C=r.group({class:\"apexcharts-datalabels\",\"data:realIndex\":b}),L=function(i){var r=a.barHelpers.getStrokeWidth(e,i,b),h=null,m={indexes:{i:e,j:i,realIndex:b,translationsIndex:A},x:u,y:f,strokeWidth:r,elSeries:y};h=a.isHorizontal?a.drawHorizontalBoxPaths(g(g({},m),{},{yDivision:l,barHeight:w,zeroW:d})):a.drawVerticalBoxPaths(g(g({},m),{},{xDivision:o,barWidth:k,zeroH:c})),f=h.y,u=h.x,i>0&&x.push(u+k/2),p.push(f),h.pathTo.forEach((function(o,l){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?h.color[l]:s.globals.stroke.colors[e],d=n.fillPath({seriesNumber:b,dataPointIndex:i,color:h.color[l],value:t[e][i]});a.renderSeries({realIndex:b,pathFill:d,lineFill:c,j:i,i:e,pathFrom:h.pathFrom,pathTo:o,strokeWidth:r,elSeries:y,x:u,y:f,series:t,columnGroupIndex:v,barHeight:w,barWidth:k,elDataLabelsWrap:C,visibleSeries:a.visibleI,type:s.config.chart.type})}))},P=0;Pb.c&&(d=!1);var y=Math.min(b.o,b.c),w=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(y=r,w=r):(y=r-y/p,w=r-w/p,v=r-b.h/p,m=r-b.l/p,A=r-b.m/p);var C=l.move(S,r),L=l.move(S+s/2,y);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,y)+l.line(S+s/2,y)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,y)+l.line(S+s,y)+l.line(S+s,A)+l.line(S,A)+l.line(S,y+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,m)+l.line(S+s-s/4,m)+l.line(S+s/4,m)+l.line(S+s/2,m)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,A)+\"z\"]:[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,y)+l.line(S+s/2,y)+l.line(S+s/2,m)+l.line(S+s/2,y)+l.line(S,y)+l.line(S,w-o/2)],L+=l.move(S,y),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:w,barXPosition:S,color:this.isBoxPlot?f:d?[g]:[u]}}},{key:\"drawHorizontalBoxPaths\",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new k(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,f=this.getOHLCValue(u,c),p=r,x=r,b=Math.min(f.o,f.c),v=Math.max(f.o,f.c),m=f.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var y=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,p=r+f.h/g,x=r+f.l/g,m=r+f.m/g);var w=l.move(r,y),A=l.move(b,y+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),w=[l.move(b,y)+l.line(b,y+s/2)+l.line(p,y+s/2)+l.line(p,y+s/2-s/4)+l.line(p,y+s/2+s/4)+l.line(p,y+s/2)+l.line(b,y+s/2)+l.line(b,y+s)+l.line(m,y+s)+l.line(m,y)+l.line(b+o/2,y),l.move(m,y)+l.line(m,y+s)+l.line(v,y+s)+l.line(v,y+s/2)+l.line(x,y+s/2)+l.line(x,y+s-s/4)+l.line(x,y+s/4)+l.line(x,y+s/2)+l.line(v,y+s/2)+l.line(v,y)+l.line(m,y)+\"z\"],A+=l.move(b,y),n.globals.isXNumeric||(i+=a),{pathTo:w,pathFrom:A,x:v,y:i,barYPosition:y,color:d}}},{key:\"getOHLCValue\",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),a}(),Pt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"checkColorRange\",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:\"getShadeColor\",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,\"treemap\"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new m;if(s.config.plotOptions[t].enableShades)if(\"dark\"===this.w.config.theme.mode){var c=h.shadeColor(-1*r,n.color);l=m.hexToRgba(m.isColorHex(c)?c:m.rgb2hex(c),s.config.fill.opacity)}else{var d=h.shadeColor(r,n.color);l=m.hexToRgba(m.isColorHex(d)?d:m.rgb2hex(d),s.config.fill.opacity)}return{color:l,colorProps:n}}},{key:\"determineColor\",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&\"treemap\"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,p(a.globals.series[e])),c=Math.max.apply(Math,p(a.globals.series[e]));r.distributed||\"heatmap\"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:\"calculateDataLabels\",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new k(this.ctx),c=new G(this.ctx),d=null;if(l.enabled){d=h.group({class:\"apexcharts-data-labels\"});var g=l.offsetX,u=l.offsetY,f=i+g,p=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:f,y:p,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:\"addListeners\",value:function(t){var e=new k(this.ctx);t.node.addEventListener(\"mouseenter\",e.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseleave\",e.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mousedown\",e.pathMouseDown.bind(this,t))}}]),t}(),Mt=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w,this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new Pt(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return s(t,[{key:\"draw\",value:function(t){var e=this.w,i=new k(this.ctx),a=i.group({class:\"apexcharts-heatmap\"});a.attr(\"clip-path\",\"url(#gridRectMask\".concat(e.globals.cuid,\")\"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:\"apexcharts-series apexcharts-heatmap-series\",seriesName:m.escapeString(e.globals.seriesNames[h]),rel:h+1,\"data:realIndex\":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new w(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,f=0;f-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=v.x,S=v.y,C=100*u/this.fullAngle+\"%\";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),g=i.centerY+r*Math.sin(l),u=i.centerX+r*Math.cos(c),f=i.centerY+r*Math.sin(c),p=m.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),x=m.polarToCartesian(i.centerX,i.centerY,i.donutSize,n),b=s>180?1:0,v=[\"M\",d,g,\"A\",r,r,0,b,1,u,f];return e=\"donut\"===i.chartType?[].concat(v,[\"L\",p.x,p.y,\"A\",i.donutSize,i.donutSize,0,b,0,x.x,x.y,\"L\",d,g,\"z\"]).join(\" \"):\"pie\"===i.chartType||\"polarArea\"===i.chartType?[].concat(v,[\"L\",i.centerX,i.centerY,\"L\",d,g]).join(\" \"):[].concat(v).join(\" \"),o.roundPathCorners(e,2*this.strokeWidth)}},{key:\"drawPolarElements\",value:function(t){var e=this.w,i=new $(this.ctx),a=new k(this.ctx),s=new It(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-label\"),n=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-value\");i=(0,t.value.formatter)(i,r),a||\"function\"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=this.donutDataLabels.total.label?t.name.formatter(e,l,r):\"\",null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:\"printDataLabelsInner\",value:function(t,e){var i=this.w,a=t.getAttribute(\"data:value\"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute(\"rel\"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(\".apexcharts-datalabels-group\");null!==r&&(r.style.opacity=1)}},{key:\"drawSpokes\",value:function(t){var e=this,i=this.w,a=new k(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n0&&(p=e.getPreviousPath(o));for(var x=0;x=10?t.x>0?(i=\"start\",a+=10):t.x<0&&(i=\"end\",a-=10):i=\"middle\",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:\"getPreviousPath\",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:\"getDataPointsPos\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:\"\",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:\"none\",strokeOpacity:h.opacity,classes:\"apexcharts-radialbar-area\"});if(h.dropShadow.enabled){var f=h.dropShadow;s.dropShadow(u,f)}l.add(u),u.attr(\"id\",\"apexcharts-radialbarTrack-\"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:\"drawArcs\",value:function(t){var e=this.w,i=new k(this.ctx),a=new N(this.ctx),s=new w(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||\"transparent\"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;if(this.radialDataLabels.show){var f=e.globals.dom.Paper.select(\".apexcharts-datalabels-group\").members[0];u=this.renderInnerDataLabels(f,this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})}\"back\"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var p=!1;e.config.plotOptions.radialBar.inverseOrder&&(p=!0);for(var x=p?t.series.length-1:0;p?x>=0:x100?100:t.series[x])/100,C=Math.round(this.totalAngle*S)+this.startAngle,L=void 0;e.globals.dataChanged&&(A=this.startAngle,L=Math.round(this.totalAngle*m.negToZero(e.globals.previousPaths[x])/100)+A),Math.abs(C)+Math.abs(y)>360&&(C-=.01),Math.abs(L)+Math.abs(A)>360&&(L-=.01);var P=C-y,M=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[x]:e.config.stroke.dashArray,I=i.drawPath({d:\"\",stroke:v,strokeWidth:o,fill:\"none\",fillOpacity:e.config.fill.opacity,classes:\"apexcharts-radialbar-area apexcharts-radialbar-slice-\"+x,strokeDashArray:M});if(k.setAttrs(I.node,{\"data:angle\":P,\"data:value\":t.series[x]}),e.config.chart.dropShadow.enabled){var T=e.config.chart.dropShadow;s.dropShadow(I,T,x)}if(s.setSelectionFilter(I,0,x),this.addListeners(I,this.radialDataLabels),b.add(I),I.attr({index:0,j:x}),this.barLabels.enabled){var z=m.polarToCartesian(t.centerX,t.centerY,t.size,y),X=this.barLabels.formatter(e.globals.seriesNames[x],{seriesIndex:x,w:e}),E=[\"apexcharts-radialbar-label\"];this.barLabels.onClick||E.push(\"apexcharts-no-click\");var Y=this.barLabels.useSeriesColors?e.globals.colors[x]:e.config.chart.foreColor;Y||(Y=e.config.chart.foreColor);var R=z.x+this.barLabels.offsetX,F=z.y+this.barLabels.offsetY,D=i.drawText({x:R,y:F,text:X,textAnchor:\"end\",dominantBaseline:\"middle\",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:Y,cssClass:E.join(\" \")});D.on(\"click\",this.onBarLabelClick),D.attr({rel:x+1}),0!==y&&D.attr({\"transform-origin\":\"\".concat(R,\" \").concat(F),transform:\"rotate(\".concat(y,\" 0 0)\")}),b.add(D)}var H=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(H=e.config.chart.animations.speed),e.globals.dataChanged&&(H=e.config.chart.animations.dynamicAnimation.speed),this.animDur=H/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(I,{centerX:t.centerX,centerY:t.centerY,endAngle:C,startAngle:y,prevEndAngle:L,prevStartAngle:A,size:t.size,i:x,totalItems:2,animBeginArr:this.animBeginArr,dur:H,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:\"drawHollow\",value:function(t){var e=new k(this.ctx).drawCircle(2*t.size);return e.attr({class:\"apexcharts-radialbar-hollow\",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:\"drawHollowImage\",value:function(t,e,i,a){var s=this.w,r=new N(this.ctx),o=m.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:\"pattern\".concat(s.globals.cuid).concat(o)}),a=\"url(#pattern\".concat(s.globals.cuid).concat(o,\")\");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:\"getStrokeWidth\",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:\"onBarLabelClick\",value:function(t){var e=parseInt(t.target.getAttribute(\"rel\"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),r}(),Et=function(t){h(a,St);var e=o(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e){var i=this.w,a=new k(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var s=a.group({class:\"apexcharts-rangebar-series apexcharts-plot-series\"}),r=0;r0&&(this.visibleI=this.visibleI+1);var x=0,b=0,v=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[u][0],v=u);var y=this.barHelpers.initialPositions();d=y.y,h=y.zeroW,c=y.x,b=y.barWidth,x=y.barHeight,o=y.xDivision,n=y.yDivision,l=y.zeroH;for(var w=a.group({class:\"apexcharts-datalabels\",\"data:realIndex\":u}),A=a.group({class:\"apexcharts-rangebar-goals-markers\"}),S=0;S0}));return this.isHorizontal?(a=g.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+n*this.visibleI+h*b,v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(f)>-1&&(a=(n=d.barHeight/u.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+n*(this.visibleI+u.indexOf(f))+h*b)):(b>-1&&!g.globals.timescaleLabels.length&&(s=g.config.plotOptions.bar.rangeBarGroupRows?o+c*b:o+l*this.visibleI+c*b),v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(f)>-1&&(s=(l=d.barWidth/u.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+u.indexOf(f))+c*b)),{barYPosition:a,barXPosition:s,barHeight:n,barWidth:l}}},{key:\"drawRangeColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,o=t.zeroH,n=this.w,l=e.i,h=e.j,c=e.realIndex,d=e.translationsIndex,g=this.yRatio[d],u=this.getRangeValue(c,h),f=Math.min(u.start,u.end),p=Math.max(u.start,u.end);void 0===this.series[l][h]||null===this.series[l][h]?f=o:(f=o-f/g,p=o-p/g);var x=Math.abs(p-f),b=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:f,y2:p,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:c,i:c,j:h,w:n});if(n.globals.isXNumeric){var v=this.getBarXForNumericXAxis({x:i,j:h,realIndex:c,barWidth:s});i=v.x,r=v.barXPosition}else i+=a;return{pathTo:b.pathTo,pathFrom:b.pathFrom,barHeight:x,x:i,y:u.start<0&&u.end<0?f:p,goalY:this.barHelpers.getGoalValues(\"y\",null,o,l,h,d),barXPosition:r}}},{key:\"preventBarOverflow\",value:function(t){var e=this.w;return t<0&&(t=0),t>e.globals.gridWidth&&(t=e.globals.gridWidth),t}},{key:\"drawRangeBarPaths\",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=e.realIndex,d=e.j,g=this.preventBarOverflow(l+a/this.invertedYRatio),u=this.preventBarOverflow(l+s/this.invertedYRatio),f=this.getRangeValue(c,d),p=Math.abs(u-g),x=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:g,x2:u,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:c,realIndex:c,j:d,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:x.pathTo,pathFrom:x.pathFrom,barWidth:p,x:f.start<0&&f.end<0?g:u,goalX:this.barHelpers.getGoalValues(\"x\",l,null,c,d),y:i}}},{key:\"getRangeValue\",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),a}(),Yt=function(){function t(e){i(this,t),this.w=e.w,this.lineCtx=e}return s(t,[{key:\"sameValueSeriesFix\",value:function(t,e){var i=this.w;if((\"gradient\"===i.config.fill.type||\"gradient\"===i.config.fill.type[t])&&new A(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:\"calculatePoints\",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(m.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(m.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(m.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:\"checkPreviousPaths\",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&(\"line\"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):\"area\"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:\"determineFirstPrevY\",value:function(t){var e,i,a,s=t.i,r=t.realIndex,o=t.series,n=t.prevY,l=t.lineYPosition,h=t.translationsIndex,c=this.w,d=c.config.chart.stacked&&!c.globals.comboCharts||c.config.chart.stacked&&c.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[r])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[r])||void 0===i?void 0:i.type));if(void 0!==(null===(a=o[s])||void 0===a?void 0:a[0]))n=(l=d&&s>0?this.lineCtx.prevSeriesY[s-1][0]:this.lineCtx.zeroY)-o[s][0]/this.lineCtx.yRatio[h]+2*(this.lineCtx.isReversed?o[s][0]/this.lineCtx.yRatio[h]:0);else if(d&&s>0&&void 0===o[s][0])for(var g=s-1;g>=0;g--)if(null!==o[g][0]&&void 0!==o[g][0]){n=l=this.lineCtx.prevSeriesY[g][0];break}return{prevY:n,lineYPosition:l}}}]),t}(),Rt=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Ht(i,a),r=1,o=t.length-1;r9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=o;h++)s=(t[Math.min(o,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),n.push([s||0,r[h]*s||0]);return n},Ft=function(t){var e=Rt(t),i=t[1],a=t[0],s=[],r=e[1],o=e[0];s.push(a,[a[0]+o[0],a[1]+o[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var n=2,l=e.length;n1&&a[1].length<6){var s=a[0].length;a[1]=[2*a[0][s-2]-a[0][s-4],2*a[0][s-1]-a[0][s-3]].concat(a[1])}a[0]=a[0].slice(-2)}return a};function Ht(t,e){return(e[1]-t[1])/(e[0]-t[0])}var Ot=function(){function t(e,a,s){i(this,t),this.ctx=e,this.w=e.w,this.xyRatios=a,this.pointsChart=!(\"bubble\"!==this.w.config.chart.type&&\"scatter\"!==this.w.config.chart.type)||s,this.scatter=new B(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new Yt(this),this.markers=new W(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return s(t,[{key:\"draw\",value:function(t,e,i,a){var s,r=this.w,o=new k(this.ctx),n=r.globals.comboCharts?e:r.config.chart.type,l=o.group({class:\"apexcharts-\".concat(n,\"-series apexcharts-plot-series\")}),h=new A(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio),this.prevSeriesY=[];for(var c=[],d=0;d1?u:0;this._initSerieVariables(t,d,u);var p=[],x=[],b=[],v=r.globals.padHorizontal+this.categoryAxisCorrection;this.ctx.series.addCollapsedClassToSeries(this.elSeries,u),r.globals.isXNumeric&&r.globals.seriesX.length>0&&(v=(r.globals.seriesX[u][0]-r.globals.minX)/this.xRatio),b.push(v);var m,y=v,w=void 0,S=y,C=this.zeroY,L=this.zeroY;C=this.lineHelpers.determineFirstPrevY({i:d,realIndex:u,series:t,prevY:C,lineYPosition:0,translationsIndex:f}).prevY,\"monotoneCubic\"===r.config.stroke.curve&&null===t[d][0]?p.push(null):p.push(C),m=C;\"rangeArea\"===n&&(w=L=this.lineHelpers.determineFirstPrevY({i:d,realIndex:u,series:a,prevY:L,lineYPosition:0,translationsIndex:f}).prevY,x.push(null!==p[0]?L:null));var P=this._calculatePathsFrom({type:n,series:t,i:d,realIndex:u,translationsIndex:f,prevX:S,prevY:C,prevY2:L}),M=[p[0]],I=[x[0]],T={type:n,series:t,realIndex:u,translationsIndex:f,i:d,x:v,y:1,pX:y,pY:m,pathsFrom:P,linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:b,yArrj:p,y2Arrj:x,seriesRangeEnd:a},z=this._iterateOverDataPoints(g(g({},T),{},{iterations:\"rangeArea\"===n?t[d].length-1:void 0,isRangeStart:!0}));if(\"rangeArea\"===n){for(var X=this._calculatePathsFrom({series:a,i:d,realIndex:u,prevX:S,prevY:L}),E=this._iterateOverDataPoints(g(g({},T),{},{series:a,xArrj:[v],yArrj:M,y2Arrj:I,pY:w,areaPaths:z.areaPaths,pathsFrom:X,iterations:a[d].length-1,isRangeStart:!1})),Y=z.linePaths.length/2,R=0;R=0;F--)l.add(c[F]);else for(var D=0;D1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[i],r=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[r]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[r]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||\"end\"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:\"apexcharts-series\",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:m.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:\"apexcharts-series-markers-wrap\",\"data:realIndex\":i}),this.elDataLabelsWrap=s.group({class:\"apexcharts-datalabels\",\"data:realIndex\":i});var o=t[e].length===a.globals.dataPoints;this.elSeries.attr({\"data:longestSeries\":o,rel:e+1,\"data:realIndex\":i}),this.appendPathFrom=!0}},{key:\"_calculatePathsFrom\",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.translationsIndex,c=t.prevX,d=t.prevY,g=t.prevY2,u=this.w,f=new k(this.ctx);if(null===o[n][0]){for(var p=0;p0){var x=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=x.pathFromLine,s=x.pathFromArea}return{prevX:c,prevY:d,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:\"_handlePaths\",value:function(t){var e=t.type,i=t.realIndex,a=t.i,s=t.paths,r=this.w,o=new k(this.ctx),n=new N(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var l=r.config.forecastDataPoints;if(l.count>0&&\"rangeArea\"!==e){var h=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-l.count-1],c=o.drawRect(h,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(c.node);var d=o.drawRect(0,0,h,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(d.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var u={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(e)};if(\"area\"===e)for(var f=n.fillPath({seriesNumber:i}),p=0;p0&&\"rangeArea\"!==e){var S=o.renderPaths(w);S.node.setAttribute(\"stroke-dasharray\",l.dashArray),l.strokeWidth&&S.node.setAttribute(\"stroke-width\",l.strokeWidth),this.elSeries.add(S),S.attr(\"clip-path\",\"url(#forecastMask\".concat(r.globals.cuid,\")\")),A.attr(\"clip-path\",\"url(#nonForecastMask\".concat(r.globals.cuid,\")\"))}}}}},{key:\"_iterateOverDataPoints\",value:function(t){var e,i,a=this,s=t.type,r=t.series,o=t.iterations,n=t.realIndex,l=t.translationsIndex,h=t.i,c=t.x,d=t.y,g=t.pX,u=t.pY,f=t.pathsFrom,p=t.linePaths,x=t.areaPaths,b=t.seriesIndex,v=t.lineYPosition,y=t.xArrj,w=t.yArrj,A=t.y2Arrj,S=t.isRangeStart,C=t.seriesRangeEnd,L=this.w,P=new k(this.ctx),M=this.yRatio,I=f.prevY,T=f.linePath,z=f.areaPath,X=f.pathFromLine,E=f.pathFromArea,Y=m.isNumber(L.globals.minYArr[n])?L.globals.minYArr[n]:L.globals.minY;o||(o=L.globals.dataPoints>1?L.globals.dataPoints-1:L.globals.dataPoints);var R=function(t,e){return e-t/M[l]+2*(a.isReversed?t/M[l]:0)},F=d,D=L.config.chart.stacked&&!L.globals.comboCharts||L.config.chart.stacked&&L.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[n])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[n])||void 0===i?void 0:i.type)),H=L.config.stroke.curve;Array.isArray(H)&&(H=Array.isArray(b)?H[b[h]]:H[h]);for(var O,N=0,W=0;W0&&L.globals.collapsedSeries.length0;e--){if(!(L.globals.collapsedSeriesIndices.indexOf((null==b?void 0:b[e])||e)>-1))return e;e--}return 0}(h-1)][W+1]}else v=this.zeroY;else v=this.zeroY;B?d=R(Y,v):(d=R(r[h][W+1],v),\"rangeArea\"===s&&(F=R(C[h][W+1],v))),y.push(c),!B||\"smooth\"!==L.config.stroke.curve&&\"monotoneCubic\"!==L.config.stroke.curve?(w.push(d),A.push(F)):(w.push(null),A.push(null));var V=this.lineHelpers.calculatePoints({series:r,x:c,y:d,realIndex:n,i:h,j:W,prevY:I}),j=this._createPaths({type:s,series:r,i:h,realIndex:n,j:W,x:c,y:d,y2:F,xArrj:y,yArrj:w,y2Arrj:A,pX:g,pY:u,pathState:N,segmentStartX:O,linePath:T,areaPath:z,linePaths:p,areaPaths:x,curve:H,isRangeStart:S});x=j.areaPaths,p=j.linePaths,g=j.pX,u=j.pY,N=j.pathState,O=j.segmentStartX,z=j.areaPath,T=j.linePath,!this.appendPathFrom||\"monotoneCubic\"===H&&\"rangeArea\"===s||(X+=P.line(c,this.zeroY),E+=P.line(c,this.zeroY)),this.handleNullDataPoints(r,V,h,W,n),this._handleMarkersAndLabels({type:s,pointsPos:V,i:h,j:W,realIndex:n,isRangeStart:S})}return{yArrj:w,xArrj:y,pathFromArea:E,areaPaths:x,pathFromLine:X,linePaths:p,linePath:T,areaPath:z}}},{key:\"_handleMarkersAndLabels\",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new G(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add(\"apexcharts-element-hidden\");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:\"_createPaths\",value:function(t){var e=t.type,i=t.series,a=t.i;t.realIndex;var s,r=t.j,o=t.x,n=t.y,l=t.xArrj,h=t.yArrj,c=t.y2,d=t.y2Arrj,g=t.pX,u=t.pY,f=t.pathState,p=t.segmentStartX,x=t.linePath,b=t.areaPath,v=t.linePaths,m=t.areaPaths,y=t.curve,w=t.isRangeStart,A=new k(this.ctx),S=this.areaBottomY,C=\"rangeArea\"===e,L=\"rangeArea\"===e&&w;switch(y){case\"monotoneCubic\":var P=w?h:d;switch(f){case 0:if(null===P[r+1])break;f=1;case 1:if(!(C?l.length===i[a].length:r===i[a].length-2))break;case 2:var M=w?l:l.slice().reverse(),I=w?P:P.slice().reverse(),T=(s=I,M.map((function(t,e){return[t,s[e]]})).filter((function(t){return null!==t[1]}))),z=T.length>1?Ft(T):T,X=[];C&&(L?m=T:X=m.reverse());var E=0,Y=0;if(function(t,e){for(var i=function(t){var e=[],i=0;return t.forEach((function(t){null!==t?i++:i>0&&(e.push(i),i=0)})),i>0&&e.push(i),e}(t),a=[],s=0,r=0;s4?(e+=\"C\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]),e+=\", \".concat(a[4],\", \").concat(a[5])):s>2&&(e+=\"S\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]))}return e}(t),i=Y,a=(Y+=t.length)-1;L?x=A.move(T[i][0],T[i][1])+e:C?x=A.move(X[i][0],X[i][1])+A.line(T[i][0],T[i][1])+e+A.line(X[a][0],X[a][1]):(x=A.move(T[i][0],T[i][1])+e,b=x+A.line(T[a][0],S)+A.line(T[i][0],S)+\"z\",m.push(b)),v.push(x)})),C&&E>1&&!L){var R=v.slice(E).reverse();v.splice(E),R.forEach((function(t){return v.push(t)}))}f=0}break;case\"smooth\":var F=.35*(o-g);if(null===i[a][r])f=0;else switch(f){case 0:if(p=g,x=L?A.move(g,d[r])+A.line(g,u):A.move(g,u),b=A.move(g,u),null===i[a][r+1]){v.push(x),m.push(b);break}if(f=1,r=i[a].length-2&&(L&&(x+=A.curve(o,n,o,n,o,c)+A.move(o,c)),b+=A.curve(o,n,o,n,o,S)+A.line(p,S)+\"z\",v.push(x),m.push(b),f=-1)}}g=o,u=n;break;default:var O=function(t,e,i){var a=[];switch(t){case\"stepline\":a=A.line(e,null,\"H\")+A.line(null,i,\"V\");break;case\"linestep\":a=A.line(null,i,\"V\")+A.line(e,null,\"H\");break;case\"straight\":a=A.line(e,i)}return a};if(null===i[a][r])f=0;else switch(f){case 0:if(p=g,x=L?A.move(g,d[r])+A.line(g,u):A.move(g,u),b=A.move(g,u),null===i[a][r+1]){v.push(x),m.push(b);break}if(f=1,r=i[a].length-2&&(L&&(x+=A.line(o,c)),b+=A.line(o,S)+A.line(p,S)+\"z\",v.push(x),m.push(b),f=-1)}}g=o,u=n}return{linePaths:v,areaPaths:m,pX:g,pY:u,pathState:f,segmentStartX:p,linePath:x,areaPath:b}}},{key:\"handleNullDataPoints\",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.strokeWidth-r.config.markers.strokeWidth/2;o>0||(o=0);var n=this.markers.plotChartMarkers(e,s,a+1,o,!0);null!==n&&this.elPointsMain.add(n)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute(\"transform\",\"rotate(-90 \".concat(h.x,\" \").concat(h.y,\") translate(\").concat(l.height/3,\")\"))}}},{key:\"truncateLabels\",value:function(t,e,i,a,s,r){var o=new k(this.ctx),n=o.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=o.getTextBasedOnMaxWidth({text:t,maxWidth:n,fontSize:e});return t.length!==l.length&&n/e<5?\"\":l}},{key:\"animateTreemap\",value:function(t,e,i,a){var s=new y(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Gt=86400,Vt=10/Gt,jt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return s(t,[{key:\"calculateTimeScaleTicks\",value:function(t,e){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new L(this.ctx),r=(e-t)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r5e4&&(a.globals.disableZoomOut=!0);var o=s.getTimeUnitsfromTimestamp(t,e,this.utc),n=a.globals.gridWidth/r,l=n/24,h=l/60,c=h/60,d=Math.floor(24*r),u=Math.floor(1440*r),f=Math.floor(r*Gt),p=Math.floor(r),x=Math.floor(r/30),b=Math.floor(r/365),v={minMillisecond:o.minMillisecond,minSecond:o.minSecond,minMinute:o.minMinute,minHour:o.minHour,minDate:o.minDate,minMonth:o.minMonth,minYear:o.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:n,hoursWidthOnXAxis:l,minutesWidthOnXAxis:h,secondsWidthOnXAxis:c,numberOfSeconds:f,numberOfMinutes:u,numberOfHours:d,numberOfDays:p,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case\"years\":this.generateYearScale(m);break;case\"months\":case\"half_year\":this.generateMonthScale(m);break;case\"months_days\":case\"months_fortnight\":case\"days\":case\"week_days\":this.generateDayScale(m);break;case\"hours\":this.generateHourScale(m);break;case\"minutes_fives\":case\"minutes\":this.generateMinuteScale(m);break;case\"seconds_tens\":case\"seconds_fives\":case\"seconds\":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return\"month\"===t.unit?g(g({},e),{},{day:1,value:t.value+1}):\"day\"===t.unit||\"hour\"===t.unit?g(g({},e),{},{value:t.value}):\"minute\"===t.unit?g(g({},e),{},{value:t.value,minute:t.value}):\"second\"===t.unit?g(g({},e),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,s=Math.ceil(a.globals.gridWidth/120),r=t.value;void 0!==a.config.xaxis.tickAmount&&(s=a.config.xaxis.tickAmount),y.length>s&&(e=Math.floor(y.length/s));var o=!1,n=!1;switch(i.tickInterval){case\"years\":\"year\"===t.unit&&(o=!0);break;case\"half_year\":e=7,\"year\"===t.unit&&(o=!0);break;case\"months\":e=1,\"year\"===t.unit&&(o=!0);break;case\"months_fortnight\":e=15,\"year\"!==t.unit&&\"month\"!==t.unit||(o=!0),30===r&&(n=!0);break;case\"months_days\":e=10,\"month\"===t.unit&&(o=!0),30===r&&(n=!0);break;case\"week_days\":e=8,\"month\"===t.unit&&(o=!0);break;case\"days\":e=1,\"month\"===t.unit&&(o=!0);break;case\"hours\":\"day\"===t.unit&&(o=!0);break;case\"minutes_fives\":case\"seconds_fives\":r%5!=0&&(n=!0);break;case\"seconds_tens\":r%10!=0&&(n=!0)}if(\"hours\"===i.tickInterval||\"minutes_fives\"===i.tickInterval||\"seconds_tens\"===i.tickInterval||\"seconds_fives\"===i.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:\"recalcDimensionsBasedOnFormat\",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ct(this.ctx).plotCoords()}},{key:\"determineInterval\",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval=\"years\";break;case t>800:this.tickInterval=\"half_year\";break;case t>180:this.tickInterval=\"months\";break;case t>90:this.tickInterval=\"months_fortnight\";break;case t>60:this.tickInterval=\"months_days\";break;case t>30:this.tickInterval=\"week_days\";break;case t>2:this.tickInterval=\"days\";break;case e>2.4:this.tickInterval=\"hours\";break;case i>15:this.tickInterval=\"minutes_fives\";break;case i>5:this.tickInterval=\"minutes\";break;case i>1:this.tickInterval=\"seconds_tens\";break;case 60*i>20:this.tickInterval=\"seconds_fives\";break;default:this.tickInterval=\"seconds\"}}},{key:\"generateYearScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new L(this.ctx),h=\"year\";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:m.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:m.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=m.monthMod(a+1);var g=s+d,u=m.monthMod(n),f=n;0===n&&(c=\"year\",f=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:f,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:m.monthMod(a)});for(var p=n+1,x=l,b=0,v=1;bo.determineDaysOfMonths(e+1,i)?(h=1,n=\"month\",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=m.monthMod(e.minMonth),n=\"month\",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:m.monthMod(u),day:h});for(var f=d,p=0;pn.determineDaysOfMonths(e+1,s)&&(p=1,e+=1),{month:e,date:p}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,f=u;60===d&&(g=0,f=u=e.minHour);var p=i;f>=24&&(f=0,p+=1,l=\"day\");var x=h(p,a).month;x=c(p,x),this.timeScaleArray.push({position:g,value:u,unit:l,day:p,hour:f,year:s,month:m.monthMod(x)}),f++;for(var b=g,v=0;v=24)f=0,l=\"day\",x=h(p+=1,x).month,x=c(p,x);var y=this._getYear(s,x,0);b=60*r+b;var w=0===f?p:f;this.timeScaleArray.push({position:b,value:w,unit:l,hour:f,day:p,year:y,month:m.monthMod(x)}),f++}}},{key:\"generateMinuteScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,f=n,p=s,x=(60-i-e/1e3)*h,b=0;b=60&&(d=0,24===(p+=1)&&(p=0)),this.timeScaleArray.push({position:x,value:d,unit:\"minute\",hour:p,minute:d,day:g,year:this._getYear(f,u,0),month:m.monthMod(u)}),x+=l,d++}},{key:\"generateSecondScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,f=n,p=s,x=(1e3-e)/1e3*l,b=0;b=60&&(c=0,++d>=60&&(d=0,24===++p&&(p=0))),this.timeScaleArray.push({position:x,value:c,unit:\"second\",hour:p,minute:d,second:c,day:g,year:this._getYear(f,u,0),month:m.monthMod(u)}),x+=l,c++}},{key:\"createRawDateString\",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+=\"-\"+(\"0\"+t.month.toString()).slice(-2),\"day\"===t.unit?i+=\"day\"===t.unit?\"-\"+(\"0\"+e).slice(-2):\"-01\":i+=\"-\"+(\"0\"+(t.day?t.day:\"1\")).slice(-2),\"hour\"===t.unit?i+=\"hour\"===t.unit?\"T\"+(\"0\"+e).slice(-2):\"T00\":i+=\"T\"+(\"0\"+(t.hour?t.hour:\"0\")).slice(-2),\"minute\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":\"+(t.minute?(\"0\"+t.minute).slice(-2):\"00\"),\"second\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":00\",this.utc&&(i+=\".000Z\"),i}},{key:\"formatDates\",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new L(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n=\"dd MMM\",l=i.config.xaxis.labels.datetimeFormatter;\"year\"===t.unit&&(n=l.year),\"month\"===t.unit&&(n=l.month),\"day\"===t.unit&&(n=l.day),\"hour\"===t.unit&&(n=l.hour),\"minute\"===t.unit&&(n=l.minute),\"second\"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:\"removeOverlappingTS\",value:function(t){var e,i=this,a=new k(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:\"_getYear\",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),_t=function(){function t(e,a){i(this,t),this.ctx=a,this.w=a.w,this.el=e}return s(t,[{key:\"setupElements\",value:function(){var t=this.w,e=t.globals,i=t.config,a=i.chart.type;e.axisCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\",\"radar\",\"heatmap\",\"treemap\"].includes(a),e.xyCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\"].includes(a),e.isBarHorizontal=[\"bar\",\"rangeBar\",\"boxPlot\"].includes(a)&&i.plotOptions.bar.horizontal,e.chartClass=\".apexcharts\".concat(e.chartID),e.dom.baseEl=this.el,e.dom.elWrap=document.createElement(\"div\"),k.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:\"apexcharts-canvas \".concat(e.chartClass.substring(1))}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=new window.SVG.Doc(e.dom.elWrap),e.dom.Paper.attr({class:\"apexcharts-svg\",\"xmlns:data\":\"ApexChartsNS\",transform:\"translate(\".concat(i.chart.offsetX,\", \").concat(i.chart.offsetY,\")\")}),e.dom.Paper.node.style.background=\"dark\"!==i.theme.mode||i.chart.background?\"light\"!==i.theme.mode||i.chart.background?i.chart.background:\"#fff\":\"#424242\",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,\"foreignObject\"),k.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement(\"div\"),e.dom.elLegendWrap.classList.add(\"apexcharts-legend\"),e.dom.elLegendWrap.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),e.dom.elLegendForeign.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:\"apexcharts-inner apexcharts-graphical\"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:\"plotChartType\",value:function(t,e){var i=this.w,a=this.ctx,s=i.config,r=i.globals,o={line:{series:[],i:[]},area:{series:[],i:[]},scatter:{series:[],i:[]},bubble:{series:[],i:[]},column:{series:[],i:[]},candlestick:{series:[],i:[]},boxPlot:{series:[],i:[]},rangeBar:{series:[],i:[]},rangeArea:{series:[],seriesRangeEnd:[],i:[]}},n=s.chart.type||\"line\",l=null,h=0;r.series.forEach((function(e,a){var s=t[a].type||n;o[s]?(\"rangeArea\"===s?(o[s].series.push(r.seriesRangeStart[a]),o[s].seriesRangeEnd.push(r.seriesRangeEnd[a])):o[s].series.push(e),o[s].i.push(a),\"column\"!==s&&\"bar\"!==s||(i.globals.columnSeries=o.column)):[\"heatmap\",\"treemap\",\"pie\",\"donut\",\"polarArea\",\"radialBar\",\"radar\"].includes(s)?l=s:\"bar\"===s?(o.column.series.push(e),o.column.i.push(a)):console.warn(\"You have specified an unrecognized series type (\".concat(s,\").\")),n!==s&&\"scatter\"!==s&&h++})),h>0&&(l&&console.warn(\"Chart or series type \".concat(l,\" cannot appear with other chart or series types.\")),o.column.series.length>0&&s.plotOptions.bar.horizontal&&(h-=o.column.series.length,o.column={series:[],i:[]},i.globals.columnSeries={series:[],i:[]},console.warn(\"Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`\"))),r.comboCharts||(r.comboCharts=h>0);var c=new Ot(a,e),d=new Lt(a,e);a.pie=new Tt(a);var g=new Xt(a);a.rangeBar=new Et(a,e);var u=new zt(a),f=[];if(r.comboCharts){var x,b,v=new A(a);if(o.area.series.length>0)(x=f).push.apply(x,p(v.drawSeriesByGroup(o.area,r.areaGroups,\"area\",c)));if(o.column.series.length>0)if(s.chart.stacked){var m=new Ct(a,e);f.push(m.draw(o.column.series,o.column.i))}else a.bar=new St(a,e),f.push(a.bar.draw(o.column.series,o.column.i));if(o.rangeArea.series.length>0&&f.push(c.draw(o.rangeArea.series,\"rangeArea\",o.rangeArea.i,o.rangeArea.seriesRangeEnd)),o.line.series.length>0)(b=f).push.apply(b,p(v.drawSeriesByGroup(o.line,r.lineGroups,\"line\",c)));if(o.candlestick.series.length>0&&f.push(d.draw(o.candlestick.series,\"candlestick\",o.candlestick.i)),o.boxPlot.series.length>0&&f.push(d.draw(o.boxPlot.series,\"boxPlot\",o.boxPlot.i)),o.rangeBar.series.length>0&&f.push(a.rangeBar.draw(o.rangeBar.series,o.rangeBar.i)),o.scatter.series.length>0){var y=new Ot(a,e,!0);f.push(y.draw(o.scatter.series,\"scatter\",o.scatter.i))}if(o.bubble.series.length>0){var w=new Ot(a,e,!0);f.push(w.draw(o.bubble.series,\"bubble\",o.bubble.i))}}else switch(s.chart.type){case\"line\":f=c.draw(r.series,\"line\");break;case\"area\":f=c.draw(r.series,\"area\");break;case\"bar\":if(s.chart.stacked)f=new Ct(a,e).draw(r.series);else a.bar=new St(a,e),f=a.bar.draw(r.series);break;case\"candlestick\":f=new Lt(a,e).draw(r.series,\"candlestick\");break;case\"boxPlot\":f=new Lt(a,e).draw(r.series,s.chart.type);break;case\"rangeBar\":f=a.rangeBar.draw(r.series);break;case\"rangeArea\":f=c.draw(r.seriesRangeStart,\"rangeArea\",void 0,r.seriesRangeEnd);break;case\"heatmap\":f=new Mt(a,e).draw(r.series);break;case\"treemap\":f=new Bt(a,e).draw(r.series);break;case\"pie\":case\"donut\":case\"polarArea\":f=a.pie.draw(r.series);break;case\"radialBar\":f=g.draw(r.series);break;case\"radar\":f=u.draw(r.series);break;default:f=c.draw(r.series)}return f}},{key:\"setSVGDimensions\",value:function(){var t=this.w,e=t.globals,i=t.config;i.chart.width=i.chart.width||\"100%\",i.chart.height=i.chart.height||\"auto\",e.svgWidth=i.chart.width,e.svgHeight=i.chart.height;var a=m.getDimensions(this.el),s=i.chart.width.toString().split(/[0-9]+/g).pop();\"%\"===s?m.isNumber(a[0])&&(0===a[0].width&&(a=m.getDimensions(this.el.parentNode)),e.svgWidth=a[0]*parseInt(i.chart.width,10)/100):\"px\"!==s&&\"\"!==s||(e.svgWidth=parseInt(i.chart.width,10));var r=String(i.chart.height).toString().split(/[0-9]+/g).pop();if(\"auto\"!==e.svgHeight&&\"\"!==e.svgHeight)if(\"%\"===r){var o=m.getDimensions(this.el.parentNode);e.svgHeight=o[1]*parseInt(i.chart.height,10)/100}else e.svgHeight=parseInt(i.chart.height,10);else e.svgHeight=e.axisCharts?e.svgWidth/1.61:e.svgWidth/1.2;if(e.svgWidth=Math.max(e.svgWidth,0),e.svgHeight=Math.max(e.svgHeight,0),k.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),\"%\"!==r){var n=i.chart.sparkline.enabled?0:e.axisCharts?i.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=\"\".concat(e.svgHeight+n,\"px\")}e.dom.elWrap.style.width=\"\".concat(e.svgWidth,\"px\"),e.dom.elWrap.style.height=\"\".concat(e.svgHeight,\"px\")}},{key:\"shiftGraphPosition\",value:function(){var t=this.w.globals,e=t.translateY,i=t.translateX;k.setAttrs(t.dom.elGraphical.node,{transform:\"translate(\".concat(i,\", \").concat(e,\")\")})}},{key:\"resizeNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,[\"top\",\"bottom\"].includes(t.config.legend.position)&&t.config.legend.show&&!t.config.legend.floating&&(i=new gt(this.ctx).legendHelpers.getLegendDimensions().clwh+7);var s=t.globals.dom.baseEl.querySelector(\".apexcharts-radialbar, .apexcharts-pie\"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=m.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=Math.ceil(r+e.translateY+i+a);e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute(\"height\",l),t.config.chart.height&&String(t.config.chart.height).includes(\"%\")||(e.dom.elWrap.style.height=\"\".concat(l,\"px\"),k.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=\"\".concat(l,\"px\"))}},{key:\"coreCalculations\",value:function(){new J(this.ctx).init()}},{key:\"resetGlobals\",value:function(){var t=this,e=function(){return t.w.config.series.map((function(){return[]}))},i=new H,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:\"isMultipleY\",value:function(){return!!(Array.isArray(this.w.config.yaxis)&&this.w.config.yaxis.length>1)&&(this.w.globals.isMultipleYAxis=!0,!0)}},{key:\"xySettings\",value:function(){var t=this.w,e=null;if(t.globals.axisCharts){if(\"back\"===t.config.xaxis.crosshairs.position&&new it(this.ctx).drawXCrosshairs(),\"back\"===t.config.yaxis[0].crosshairs.position&&new it(this.ctx).drawYCrosshairs(),\"datetime\"===t.config.xaxis.type&&void 0===t.config.xaxis.labels.formatter){this.ctx.timeScale=new jt(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new A(this.ctx).getCalculatedRatios()}return e}},{key:\"updateSourceChart\",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:\"setupBrushHandler\",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&\"function\"!=typeof e.config.chart.events.selection){var i=Array.isArray(e.config.chart.brush.targets)?e.config.chart.brush.targets:[e.config.chart.brush.target];i.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,\"function\"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){return t.updateSourceChart(i)}),\"function\"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){return t.updateSourceChart(i)})})),e.config.chart.events.selection=function(t,e){i.forEach((function(t){ApexCharts.getChartByID(t).ctx.updateHelpers._updateOptions({xaxis:{min:e.xaxis.min,max:e.xaxis.max}},!1,!1,!1,!1)}))}}}}]),t}(),Ut=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"_updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(o){var n=[e.ctx];s&&(n=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(n=[e.ctx],e.ctx.w.globals.isExecCalled=!1),n.forEach((function(s,l){var h=s.w;if(h.globals.shouldAnimate=a,i||(h.globals.resized=!0,h.globals.dataChanged=!0,a&&s.series.getPreviousPaths()),t&&\"object\"===b(t)&&(s.config=new D(t),t=A.extendArrayProps(s.config,t,h),s.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,h.config=m.extend(h.config,t),r&&(h.globals.lastXAxis=t.xaxis?m.clone(t.xaxis):[],h.globals.lastYAxis=t.yaxis?m.clone(t.yaxis):[],h.globals.initialConfig=m.extend({},h.config),h.globals.initialSeries=m.clone(h.config.series),t.series))){for(var c=0;c2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=m.clone(o.config.series),o.globals.initialSeries=m.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:\"_extendSeries\",value:function(t,e){var i=this.w,a=i.config.series[e];return g(g({},i.config.series[e]),{},{name:t.name?t.name:null==a?void 0:a.name,color:t.color?t.color:null==a?void 0:a.color,type:t.type?t.type:null==a?void 0:a.type,group:t.group?t.group:null==a?void 0:a.group,hidden:void 0!==t.hidden?t.hidden:null==a?void 0:a.hidden,data:t.data?t.data:null==a?void 0:a.data,zIndex:void 0!==t.zIndex?t.zIndex:e})}},{key:\"toggleDataPointSelection\",value:function(t,e){var i=this.w,a=null,s=\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\");return i.globals.axisCharts?a=i.globals.dom.Paper.select(\"\".concat(s,\" path[j='\").concat(e,\"'], \").concat(s,\" circle[j='\").concat(e,\"'], \").concat(s,\" rect[j='\").concat(e,\"']\")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select(\"\".concat(s,\" path[j='\").concat(t,\"']\")).members[0],\"pie\"!==i.config.chart.type&&\"polarArea\"!==i.config.chart.type&&\"donut\"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new k(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn(\"toggleDataPointSelection: Element not found\"),null)}},{key:\"forceXAxisUpdate\",value:function(t){var e=this.w;if([\"min\",\"max\"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new F(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:\"forceYAxisUpdate\",value:function(t){return t.chart&&t.chart.stacked&&\"100%\"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:\"revertDefaultAxisMinMax\",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Nt=\"undefined\"!=typeof window?window:void 0,Wt=function(t,e){var i=(void 0!==this?this:t).SVG=function(t){if(i.supported)return t=new i.Doc(t),i.parser.draw||i.prepare(),t};if(i.ns=\"http://www.w3.org/2000/svg\",i.xmlns=\"http://www.w3.org/2000/xmlns/\",i.xlink=\"http://www.w3.org/1999/xlink\",i.svgjs=\"http://svgjs.dev\",i.supported=!0,!i.supported)return!1;i.did=1e3,i.eid=function(t){return\"Svgjs\"+c(t)+i.did++},i.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute(\"id\",this.eid(t)),i},i.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var a=t.length-1;a>=0;a--)if(t[a])for(var s in e)t[a].prototype[s]=e[s];i.Set&&i.Set.inherit&&i.Set.inherit()},i.invent=function(t){var e=\"function\"==typeof t.create?t.create:function(){this.constructor.call(this,i.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&i.extend(e,t.extend),t.construct&&i.extend(t.parent||i.Container,t.construct),e},i.adopt=function(e){return e?e.instance?e.instance:((a=\"svg\"==e.nodeName?e.parentNode instanceof t.SVGElement?new i.Nested:new i.Doc:\"linearGradient\"==e.nodeName?new i.Gradient(\"linear\"):\"radialGradient\"==e.nodeName?new i.Gradient(\"radial\"):i[c(e.nodeName)]?new(i[c(e.nodeName)]):new i.Element(e)).type=e.nodeName,a.node=e,e.instance=a,a instanceof i.Doc&&a.namespace().defs(),a.setData(JSON.parse(e.getAttribute(\"svgjs:data\"))||{}),a):null;var a},i.prepare=function(){var t=e.getElementsByTagName(\"body\")[0],a=(t?new i.Doc(t):i.adopt(e.documentElement).nested()).size(2,0);i.parser={body:t||e.documentElement,draw:a.style(\"opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden\").node,poly:a.polyline().node,path:a.path().node,native:i.create(\"svg\")}},i.parser={native:i.create(\"svg\")},e.addEventListener(\"DOMContentLoaded\",(function(){i.parser.draw||i.prepare()}),!1),i.regex={numberAndUnit:/^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,rgb:/rgb\\((\\d+),(\\d+),(\\d+)\\)/,reference:/#([a-z0-9\\-_]+)/i,transforms:/\\)\\s*,?\\s*/,whitespace:/\\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\\s+)?$/,isNumber:/^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,isPercent:/^-?[\\d\\.]+%$/,isImage:/\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i,delimiter:/[\\s,]+/,hyphen:/([^e])\\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi,dots:/\\./g},i.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new i.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),i.Color.test=function(t){return t+=\"\",i.regex.isHex.test(t)||i.regex.isRgb.test(t)},i.Color.isRgb=function(t){return t&&\"number\"==typeof t.r&&\"number\"==typeof t.g&&\"number\"==typeof t.b},i.Color.isColor=function(t){return i.Color.isRgb(t)||i.Color.test(t)},i.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},i.extend(i.Array,{toString:function(){return this.value.join(\" \")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),i.PointArray=function(t,e){i.Array.call(this,t,e||[[0,0]])},i.PointArray.prototype=new i.Array,i.PointArray.prototype.constructor=i.PointArray;for(var a={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],[\"M\",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],[\"L\",t[0],t[1]]},H:function(t,e){return e.x=t[0],[\"H\",t[0]]},V:function(t,e){return e.y=t[0],[\"V\",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],[\"C\",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],[\"Q\",t[0],t[1],t[2],t[3]]},S:function(t,e){return e.x=t[2],e.y=t[3],[\"S\",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,[\"Z\"]}},s=\"mlhvqtcsaz\".split(\"\"),r=0,o=s.length;rh);return r},bbox:function(){return i.parser.draw||i.prepare(),i.parser.path.setAttribute(\"d\",this.toString()),i.parser.path.getBBox()}}),i.Number=i.invent({create:function(t,e){this.value=0,this.unit=e||\"\",\"number\"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:\"string\"==typeof t?(e=t.match(i.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),\"%\"==e[5]?this.value/=100:\"s\"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof i.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return(\"%\"==this.unit?~~(1e8*this.value)/1e6:\"s\"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new i.Number(t),new i.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new i.Number(t),new i.Number(this-t,this.unit||t.unit)},times:function(t){return t=new i.Number(t),new i.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new i.Number(t),new i.Number(this/t,this.unit||t.unit)},to:function(t){var e=new i.Number(this);return\"string\"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new i.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new i.Number(this.destination).minus(this).times(t).plus(this):this}}}),i.Element=i.invent({create:function(t){this._stroke=i.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute(\"stroke\")||this._stroke)},extend:{x:function(t){return this.attr(\"x\",t)},y:function(t){return this.attr(\"y\",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr(\"width\",t)},height:function(t){return this.attr(\"height\",t)},size:function(t,e){var a=g(this,t,e);return this.width(new i.Number(a.width)).height(new i.Number(a.height))},clone:function(t){this.writeDataToDom();var e=p(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr(\"id\",t)},show:function(){return this.style(\"display\",\"\")},hide:function(){return this.style(\"display\",\"none\")},visible:function(){return\"none\"!=this.style(\"display\")},toString:function(){return this.attr(\"id\")},classes:function(){var t=this.attr(\"class\");return null==t?[]:t.trim().split(i.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr(\"class\",e.join(\" \"))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr(\"class\",this.classes().filter((function(e){return e!=t})).join(\" \")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return i.get(this.attr(t))},parent:function(e){var a=this;if(!a.node.parentNode)return null;if(a=i.adopt(a.node.parentNode),!e)return a;for(;a&&a.node instanceof t.SVGElement;){if(\"string\"==typeof e?a.matches(e):a instanceof e)return a;if(!a.node.parentNode||\"#document\"==a.node.parentNode.nodeName)return null;a=i.adopt(a.node.parentNode)}},doc:function(){return this instanceof i.Doc?this:this.parent(i.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var a=e.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");if(!(t&&this instanceof i.Parent))return a.appendChild(t=e.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),a.innerHTML.replace(/^/,\"\").replace(/<\\/svg>$/,\"\");a.innerHTML=\"\"+t.replace(/\\n/,\"\").replace(/<([\\w:-]+)([^<]+?)\\/>/g,\"<$1$2>\")+\"\";for(var s=0,r=a.firstChild.childNodes.length;s\":function(t){return-Math.cos(t*Math.PI)/2+.5},\">\":function(t){return Math.sin(t*Math.PI/2)},\"<\":function(t){return 1-Math.cos(t*Math.PI/2)}},i.morph=function(t){return function(e,a){return new i.MorphObj(e,a).at(t)}},i.Situation=i.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new i.Number(t.duration).valueOf(),this.delay=new i.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),i.FX=i.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,a){\"object\"===b(t)&&(e=t.ease,a=t.delay,t=t.duration);var s=new i.Situation({duration:t||1e3,delay:a||0,ease:i.easing[e||\"-\"]||e});return this.queue(s),this},target:function(t){return t&&t instanceof i.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return(\"function\"==typeof t||t instanceof i.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof i.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var a in e.animations){t=this.target()[a](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[a])||(e.animations[a]=[e.animations[a]]);for(var s=t.length;s--;)e.animations[a][s]instanceof i.Number&&(t[s]=new i.Number(t[s])),e.animations[a][s]=t[s].morph(e.animations[a][s])}for(var a in e.attrs)e.attrs[a]=new i.MorphObj(this.target().attr(a),e.attrs[a]);for(var a in e.styles)e.styles[a]=new i.MorphObj(this.target().style(a),e.styles[a]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on(\"finished.fx\",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off(\"finished.fx\",i))})),this._callStart()},during:function(t){var e=this.last(),a=function(a){a.detail.situation==e&&t.call(this,a.detail.pos,i.morph(a.detail.pos),a.detail.eased,e)};return this.target().off(\"during.fx\",a).on(\"during.fx\",a),this.after((function(){this.off(\"during.fx\",a)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off(\"allfinished.fx\",e)};return this.target().off(\"allfinished.fx\",e).on(\"allfinished.fx\",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||\"animations\"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire(\"during\",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire(\"finished\",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire(\"allfinished\"),this.situations.length||(this.target().off(\".fx\"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,a=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a[r].apply(a,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a.attr.apply(a,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a.style.apply(a,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--a)this[v[a]]=null!=t[v[a]]?t[v[a]]:e[v[a]]},extend:{extract:function(){var t=u(this,0,1);u(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new i.Matrix(this)}},clone:function(){return new i.Matrix(this)},morph:function(t){return this.destination=new i.Matrix(t),this},multiply:function(t){return new i.Matrix(this.native().multiply(function(t){return t instanceof i.Matrix||(t=new i.Matrix(t)),t}(t).native()))},inverse:function(){return new i.Matrix(this.native().inverse())},translate:function(t,e){return new i.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=i.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return\"matrix(\"+x(this.a)+\",\"+x(this.b)+\",\"+x(this.c)+\",\"+x(this.d)+\",\"+x(this.e)+\",\"+x(this.f)+\")\"}},parent:i.Element,construct:{ctm:function(){return new i.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof i.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new i.Matrix(e)}return new i.Matrix(this.node.getScreenCTM())}}}),i.Point=i.invent({create:function(t,e){var i;i=Array.isArray(t)?{x:t[0],y:t[1]}:\"object\"===b(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=i.x,this.y=i.y},extend:{clone:function(){return new i.Point(this)},morph:function(t,e){return this.destination=new i.Point(t,e),this}}}),i.extend(i.Element,{point:function(t,e){return new i.Point(t,e).transform(this.screenCTM().inverse())}}),i.extend(i.Element,{attr:function(t,e,a){if(null==t){for(t={},a=(e=this.node.attributes).length-1;a>=0;a--)t[e[a].nodeName]=i.regex.isNumber.test(e[a].nodeValue)?parseFloat(e[a].nodeValue):e[a].nodeValue;return t}if(\"object\"===b(t))for(var s in t)this.attr(s,t[s]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?i.defaults.attrs[t]:i.regex.isNumber.test(e)?parseFloat(e):e;\"stroke-width\"==t?this.attr(\"stroke\",parseFloat(e)>0?this._stroke:null):\"stroke\"==t&&(this._stroke=e),\"fill\"!=t&&\"stroke\"!=t||(i.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof i.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),\"number\"==typeof e?e=new i.Number(e):i.Color.isColor(e)?e=new i.Color(e):Array.isArray(e)&&(e=new i.Array(e)),\"leading\"==t?this.leading&&this.leading(e):\"string\"==typeof a?this.node.setAttributeNS(a,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||\"font-size\"!=t&&\"x\"!=t||this.rebuild(t,e)}return this}}),i.extend(i.Element,{transform:function(t,e){var a;return\"object\"!==b(t)?(a=new i.Matrix(this).extract(),\"string\"==typeof t?a[t]:a):(a=new i.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(a=e?a.multiply(new i.Matrix(t)):new i.Matrix(t)),this.attr(\"transform\",a))}}),i.extend(i.Element,{untransform:function(){return this.attr(\"transform\",null)},matrixify:function(){return(this.attr(\"transform\")||\"\").split(i.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split(\"(\");return[e[0],e[1].split(i.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return\"matrix\"==e[0]?t.multiply(f(e[1])):t[e[0]].apply(t,e[1])}),new i.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),i.Transformation=i.invent({create:function(t,e){if(arguments.length>1&&\"boolean\"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var i=0,a=this.arguments.length;i=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return i.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var a=this.children(),s=0,r=a.length;s=0;a--)e.childNodes[a]instanceof t.SVGElement&&p(e.childNodes[a]);return i.adopt(e).id(i.eid(e.nodeName))}function x(t){return Math.abs(t)>1e-37?t:0}[\"fill\",\"stroke\"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if(\"string\"==typeof e||i.Color.isRgb(e)||e&&\"function\"==typeof e.fill)this.attr(t,e);else for(var a=n[t].length-1;a>=0;a--)null!=e[n[t][a]]&&this.attr(n.prefix(t,n[t][a]),e[n[t][a]]);return this},i.extend(i.Element,i.FX,e)})),i.extend(i.Element,i.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr(\"transform\",new i.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr(\"opacity\",t)},dx:function(t){return this.x(new i.Number(t).plus(this instanceof i.FX?0:this.x()),!0)},dy:function(t){return this.y(new i.Number(t).plus(this instanceof i.FX?0:this.y()),!0)}}),i.extend(i.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),i.Set=i.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new i.Set(t)}}}),i.FX.Set=i.invent({create:function(t){this.set=t}}),i.Set.inherit=function(){var t=[];for(var e in i.Shape.prototype)\"function\"==typeof i.Shape.prototype[e]&&\"function\"!=typeof i.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){i.Set.prototype[t]=function(){for(var e=0,a=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),i.get=function(t){var a=e.getElementById(function(t){var e=(t||\"\").toString().match(i.regex.reference);if(e)return e[1]}(t)||t);return i.adopt(a)},i.select=function(t,a){return new i.Set(i.utils.map((a||e).querySelectorAll(t),(function(t){return i.adopt(t)})))},i.extend(i.Parent,{select:function(t){return i.select(t,this.node)}});var v=\"abcdef\".split(\"\");if(\"function\"!=typeof t.CustomEvent){var m=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};m.prototype=t.Event.prototype,i.CustomEvent=m}else i.CustomEvent=t.CustomEvent;return i},\"function\"==typeof define&&define.amd?define((function(){return Wt(Nt,Nt.document)})):\"object\"===(\"undefined\"==typeof exports?\"undefined\":b(exports))&&\"undefined\"!=typeof module?module.exports=Nt.document?Wt(Nt,Nt.document):function(t){return Wt(t,t.document)}:Nt.SVG=Wt(Nt,Nt.document),\n/*! svg.filter.js - v2.0.2 - 2016-02-24\n* https://github.com/wout/svg.filter.js\n* Copyright (c) 2016 Wout Fierens; Licensed MIT */\nfunction(){SVG.Filter=SVG.invent({create:\"filter\",inherit:SVG.Parent,extend:{source:\"SourceGraphic\",sourceAlpha:\"SourceAlpha\",background:\"BackgroundImage\",backgroundAlpha:\"BackgroundAlpha\",fill:\"FillPaint\",stroke:\"StrokePaint\",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr(\"in\")&&this.autoSetIn&&t.attr(\"in\",this.source),t.attr(\"result\")||t.attr(\"result\",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return\"url(#\"+this.attr(\"id\")+\")\"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return\"function\"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr(\"filter\",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr(\"filter\",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr(\"in\",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||\"normal\"})},colorMatrix:function(t,e){\"matrix\"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(\" \").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr(\"flood-color\",t),null!=e&&this.attr(\"flood-opacity\",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr(\"href\",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr(\"stdDeviation\",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,a=[];e1&&(M*=a=Math.sqrt(a),I*=a);s=(new SVG.Matrix).rotate(T).scale(1/M,1/I).rotate(-T),R=R.transform(s),F=F.transform(s),r=[F.x-R.x,F.y-R.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((F.x+R.x)/2+l*-r[1],(F.y+R.y)/2+l*r[0]),c=new SVG.Point(R.x-h.x,R.y-h.y),d=new SVG.Point(F.x-h.x,F.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire(\"dragend\",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,\"mousemove.drag\"),SVG.off(window,\"touchmove.drag\"),SVG.off(window,\"mouseup.drag\"),SVG.off(window,\"touchend.drag\")},SVG.extend(SVG.Element,{draggable:function(e,i){\"function\"!=typeof e&&\"object\"!=typeof e||(i=e,e=!0);var a=this.remember(\"_draggable\")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off(\"mousedown.drag\"),this.off(\"touchstart.drag\")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember(\"_selectHandler\",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:[\"width\",0],rb:[\"width\",\"height\"],lb:[0,\"height\"],t:[\"width\",0],r:[\"width\",\"height\"],b:[\"width\",\"height\"],l:[0,\"height\"]},this.pointCoord=function(t,e,i){var a=\"string\"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,\"t\"===t||\"b\"===t),y:this.pointCoord(i[1],e,\"r\"===t||\"l\"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=[\"points\",\"pointsExclude\"];for(var s in r){var o=this.options[r[s]];\"string\"==typeof o?o=o.length>0?o.split(/\\s*,\\s*/i):[]:\"boolean\"==typeof o&&\"points\"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==[\"line\",\"polyline\",\"polygon\"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case\"rt\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case\"rb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case\"lb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case\"t\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case\"r\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case\"b\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case\"l\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case\"rot\":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case\"point\":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire(\"resizestart\",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,\"touchmove.resize\",(function(t){e.update(t||window.event)})),SVG.on(window,\"touchend.resize\",(function(){e.done()})),SVG.on(window,\"mousemove.resize\",(function(t){e.update(t||window.event)})),SVG.on(window,\"mouseup.resize\",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire(\"resizing\",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,\"mousemove.resize\"),SVG.off(window,\"mouseup.resize\"),SVG.off(window,\"touchmove.resize\"),SVG.off(window,\"touchend.resize\"),this.el.fire(\"resizedone\")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember(\"_resizeHandler\")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var qt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"initModules\",value:function(){this.ctx.publicMethods=[\"updateOptions\",\"updateSeries\",\"appendData\",\"appendSeries\",\"isSeriesHidden\",\"highlightSeries\",\"toggleSeries\",\"showSeries\",\"hideSeries\",\"setLocale\",\"resetSeries\",\"zoomX\",\"toggleDataPointSelection\",\"dataURI\",\"exportToCSV\",\"addXaxisAnnotation\",\"addYaxisAnnotation\",\"addPointAnnotation\",\"clearAnnotations\",\"removeAnnotation\",\"paper\",\"destroy\"],this.ctx.eventList=[\"click\",\"mousedown\",\"mousemove\",\"mouseleave\",\"touchstart\",\"touchmove\",\"touchleave\",\"mouseup\",\"touchend\"],this.ctx.animations=new y(this.ctx),this.ctx.axes=new et(this.ctx),this.ctx.core=new _t(this.ctx.el,this.ctx),this.ctx.config=new D({}),this.ctx.data=new _(this.ctx),this.ctx.grid=new Z(this.ctx),this.ctx.graphics=new k(this.ctx),this.ctx.coreUtils=new A(this.ctx),this.ctx.crosshairs=new it(this.ctx),this.ctx.events=new K(this.ctx),this.ctx.exports=new U(this.ctx),this.ctx.fill=new N(this.ctx),this.ctx.localization=new tt(this.ctx),this.ctx.options=new X,this.ctx.responsive=new at(this.ctx),this.ctx.series=new V(this.ctx),this.ctx.theme=new st(this.ctx),this.ctx.formatters=new P(this.ctx),this.ctx.titleSubtitle=new rt(this.ctx),this.ctx.legend=new gt(this.ctx),this.ctx.toolbar=new ut(this.ctx),this.ctx.tooltip=new wt(this.ctx),this.ctx.dimensions=new ct(this.ctx),this.ctx.updateHelpers=new Ut(this.ctx),this.ctx.zoomPanSelection=new ft(this.ctx),this.ctx.w.globals.tooltip=new wt(this.ctx)}}]),t}(),Zt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"clear\",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:\"killSVG\",value:function(t){t.each((function(){this.removeClass(\"*\"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:\"clearDomElements\",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight=\"unset\");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectBarMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),$t=new WeakMap;var Jt=function(){function t(e,a){i(this,t),this.opts=a,this.ctx=this,this.w=new O(a).init(),this.el=e,this.w.globals.cuid=m.randomId(),this.w.globals.chartID=this.w.config.chart.id?m.escapeString(this.w.config.chart.id):this.w.globals.cuid,new qt(this).initModules(),this.create=m.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return s(t,[{key:\"render\",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;\"function\"==typeof a&&a(t,t.w),t.events.fireEvent(\"beforeMount\",[t,t.w]),window.addEventListener(\"resize\",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();\"none\"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),$t.set(e,s)}(t.el.parentNode,t.parentResizeHandler);var s=t.el.getRootNode&&t.el.getRootNode(),r=m.is(\"ShadowRoot\",s),o=t.el.ownerDocument,n=r?s.getElementById(\"apexcharts-css\"):o.getElementById(\"apexcharts-css\");if(!n){var l;(n=document.createElement(\"style\")).id=\"apexcharts-css\",n.textContent='@keyframes opaque {\\n 0% {\\n opacity: 0\\n }\\n\\n to {\\n opacity: 1\\n }\\n}\\n\\n@keyframes resizeanim {\\n\\n 0%,\\n to {\\n opacity: 0\\n }\\n}\\n\\n.apexcharts-canvas {\\n position: relative;\\n direction: ltr !important;\\n user-select: none\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 6px\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\\n border-radius: 4px;\\n background-color: rgba(0, 0, 0, .5);\\n box-shadow: 0 0 1px rgba(255, 255, 255, .5);\\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5)\\n}\\n\\n.apexcharts-inner {\\n position: relative\\n}\\n\\n.apexcharts-text tspan {\\n font-family: inherit\\n}\\n\\nrect.legend-mouseover-inactive,\\n.legend-mouseover-inactive rect,\\n.legend-mouseover-inactive path,\\n.legend-mouseover-inactive circle,\\n.legend-mouseover-inactive line,\\n.legend-mouseover-inactive text.apexcharts-yaxis-title-text,\\n.legend-mouseover-inactive text.apexcharts-yaxis-label {\\n transition: .15s ease all;\\n opacity: .2\\n}\\n\\n.apexcharts-legend-text {\\n padding-left: 15px;\\n margin-left: -15px;\\n}\\n\\n.apexcharts-series-collapsed {\\n opacity: 0\\n}\\n\\n.apexcharts-tooltip {\\n border-radius: 5px;\\n box-shadow: 2px 2px 6px -4px #999;\\n cursor: default;\\n font-size: 14px;\\n left: 62px;\\n opacity: 0;\\n pointer-events: none;\\n position: absolute;\\n top: 20px;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n white-space: nowrap;\\n z-index: 12;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-active {\\n opacity: 1;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light {\\n border: 1px solid #e3e3e3;\\n background: rgba(255, 255, 255, .96)\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark {\\n color: #fff;\\n background: rgba(30, 30, 30, .8)\\n}\\n\\n.apexcharts-tooltip * {\\n font-family: inherit\\n}\\n\\n.apexcharts-tooltip-title {\\n padding: 6px;\\n font-size: 15px;\\n margin-bottom: 4px\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\\n background: #eceff1;\\n border-bottom: 1px solid #ddd\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\\n background: rgba(0, 0, 0, .7);\\n border-bottom: 1px solid #333\\n}\\n\\n.apexcharts-tooltip-text-goals-value,\\n.apexcharts-tooltip-text-y-value,\\n.apexcharts-tooltip-text-z-value {\\n display: inline-block;\\n margin-left: 5px;\\n font-weight: 600\\n}\\n\\n.apexcharts-tooltip-text-goals-label:empty,\\n.apexcharts-tooltip-text-goals-value:empty,\\n.apexcharts-tooltip-text-y-label:empty,\\n.apexcharts-tooltip-text-y-value:empty,\\n.apexcharts-tooltip-text-z-value:empty,\\n.apexcharts-tooltip-title:empty {\\n display: none\\n}\\n\\n.apexcharts-tooltip-text-goals-label,\\n.apexcharts-tooltip-text-goals-value {\\n padding: 6px 0 5px\\n}\\n\\n.apexcharts-tooltip-goals-group,\\n.apexcharts-tooltip-text-goals-label,\\n.apexcharts-tooltip-text-goals-value {\\n display: flex\\n}\\n\\n.apexcharts-tooltip-text-goals-label:not(:empty),\\n.apexcharts-tooltip-text-goals-value:not(:empty) {\\n margin-top: -6px\\n}\\n\\n.apexcharts-tooltip-marker {\\n width: 12px;\\n height: 12px;\\n position: relative;\\n top: 0;\\n margin-right: 10px;\\n border-radius: 50%\\n}\\n\\n.apexcharts-tooltip-series-group {\\n padding: 0 10px;\\n display: none;\\n text-align: left;\\n justify-content: left;\\n align-items: center\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\\n opacity: 1\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active,\\n.apexcharts-tooltip-series-group:last-child {\\n padding-bottom: 4px\\n}\\n\\n.apexcharts-tooltip-y-group {\\n padding: 6px 0 5px\\n}\\n\\n.apexcharts-custom-tooltip,\\n.apexcharts-tooltip-box {\\n padding: 4px 8px\\n}\\n\\n.apexcharts-tooltip-boxPlot {\\n display: flex;\\n flex-direction: column-reverse\\n}\\n\\n.apexcharts-tooltip-box>div {\\n margin: 4px 0\\n}\\n\\n.apexcharts-tooltip-box span.value {\\n font-weight: 700\\n}\\n\\n.apexcharts-tooltip-rangebar {\\n padding: 5px 8px\\n}\\n\\n.apexcharts-tooltip-rangebar .category {\\n font-weight: 600;\\n color: #777\\n}\\n\\n.apexcharts-tooltip-rangebar .series-name {\\n font-weight: 700;\\n display: block;\\n margin-bottom: 5px\\n}\\n\\n.apexcharts-xaxistooltip,\\n.apexcharts-yaxistooltip {\\n opacity: 0;\\n pointer-events: none;\\n color: #373d3f;\\n font-size: 13px;\\n text-align: center;\\n border-radius: 2px;\\n position: absolute;\\n z-index: 10;\\n background: #eceff1;\\n border: 1px solid #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip {\\n padding: 9px 10px;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\\n background: rgba(0, 0, 0, .7);\\n border: 1px solid rgba(0, 0, 0, .5);\\n color: #fff\\n}\\n\\n.apexcharts-xaxistooltip:after,\\n.apexcharts-xaxistooltip:before {\\n left: 50%;\\n border: solid transparent;\\n content: \" \";\\n height: 0;\\n width: 0;\\n position: absolute;\\n pointer-events: none\\n}\\n\\n.apexcharts-xaxistooltip:after {\\n border-color: transparent;\\n border-width: 6px;\\n margin-left: -6px\\n}\\n\\n.apexcharts-xaxistooltip:before {\\n border-color: transparent;\\n border-width: 7px;\\n margin-left: -7px\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after,\\n.apexcharts-xaxistooltip-bottom:before {\\n bottom: 100%\\n}\\n\\n.apexcharts-xaxistooltip-top:after,\\n.apexcharts-xaxistooltip-top:before {\\n top: 100%\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after {\\n border-bottom-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-bottom:before {\\n border-bottom-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\\n border-bottom-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-xaxistooltip-top:after {\\n border-top-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-top:before {\\n border-top-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\\n border-top-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-active {\\n opacity: 1;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-yaxistooltip {\\n padding: 4px 10px\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\\n background: rgba(0, 0, 0, .7);\\n border: 1px solid rgba(0, 0, 0, .5);\\n color: #fff\\n}\\n\\n.apexcharts-yaxistooltip:after,\\n.apexcharts-yaxistooltip:before {\\n top: 50%;\\n border: solid transparent;\\n content: \" \";\\n height: 0;\\n width: 0;\\n position: absolute;\\n pointer-events: none\\n}\\n\\n.apexcharts-yaxistooltip:after {\\n border-color: transparent;\\n border-width: 6px;\\n margin-top: -6px\\n}\\n\\n.apexcharts-yaxistooltip:before {\\n border-color: transparent;\\n border-width: 7px;\\n margin-top: -7px\\n}\\n\\n.apexcharts-yaxistooltip-left:after,\\n.apexcharts-yaxistooltip-left:before {\\n left: 100%\\n}\\n\\n.apexcharts-yaxistooltip-right:after,\\n.apexcharts-yaxistooltip-right:before {\\n right: 100%\\n}\\n\\n.apexcharts-yaxistooltip-left:after {\\n border-left-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-left:before {\\n border-left-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\\n border-left-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-yaxistooltip-right:after {\\n border-right-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-right:before {\\n border-right-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\\n border-right-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-active {\\n opacity: 1\\n}\\n\\n.apexcharts-yaxistooltip-hidden {\\n display: none\\n}\\n\\n.apexcharts-xcrosshairs,\\n.apexcharts-ycrosshairs {\\n pointer-events: none;\\n opacity: 0;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-xcrosshairs.apexcharts-active,\\n.apexcharts-ycrosshairs.apexcharts-active {\\n opacity: 1;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-ycrosshairs-hidden {\\n opacity: 0\\n}\\n\\n.apexcharts-selection-rect {\\n cursor: move\\n}\\n\\n.svg_select_boundingRect,\\n.svg_select_points_rot {\\n pointer-events: none;\\n opacity: 0;\\n visibility: hidden\\n}\\n\\n.apexcharts-selection-rect+g .svg_select_boundingRect,\\n.apexcharts-selection-rect+g .svg_select_points_rot {\\n opacity: 0;\\n visibility: hidden\\n}\\n\\n.apexcharts-selection-rect+g .svg_select_points_l,\\n.apexcharts-selection-rect+g .svg_select_points_r {\\n cursor: ew-resize;\\n opacity: 1;\\n visibility: visible\\n}\\n\\n.svg_select_points {\\n fill: #efefef;\\n stroke: #333;\\n rx: 2\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\\n cursor: crosshair\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\\n cursor: move\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-pan-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-selection-icon,\\n.apexcharts-toolbar-custom-icon,\\n.apexcharts-zoom-icon,\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n cursor: pointer;\\n width: 20px;\\n height: 20px;\\n line-height: 24px;\\n color: #6e8192;\\n text-align: center\\n}\\n\\n.apexcharts-menu-icon svg,\\n.apexcharts-reset-icon svg,\\n.apexcharts-zoom-icon svg,\\n.apexcharts-zoomin-icon svg,\\n.apexcharts-zoomout-icon svg {\\n fill: #6e8192\\n}\\n\\n.apexcharts-selection-icon svg {\\n fill: #444;\\n transform: scale(.76)\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\\n fill: #f3f4f5\\n}\\n\\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\\n fill: #008ffb\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\\n fill: #333\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-selection-icon {\\n position: relative\\n}\\n\\n.apexcharts-reset-icon {\\n margin-left: 5px\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-zoom-icon {\\n transform: scale(.85)\\n}\\n\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n transform: scale(.7)\\n}\\n\\n.apexcharts-zoomout-icon {\\n margin-right: 3px\\n}\\n\\n.apexcharts-pan-icon {\\n transform: scale(.62);\\n position: relative;\\n left: 1px;\\n top: 0\\n}\\n\\n.apexcharts-pan-icon svg {\\n fill: #fff;\\n stroke: #6e8192;\\n stroke-width: 2\\n}\\n\\n.apexcharts-pan-icon.apexcharts-selected svg {\\n stroke: #008ffb\\n}\\n\\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\\n stroke: #333\\n}\\n\\n.apexcharts-toolbar {\\n position: absolute;\\n z-index: 11;\\n max-width: 176px;\\n text-align: right;\\n border-radius: 3px;\\n padding: 0 6px 2px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center\\n}\\n\\n.apexcharts-menu {\\n background: #fff;\\n position: absolute;\\n top: 100%;\\n border: 1px solid #ddd;\\n border-radius: 3px;\\n padding: 3px;\\n right: 10px;\\n opacity: 0;\\n min-width: 110px;\\n transition: .15s ease all;\\n pointer-events: none\\n}\\n\\n.apexcharts-menu.apexcharts-menu-open {\\n opacity: 1;\\n pointer-events: all;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-menu-item {\\n padding: 6px 7px;\\n font-size: 12px;\\n cursor: pointer\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-item:hover {\\n background: #eee\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu {\\n background: rgba(0, 0, 0, .7);\\n color: #fff\\n}\\n\\n@media screen and (min-width:768px) {\\n .apexcharts-canvas:hover .apexcharts-toolbar {\\n opacity: 1\\n }\\n}\\n\\n.apexcharts-canvas .apexcharts-element-hidden,\\n.apexcharts-datalabel.apexcharts-element-hidden,\\n.apexcharts-hide .apexcharts-series-points {\\n opacity: 0;\\n}\\n\\n.apexcharts-hidden-element-shown {\\n opacity: 1;\\n transition: 0.25s ease all;\\n}\\n\\n.apexcharts-datalabel,\\n.apexcharts-datalabel-label,\\n.apexcharts-datalabel-value,\\n.apexcharts-datalabels,\\n.apexcharts-pie-label {\\n cursor: default;\\n pointer-events: none\\n}\\n\\n.apexcharts-pie-label-delay {\\n opacity: 0;\\n animation-name: opaque;\\n animation-duration: .3s;\\n animation-fill-mode: forwards;\\n animation-timing-function: ease\\n}\\n\\n.apexcharts-radialbar-label {\\n cursor: pointer;\\n}\\n\\n.apexcharts-annotation-rect,\\n.apexcharts-area-series .apexcharts-area,\\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-gridline,\\n.apexcharts-line,\\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-point-annotation-label,\\n.apexcharts-radar-series path:not(.apexcharts-marker),\\n.apexcharts-radar-series polygon,\\n.apexcharts-toolbar svg,\\n.apexcharts-tooltip .apexcharts-marker,\\n.apexcharts-xaxis-annotation-label,\\n.apexcharts-yaxis-annotation-label,\\n.apexcharts-zoom-rect {\\n pointer-events: none\\n}\\n\\n.apexcharts-tooltip-active .apexcharts-marker {\\n transition: .15s ease all\\n}\\n\\n.resize-triggers {\\n animation: 1ms resizeanim;\\n visibility: hidden;\\n opacity: 0;\\n height: 100%;\\n width: 100%;\\n overflow: hidden\\n}\\n\\n.contract-trigger:before,\\n.resize-triggers,\\n.resize-triggers>div {\\n content: \" \";\\n display: block;\\n position: absolute;\\n top: 0;\\n left: 0\\n}\\n\\n.resize-triggers>div {\\n height: 100%;\\n width: 100%;\\n background: #eee;\\n overflow: auto\\n}\\n\\n.contract-trigger:before {\\n overflow: hidden;\\n width: 200%;\\n height: 200%\\n}\\n\\n.apexcharts-bar-goals-markers {\\n pointer-events: none\\n}\\n\\n.apexcharts-bar-shadows {\\n pointer-events: none\\n}\\n\\n.apexcharts-rangebar-goals-markers {\\n pointer-events: none\\n}\\n';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&n.setAttribute(\"nonce\",h),r?s.prepend(n):o.head.appendChild(n)}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){\"function\"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent(\"mounted\",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error(\"Element not found\"))}))}},{key:\"create\",value:function(t,e){var i=this,a=this.w;new qt(this).initModules();var s=this.w.globals;(s.noData=!1,s.animationEnded=!1,this.responsive.checkResponsiveConfig(e),a.config.xaxis.convertedCatToNumeric)&&new F(a.config).convertCatToNumericXaxis(a.config,this.ctx);if(null===this.el)return s.animationEnded=!0,null;if(this.core.setupElements(),\"treemap\"===a.config.chart.type&&(a.config.grid.show=!1,a.config.yaxis[0].show=!1),0===s.svgWidth)return s.animationEnded=!0,null;var r=t;t.forEach((function(t,e){t.hidden&&(r=i.legend.legendHelpers.getSeriesAfterCollapsing({realIndex:e}))}));var o=A.checkComboSeries(r,a.config.chart.type);s.comboCharts=o.comboCharts,s.comboBarCount=o.comboBarCount;var n=r.every((function(t){return t.data&&0===t.data.length}));(0===r.length||n&&s.collapsedSeries.length<1)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(r),this.theme.init(),new W(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),s.noData&&s.collapsedSeries.length!==s.series.length&&!a.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),\"category\"!==a.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=a.globals.minX,this.ctx.toolbar.maxX=a.globals.maxX),this.formatters.heatmapLabelFormatters(),new A(this).getLargestMarkerSize(),this.dimensions.plotCoords();var l=this.core.xySettings();this.grid.createGridMask();var h=this.core.plotChartType(r,l),c=new G(this);return c.bringForward(),a.config.dataLabels.background.enabled&&c.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:h,xyRatios:l,dimensions:{plot:{left:a.globals.translateX,top:a.globals.translateY,width:a.globals.gridWidth,height:a.globals.gridHeight}}}}},{key:\"mount\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error(\"Not enough data to display or target element not found\"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Z(i);var o,n,l=i.grid.drawGrid();(i.annotations=new E(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),\"back\"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(o=l.elGridBorders)&&void 0!==o&&o.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:\"destroy\",value:function(){var t,e;window.removeEventListener(\"resize\",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=$t.get(t))&&(e.disconnect(),$t.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===m.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Zt(this.ctx).clear({isUpdating:!1})}},{key:\"updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:\"updateSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:\"appendSeries\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:\"appendData\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:\"addEventListener\",value:function(t,e){this.events.addEventListener(t,e)}},{key:\"removeEventListener\",value:function(t,e){this.events.removeEventListener(t,e)}},{key:\"addXaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:\"addYaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:\"addPointAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:\"clearAnnotations\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:\"removeAnnotation\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:\"getChartArea\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner\")}},{key:\"getSeriesTotalXRange\",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:\"getHighestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new J(this.ctx).getMinYMaxY(t).highestY}},{key:\"getLowestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new J(this.ctx).getMinYMaxY(t).lowestY}},{key:\"getSeriesTotal\",value:function(){return this.w.globals.seriesTotals}},{key:\"toggleDataPointSelection\",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:\"zoomX\",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:\"setLocale\",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:\"dataURI\",value:function(t){return new U(this.ctx).dataURI(t)}},{key:\"exportToCSV\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new U(this.ctx).exportToCSV(t)}},{key:\"paper\",value:function(){return this.w.globals.dom.Paper}},{key:\"_parentResizeCallback\",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:\"_windowResize\",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:\"_windowResizeHandler\",value:function(){var t=this.w.config.chart.redrawOnWindowResize;\"function\"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:\"getChartByID\",value:function(t){var e=m.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:\"initOnLoad\",value:function(){for(var e=document.querySelectorAll(\"[data-apexcharts]\"),i=0;i2?s-2:0),o=2;o{return e={772:(e,t,o)=>{const r=o(826).remove,i=/[.*+?^${}()|[\\]\\\\]/g,n=/[a-z0-9_]/i,u=/\\s+/;e.exports=function(e,t,o){var s,a;a={insideWords:!1,findAllOccurrences:!1,requireMatchAll:!1},s=(s=o)||{},Object.keys(s).forEach((e=>{a[e]=!!s[e]})),o=a;const c=Array.from(e).map((e=>r(e)));let l=c.join(\"\");return(t=r(t)).trim().split(u).filter((e=>e.length>0)).reduce(((e,t)=>{const r=t.length,u=!o.insideWords&&n.test(t[0])?\"\\\\b\":\"\",s=new RegExp(u+t.replace(i,\"\\\\$&\"),\"i\");let a,A;if(a=s.exec(l),o.requireMatchAll&&null===a)return l=\"\",[];for(;a;){A=a.index;const t=r-c.slice(A,A+r).join(\"\").length,i=A-c.slice(0,A).join(\"\").length,n=[A+i,A+r+i+t];if(n[0]!==n[1]&&e.push(n),l=l.slice(0,A)+new Array(r+1).join(\" \")+l.slice(A+r),!o.findAllOccurrences)break;a=s.exec(l)}return e}),[]).sort(((e,t)=>e[0]-t[0]))}},826:e=>{var t={À:\"A\",Á:\"A\",Â:\"A\",Ã:\"A\",Ä:\"A\",Å:\"A\",Ấ:\"A\",Ắ:\"A\",Ẳ:\"A\",Ẵ:\"A\",Ặ:\"A\",Æ:\"AE\",Ầ:\"A\",Ằ:\"A\",Ȃ:\"A\",Ç:\"C\",Ḉ:\"C\",È:\"E\",É:\"E\",Ê:\"E\",Ë:\"E\",Ế:\"E\",Ḗ:\"E\",Ề:\"E\",Ḕ:\"E\",Ḝ:\"E\",Ȇ:\"E\",Ì:\"I\",Í:\"I\",Î:\"I\",Ï:\"I\",Ḯ:\"I\",Ȋ:\"I\",Ð:\"D\",Ñ:\"N\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Õ:\"O\",Ö:\"O\",Ø:\"O\",Ố:\"O\",Ṍ:\"O\",Ṓ:\"O\",Ȏ:\"O\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ü:\"U\",Ý:\"Y\",à:\"a\",á:\"a\",â:\"a\",ã:\"a\",ä:\"a\",å:\"a\",ấ:\"a\",ắ:\"a\",ẳ:\"a\",ẵ:\"a\",ặ:\"a\",æ:\"ae\",ầ:\"a\",ằ:\"a\",ȃ:\"a\",ç:\"c\",ḉ:\"c\",è:\"e\",é:\"e\",ê:\"e\",ë:\"e\",ế:\"e\",ḗ:\"e\",ề:\"e\",ḕ:\"e\",ḝ:\"e\",ȇ:\"e\",ì:\"i\",í:\"i\",î:\"i\",ï:\"i\",ḯ:\"i\",ȋ:\"i\",ð:\"d\",ñ:\"n\",ò:\"o\",ó:\"o\",ô:\"o\",õ:\"o\",ö:\"o\",ø:\"o\",ố:\"o\",ṍ:\"o\",ṓ:\"o\",ȏ:\"o\",ù:\"u\",ú:\"u\",û:\"u\",ü:\"u\",ý:\"y\",ÿ:\"y\",Ā:\"A\",ā:\"a\",Ă:\"A\",ă:\"a\",Ą:\"A\",ą:\"a\",Ć:\"C\",ć:\"c\",Ĉ:\"C\",ĉ:\"c\",Ċ:\"C\",ċ:\"c\",Č:\"C\",č:\"c\",C̆:\"C\",c̆:\"c\",Ď:\"D\",ď:\"d\",Đ:\"D\",đ:\"d\",Ē:\"E\",ē:\"e\",Ĕ:\"E\",ĕ:\"e\",Ė:\"E\",ė:\"e\",Ę:\"E\",ę:\"e\",Ě:\"E\",ě:\"e\",Ĝ:\"G\",Ǵ:\"G\",ĝ:\"g\",ǵ:\"g\",Ğ:\"G\",ğ:\"g\",Ġ:\"G\",ġ:\"g\",Ģ:\"G\",ģ:\"g\",Ĥ:\"H\",ĥ:\"h\",Ħ:\"H\",ħ:\"h\",Ḫ:\"H\",ḫ:\"h\",Ĩ:\"I\",ĩ:\"i\",Ī:\"I\",ī:\"i\",Ĭ:\"I\",ĭ:\"i\",Į:\"I\",į:\"i\",İ:\"I\",ı:\"i\",IJ:\"IJ\",ij:\"ij\",Ĵ:\"J\",ĵ:\"j\",Ķ:\"K\",ķ:\"k\",Ḱ:\"K\",ḱ:\"k\",K̆:\"K\",k̆:\"k\",Ĺ:\"L\",ĺ:\"l\",Ļ:\"L\",ļ:\"l\",Ľ:\"L\",ľ:\"l\",Ŀ:\"L\",ŀ:\"l\",Ł:\"l\",ł:\"l\",Ḿ:\"M\",ḿ:\"m\",M̆:\"M\",m̆:\"m\",Ń:\"N\",ń:\"n\",Ņ:\"N\",ņ:\"n\",Ň:\"N\",ň:\"n\",ʼn:\"n\",N̆:\"N\",n̆:\"n\",Ō:\"O\",ō:\"o\",Ŏ:\"O\",ŏ:\"o\",Ő:\"O\",ő:\"o\",Œ:\"OE\",œ:\"oe\",P̆:\"P\",p̆:\"p\",Ŕ:\"R\",ŕ:\"r\",Ŗ:\"R\",ŗ:\"r\",Ř:\"R\",ř:\"r\",R̆:\"R\",r̆:\"r\",Ȓ:\"R\",ȓ:\"r\",Ś:\"S\",ś:\"s\",Ŝ:\"S\",ŝ:\"s\",Ş:\"S\",Ș:\"S\",ș:\"s\",ş:\"s\",Š:\"S\",š:\"s\",Ţ:\"T\",ţ:\"t\",ț:\"t\",Ț:\"T\",Ť:\"T\",ť:\"t\",Ŧ:\"T\",ŧ:\"t\",T̆:\"T\",t̆:\"t\",Ũ:\"U\",ũ:\"u\",Ū:\"U\",ū:\"u\",Ŭ:\"U\",ŭ:\"u\",Ů:\"U\",ů:\"u\",Ű:\"U\",ű:\"u\",Ų:\"U\",ų:\"u\",Ȗ:\"U\",ȗ:\"u\",V̆:\"V\",v̆:\"v\",Ŵ:\"W\",ŵ:\"w\",Ẃ:\"W\",ẃ:\"w\",X̆:\"X\",x̆:\"x\",Ŷ:\"Y\",ŷ:\"y\",Ÿ:\"Y\",Y̆:\"Y\",y̆:\"y\",Ź:\"Z\",ź:\"z\",Ż:\"Z\",ż:\"z\",Ž:\"Z\",ž:\"z\",ſ:\"s\",ƒ:\"f\",Ơ:\"O\",ơ:\"o\",Ư:\"U\",ư:\"u\",Ǎ:\"A\",ǎ:\"a\",Ǐ:\"I\",ǐ:\"i\",Ǒ:\"O\",ǒ:\"o\",Ǔ:\"U\",ǔ:\"u\",Ǖ:\"U\",ǖ:\"u\",Ǘ:\"U\",ǘ:\"u\",Ǚ:\"U\",ǚ:\"u\",Ǜ:\"U\",ǜ:\"u\",Ứ:\"U\",ứ:\"u\",Ṹ:\"U\",ṹ:\"u\",Ǻ:\"A\",ǻ:\"a\",Ǽ:\"AE\",ǽ:\"ae\",Ǿ:\"O\",ǿ:\"o\",Þ:\"TH\",þ:\"th\",Ṕ:\"P\",ṕ:\"p\",Ṥ:\"S\",ṥ:\"s\",X́:\"X\",x́:\"x\",Ѓ:\"Г\",ѓ:\"г\",Ќ:\"К\",ќ:\"к\",A̋:\"A\",a̋:\"a\",E̋:\"E\",e̋:\"e\",I̋:\"I\",i̋:\"i\",Ǹ:\"N\",ǹ:\"n\",Ồ:\"O\",ồ:\"o\",Ṑ:\"O\",ṑ:\"o\",Ừ:\"U\",ừ:\"u\",Ẁ:\"W\",ẁ:\"w\",Ỳ:\"Y\",ỳ:\"y\",Ȁ:\"A\",ȁ:\"a\",Ȅ:\"E\",ȅ:\"e\",Ȉ:\"I\",ȉ:\"i\",Ȍ:\"O\",ȍ:\"o\",Ȑ:\"R\",ȑ:\"r\",Ȕ:\"U\",ȕ:\"u\",B̌:\"B\",b̌:\"b\",Č̣:\"C\",č̣:\"c\",Ê̌:\"E\",ê̌:\"e\",F̌:\"F\",f̌:\"f\",Ǧ:\"G\",ǧ:\"g\",Ȟ:\"H\",ȟ:\"h\",J̌:\"J\",ǰ:\"j\",Ǩ:\"K\",ǩ:\"k\",M̌:\"M\",m̌:\"m\",P̌:\"P\",p̌:\"p\",Q̌:\"Q\",q̌:\"q\",Ř̩:\"R\",ř̩:\"r\",Ṧ:\"S\",ṧ:\"s\",V̌:\"V\",v̌:\"v\",W̌:\"W\",w̌:\"w\",X̌:\"X\",x̌:\"x\",Y̌:\"Y\",y̌:\"y\",A̧:\"A\",a̧:\"a\",B̧:\"B\",b̧:\"b\",Ḑ:\"D\",ḑ:\"d\",Ȩ:\"E\",ȩ:\"e\",Ɛ̧:\"E\",ɛ̧:\"e\",Ḩ:\"H\",ḩ:\"h\",I̧:\"I\",i̧:\"i\",Ɨ̧:\"I\",ɨ̧:\"i\",M̧:\"M\",m̧:\"m\",O̧:\"O\",o̧:\"o\",Q̧:\"Q\",q̧:\"q\",U̧:\"U\",u̧:\"u\",X̧:\"X\",x̧:\"x\",Z̧:\"Z\",z̧:\"z\"},o=Object.keys(t).join(\"|\"),r=new RegExp(o,\"g\"),i=new RegExp(o,\"\"),n=function(e){return e.replace(r,(function(e){return t[e]}))};e.exports=n,e.exports.has=function(e){return!!e.match(i)},e.exports.remove=n}},t={},function o(r){var i=t[r];if(void 0!==i)return i.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,o),n.exports}(772);var e,t}));","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.AutosuggestHighlightParse=e():t.AutosuggestHighlightParse=e()}(this,(()=>{return t={705:t=>{t.exports=function(t,e){const h=[];return 0===e.length?h.push({text:t,highlight:!1}):e[0][0]>0&&h.push({text:t.slice(0,e[0][0]),highlight:!1}),e.forEach(((i,o)=>{const s=i[0],r=i[1];h.push({text:t.slice(s,r),highlight:!0}),o===e.length-1?r.\n\t\turlCharsPattern = '(?:' + urlSpecialCharsPattern + '|' + nonAsciiPattern + '|' + escapePattern + ')*?',\n\t\tlookAheadNotLetterPattern = '(?![a-zA-Z])',\n\t\tlookAheadNotOpenBracePattern = '(?!(' + nmcharPattern + '|\\\\r?\\\\n|\\\\s|#|\\\\:|\\\\.|\\\\,|\\\\+|>|~|\\\\(|\\\\)|\\\\[|\\\\]|=|\\\\*=|~=|\\\\^=|\\'[^\\']*\\'|\"[^\"]*\"|' + commentToken + ')*?{)',\n\t\tlookAheadNotClosingParenPattern = '(?!' + urlCharsPattern + validAfterUriCharsPattern + '\\\\))',\n\t\tlookAheadForClosingParenPattern = '(?=' + urlCharsPattern + validAfterUriCharsPattern + '\\\\))',\n\t\tsuffixPattern = '(\\\\s*(?:!important\\\\s*)?[;}])',\n\t\t// Regular expressions\n\t\ttemporaryTokenRegExp = /`TMP`/g,\n\t\ttemporaryLtrTokenRegExp = /`TMPLTR`/g,\n\t\ttemporaryRtlTokenRegExp = /`TMPRTL`/g,\n\t\tcommentRegExp = new RegExp( commentPattern, 'gi' ),\n\t\tnoFlipSingleRegExp = new RegExp( '(' + noFlipPattern + lookAheadNotOpenBracePattern + '[^;}]+;?)', 'gi' ),\n\t\tnoFlipClassRegExp = new RegExp( '(' + noFlipPattern + charsWithinSelectorPattern + '})', 'gi' ),\n\t\tdirectionLtrRegExp = new RegExp( '(' + directionPattern + ')ltr', 'gi' ),\n\t\tdirectionRtlRegExp = new RegExp( '(' + directionPattern + ')rtl', 'gi' ),\n\t\tleftRegExp = new RegExp( nonLetterPattern + '(left)' + lookAheadNotLetterPattern + lookAheadNotClosingParenPattern + lookAheadNotOpenBracePattern, 'gi' ),\n\t\trightRegExp = new RegExp( nonLetterPattern + '(right)' + lookAheadNotLetterPattern + lookAheadNotClosingParenPattern + lookAheadNotOpenBracePattern, 'gi' ),\n\t\tleftInUrlRegExp = new RegExp( nonLetterPattern + '(left)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\trightInUrlRegExp = new RegExp( nonLetterPattern + '(right)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\tltrDirSelector = /(:dir\\( *)ltr( *\\))/g,\n\t\trtlDirSelector = /(:dir\\( *)rtl( *\\))/g,\n\t\tltrInUrlRegExp = new RegExp( nonLetterPattern + '(ltr)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\trtlInUrlRegExp = new RegExp( nonLetterPattern + '(rtl)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\tcursorEastRegExp = new RegExp( nonLetterPattern + '([ns]?)e-resize', 'gi' ),\n\t\tcursorWestRegExp = new RegExp( nonLetterPattern + '([ns]?)w-resize', 'gi' ),\n\t\tfourNotationQuantRegExp = new RegExp( fourNotationQuantPropsPattern + signedQuantCalcPattern + '(\\\\s+)' + signedQuantCalcPattern + '(\\\\s+)' + signedQuantCalcPattern + '(\\\\s+)' + signedQuantCalcPattern + suffixPattern, 'gi' ),\n\t\tfourNotationColorRegExp = new RegExp( fourNotationColorPropsPattern + colorPattern + '(\\\\s+)' + colorPattern + '(\\\\s+)' + colorPattern + '(\\\\s+)' + colorPattern + suffixPattern, 'gi' ),\n\t\tbgHorizontalPercentageRegExp = new RegExp( '(background(?:-position)?\\\\s*:\\\\s*(?:[^:;}\\\\s]+\\\\s+)*?)(' + quantPattern + ')', 'gi' ),\n\t\tbgHorizontalPercentageXRegExp = new RegExp( '(background-position-x\\\\s*:\\\\s*)(-?' + numPattern + '%)', 'gi' ),\n\t\t// border-radius: {1,4} [optional: / {1,4} ]\n\t\tborderRadiusRegExp = new RegExp( '(border-radius\\\\s*:\\\\s*)' + signedQuantPattern + '(?:(?:\\\\s+' + signedQuantPattern + ')(?:\\\\s+' + signedQuantPattern + ')?(?:\\\\s+' + signedQuantPattern + ')?)?' +\n\t\t\t'(?:(?:(?:\\\\s*\\\\/\\\\s*)' + signedQuantPattern + ')(?:\\\\s+' + signedQuantPattern + ')?(?:\\\\s+' + signedQuantPattern + ')?(?:\\\\s+' + signedQuantPattern + ')?)?' + suffixPattern, 'gi' ),\n\t\tboxShadowRegExp = new RegExp( '(box-shadow\\\\s*:\\\\s*(?:inset\\\\s*)?)' + signedQuantPattern, 'gi' ),\n\t\ttextShadow1RegExp = new RegExp( '(text-shadow\\\\s*:\\\\s*)' + signedQuantPattern + '(\\\\s*)' + colorPattern, 'gi' ),\n\t\ttextShadow2RegExp = new RegExp( '(text-shadow\\\\s*:\\\\s*)' + colorPattern + '(\\\\s*)' + signedQuantPattern, 'gi' ),\n\t\ttextShadow3RegExp = new RegExp( '(text-shadow\\\\s*:\\\\s*)' + signedQuantPattern, 'gi' ),\n\t\ttranslateXRegExp = new RegExp( '(transform\\\\s*:[^;}]*)(translateX\\\\s*\\\\(\\\\s*)' + signedQuantPattern + '(\\\\s*\\\\))', 'gi' ),\n\t\ttranslateRegExp = new RegExp( '(transform\\\\s*:[^;}]*)(translate\\\\s*\\\\(\\\\s*)' + signedQuantPattern + '((?:\\\\s*,\\\\s*' + signedQuantPattern + '){0,2}\\\\s*\\\\))', 'gi' );\n\n\t/**\n\t * Invert the horizontal value of a background position property.\n\t *\n\t * @private\n\t * @param {string} match Matched property\n\t * @param {string} pre Text before value\n\t * @param {string} value Horizontal value\n\t * @return {string} Inverted property\n\t */\n\tfunction calculateNewBackgroundPosition( match, pre, value ) {\n\t\tvar idx, len;\n\t\tif ( value.slice( -1 ) === '%' ) {\n\t\t\tidx = value.indexOf( '.' );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\t// Two off, one for the \"%\" at the end, one for the dot itself\n\t\t\t\tlen = value.length - idx - 2;\n\t\t\t\tvalue = 100 - parseFloat( value );\n\t\t\t\tvalue = value.toFixed( len ) + '%';\n\t\t\t} else {\n\t\t\t\tvalue = 100 - parseFloat( value ) + '%';\n\t\t\t}\n\t\t}\n\t\treturn pre + value;\n\t}\n\n\t/**\n\t * Invert a set of border radius values.\n\t *\n\t * @private\n\t * @param {Array} values Matched values\n\t * @return {string} Inverted values\n\t */\n\tfunction flipBorderRadiusValues( values ) {\n\t\tswitch ( values.length ) {\n\t\t\tcase 4:\n\t\t\t\tvalues = [ values[ 1 ], values[ 0 ], values[ 3 ], values[ 2 ] ];\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tvalues = [ values[ 1 ], values[ 0 ], values[ 1 ], values[ 2 ] ];\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tvalues = [ values[ 1 ], values[ 0 ] ];\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tvalues = [ values[ 0 ] ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn values.join( ' ' );\n\t}\n\n\t/**\n\t * Invert a set of border radius values.\n\t *\n\t * @private\n\t * @param {string} match Matched property\n\t * @param {string} pre Text before value\n\t * @param {string} [firstGroup1]\n\t * @param {string} [firstGroup2]\n\t * @param {string} [firstGroup3]\n\t * @param {string} [firstGroup4]\n\t * @param {string} [secondGroup1]\n\t * @param {string} [secondGroup2]\n\t * @param {string} [secondGroup3]\n\t * @param {string} [secondGroup4]\n\t * @param {string} [post] Text after value\n\t * @return {string} Inverted property\n\t */\n\tfunction calculateNewBorderRadius( match, pre ) {\n\t\tvar values,\n\t\t\targs = [].slice.call( arguments ),\n\t\t\tfirstGroup = args.slice( 2, 6 ).filter( function ( val ) {\n\t\t\t\treturn val;\n\t\t\t} ),\n\t\t\tsecondGroup = args.slice( 6, 10 ).filter( function ( val ) {\n\t\t\t\treturn val;\n\t\t\t} ),\n\t\t\tpost = args[ 10 ] || '';\n\n\t\tif ( secondGroup.length ) {\n\t\t\tvalues = flipBorderRadiusValues( firstGroup ) + ' / ' + flipBorderRadiusValues( secondGroup );\n\t\t} else {\n\t\t\tvalues = flipBorderRadiusValues( firstGroup );\n\t\t}\n\n\t\treturn pre + values + post;\n\t}\n\n\t/**\n\t * Flip the sign of a CSS value, possibly with a unit.\n\t *\n\t * We can't just negate the value with unary minus due to the units.\n\t *\n\t * @private\n\t * @param {string} value\n\t * @return {string}\n\t */\n\tfunction flipSign( value ) {\n\t\tif ( parseFloat( value ) === 0 ) {\n\t\t\t// Don't mangle zeroes\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( value[ 0 ] === '-' ) {\n\t\t\treturn value.slice( 1 );\n\t\t}\n\n\t\treturn '-' + value;\n\t}\n\n\t/**\n\t * @private\n\t * @param {string} match\n\t * @param {string} property\n\t * @param {string} offset\n\t * @return {string}\n\t */\n\tfunction calculateNewShadow( match, property, offset ) {\n\t\treturn property + flipSign( offset );\n\t}\n\n\t/**\n\t * @private\n\t * @param {string} match\n\t * @param {string} property\n\t * @param {string} prefix\n\t * @param {string} offset\n\t * @param {string} suffix\n\t * @return {string}\n\t */\n\tfunction calculateNewTranslate( match, property, prefix, offset, suffix ) {\n\t\treturn property + prefix + flipSign( offset ) + suffix;\n\t}\n\n\t/**\n\t * @private\n\t * @param {string} match\n\t * @param {string} property\n\t * @param {string} color\n\t * @param {string} space\n\t * @param {string} offset\n\t * @return {string}\n\t */\n\tfunction calculateNewFourTextShadow( match, property, color, space, offset ) {\n\t\treturn property + color + space + flipSign( offset );\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Transform a left-to-right stylesheet to right-to-left.\n\t\t *\n\t\t * @param {string} css Stylesheet to transform\n\t\t * @param {Object} options Options\n\t\t * @param {boolean} [options.transformDirInUrl=false] Transform directions in URLs\n\t\t * (e.g. 'ltr', 'rtl')\n\t\t * @param {boolean} [options.transformEdgeInUrl=false] Transform edges in URLs\n\t\t * (e.g. 'left', 'right')\n\t\t * @return {string} Transformed stylesheet\n\t\t */\n\t\t'transform': function ( css, options ) { // eslint-disable-line quote-props\n\t\t\t// Use single quotes in this object literal key for closure compiler.\n\t\t\t// Tokenizers\n\t\t\tvar noFlipSingleTokenizer = new Tokenizer( noFlipSingleRegExp, noFlipSingleToken ),\n\t\t\t\tnoFlipClassTokenizer = new Tokenizer( noFlipClassRegExp, noFlipClassToken ),\n\t\t\t\tcommentTokenizer = new Tokenizer( commentRegExp, commentToken );\n\n\t\t\t// Tokenize\n\t\t\tcss = commentTokenizer.tokenize(\n\t\t\t\tnoFlipClassTokenizer.tokenize(\n\t\t\t\t\tnoFlipSingleTokenizer.tokenize(\n\t\t\t\t\t\t// We wrap tokens in ` , not ~ like the original implementation does.\n\t\t\t\t\t\t// This was done because ` is not a legal character in CSS and can only\n\t\t\t\t\t\t// occur in URLs, where we escape it to %60 before inserting our tokens.\n\t\t\t\t\t\tcss.replace( '`', '%60' )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Transform URLs\n\t\t\tif ( options.transformDirInUrl ) {\n\t\t\t\t// Replace 'ltr' with 'rtl' and vice versa in background URLs\n\t\t\t\tcss = css\n\t\t\t\t\t.replace( ltrDirSelector, '$1' + temporaryLtrToken + '$2' )\n\t\t\t\t\t.replace( rtlDirSelector, '$1' + temporaryRtlToken + '$2' )\n\t\t\t\t\t.replace( ltrInUrlRegExp, '$1' + temporaryToken )\n\t\t\t\t\t.replace( rtlInUrlRegExp, '$1ltr' )\n\t\t\t\t\t.replace( temporaryTokenRegExp, 'rtl' )\n\t\t\t\t\t.replace( temporaryLtrTokenRegExp, 'ltr' )\n\t\t\t\t\t.replace( temporaryRtlTokenRegExp, 'rtl' );\n\t\t\t}\n\t\t\tif ( options.transformEdgeInUrl ) {\n\t\t\t\t// Replace 'left' with 'right' and vice versa in background URLs\n\t\t\t\tcss = css\n\t\t\t\t\t.replace( leftInUrlRegExp, '$1' + temporaryToken )\n\t\t\t\t\t.replace( rightInUrlRegExp, '$1left' )\n\t\t\t\t\t.replace( temporaryTokenRegExp, 'right' );\n\t\t\t}\n\n\t\t\t// Transform rules\n\t\t\tcss = css\n\t\t\t\t// Replace direction: ltr; with direction: rtl; and vice versa.\n\t\t\t\t.replace( directionLtrRegExp, '$1' + temporaryToken )\n\t\t\t\t.replace( directionRtlRegExp, '$1ltr' )\n\t\t\t\t.replace( temporaryTokenRegExp, 'rtl' )\n\t\t\t\t// Flip rules like left: , padding-right: , etc.\n\t\t\t\t.replace( leftRegExp, '$1' + temporaryToken )\n\t\t\t\t.replace( rightRegExp, '$1left' )\n\t\t\t\t.replace( temporaryTokenRegExp, 'right' )\n\t\t\t\t// Flip East and West in rules like cursor: nw-resize;\n\t\t\t\t.replace( cursorEastRegExp, '$1$2' + temporaryToken )\n\t\t\t\t.replace( cursorWestRegExp, '$1$2e-resize' )\n\t\t\t\t.replace( temporaryTokenRegExp, 'w-resize' )\n\t\t\t\t// Border radius\n\t\t\t\t.replace( borderRadiusRegExp, calculateNewBorderRadius )\n\t\t\t\t// Shadows\n\t\t\t\t.replace( boxShadowRegExp, calculateNewShadow )\n\t\t\t\t.replace( textShadow1RegExp, calculateNewFourTextShadow )\n\t\t\t\t.replace( textShadow2RegExp, calculateNewFourTextShadow )\n\t\t\t\t.replace( textShadow3RegExp, calculateNewShadow )\n\t\t\t\t// Translate\n\t\t\t\t.replace( translateXRegExp, calculateNewTranslate )\n\t\t\t\t.replace( translateRegExp, calculateNewTranslate )\n\t\t\t\t// Swap the second and fourth parts in four-part notation rules\n\t\t\t\t// like padding: 1px 2px 3px 4px;\n\t\t\t\t.replace( fourNotationQuantRegExp, '$1$2$3$8$5$6$7$4$9' )\n\t\t\t\t.replace( fourNotationColorRegExp, '$1$2$3$8$5$6$7$4$9' )\n\t\t\t\t// Flip horizontal background percentages\n\t\t\t\t.replace( bgHorizontalPercentageRegExp, calculateNewBackgroundPosition )\n\t\t\t\t.replace( bgHorizontalPercentageXRegExp, calculateNewBackgroundPosition );\n\n\t\t\t// Detokenize\n\t\t\tcss = noFlipSingleTokenizer.detokenize(\n\t\t\t\tnoFlipClassTokenizer.detokenize(\n\t\t\t\t\tcommentTokenizer.detokenize( css )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn css;\n\t\t}\n\t};\n}\n\n/* Initialization */\n\ncssjanus = new CSSJanus();\n\n/* Exports */\n\nif ( typeof module !== 'undefined' && module.exports ) {\n\t/**\n\t * Transform a left-to-right stylesheet to right-to-left.\n\t *\n\t * This function is a static wrapper around the transform method of an instance of CSSJanus.\n\t *\n\t * @param {string} css Stylesheet to transform\n\t * @param {Object|boolean} [options] Options object, or transformDirInUrl option (back-compat)\n\t * @param {boolean} [options.transformDirInUrl=false] Transform directions in URLs\n\t * (e.g. 'ltr', 'rtl')\n\t * @param {boolean} [options.transformEdgeInUrl=false] Transform edges in URLs\n\t * (e.g. 'left', 'right')\n\t * @param {boolean} [transformEdgeInUrl] Back-compat parameter\n\t * @return {string} Transformed stylesheet\n\t */\n\texports.transform = function ( css, options, transformEdgeInUrl ) {\n\t\tvar norm;\n\t\tif ( typeof options === 'object' ) {\n\t\t\tnorm = options;\n\t\t} else {\n\t\t\tnorm = {};\n\t\t\tif ( typeof options === 'boolean' ) {\n\t\t\t\tnorm.transformDirInUrl = options;\n\t\t\t}\n\t\t\tif ( typeof transformEdgeInUrl === 'boolean' ) {\n\t\t\t\tnorm.transformEdgeInUrl = transformEdgeInUrl;\n\t\t\t}\n\t\t}\n\t\treturn cssjanus.transform( css, norm );\n\t};\n} else if ( typeof window !== 'undefined' ) {\n\t/* global window */\n\t// Allow cssjanus to be used in a browser.\n\t// eslint-disable-next-line dot-notation\n\twindow[ 'cssjanus' ] = cssjanus;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = memoize;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseSum = require('./_baseSum'),\n identity = require('./identity');\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n}\n\nmodule.exports = sum;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","// @flow\n/* eslint-env browser */\nimport type {Window} from '../../types/window.js';\n\n// shim window for the case of requiring the browser bundle in Node\nexport default ((typeof self !== 'undefined' ? self : ({}: any)): Window);\n","// @flow strict\n\ntype Config = {|\n API_URL: string,\n API_URL_REGEX: RegExp,\n API_TILEJSON_REGEX: RegExp,\n API_FONTS_REGEX: RegExp,\n API_SPRITE_REGEX: RegExp,\n API_STYLE_REGEX: RegExp,\n API_CDN_URL_REGEX: RegExp,\n EVENTS_URL: ?string,\n SESSION_PATH: string,\n FEEDBACK_URL: string,\n REQUIRE_ACCESS_TOKEN: boolean,\n TILE_URL_VERSION: string,\n RASTER_URL_PREFIX: string,\n ACCESS_TOKEN: ?string,\n MAX_PARALLEL_IMAGE_REQUESTS: number\n|};\n\nlet mapboxHTTPURLRegex;\n\nconst config: Config = {\n API_URL: 'https://api.mapbox.com',\n get API_URL_REGEX () {\n if (mapboxHTTPURLRegex == null) {\n const prodMapboxHTTPURLRegex = /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;\n try {\n mapboxHTTPURLRegex = (process.env.API_URL_REGEX != null) ? new RegExp(process.env.API_URL_REGEX) : prodMapboxHTTPURLRegex;\n } catch (e) {\n mapboxHTTPURLRegex = prodMapboxHTTPURLRegex;\n }\n }\n\n return mapboxHTTPURLRegex;\n },\n get API_TILEJSON_REGEX() {\n // https://docs.mapbox.com/api/maps/mapbox-tiling-service/#retrieve-tilejson-metadata\n return /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/v[0-9]*\\/.*\\.json.*$)/i;\n },\n get API_SPRITE_REGEX() {\n // https://docs.mapbox.com/api/maps/styles/#retrieve-a-sprite-image-or-json\n return /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/styles\\/v[0-9]*\\/)(.*\\/sprite.*\\..*$)/i;\n },\n get API_FONTS_REGEX() {\n // https://docs.mapbox.com/api/maps/fonts/#retrieve-font-glyph-ranges\n return /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/fonts\\/v[0-9]*\\/)(.*\\.pbf.*$)/i;\n },\n get API_STYLE_REGEX() {\n // https://docs.mapbox.com/api/maps/styles/#retrieve-a-style\n return /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/styles\\/v[0-9]*\\/)(.*$)/i;\n },\n get API_CDN_URL_REGEX() {\n return /^((https?:)?\\/\\/)?api\\.mapbox\\.c(n|om)(\\/mapbox-gl-js\\/)(.*$)/i;\n },\n get EVENTS_URL() {\n if (!config.API_URL) { return null; }\n try {\n const url = new URL(config.API_URL);\n if (url.hostname === 'api.mapbox.cn') {\n return 'https://events.mapbox.cn/events/v2';\n } else if (url.hostname === 'api.mapbox.com') {\n return 'https://events.mapbox.com/events/v2';\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n },\n SESSION_PATH: '/map-sessions/v1',\n FEEDBACK_URL: 'https://apps.mapbox.com/feedback',\n TILE_URL_VERSION: 'v4',\n RASTER_URL_PREFIX: 'raster/v1',\n REQUIRE_ACCESS_TOKEN: true,\n ACCESS_TOKEN: null,\n MAX_PARALLEL_IMAGE_REQUESTS: 16\n};\n\nexport default config;\n","// @flow strict\n\nimport window from './window.js';\n\nconst exported = {\n supported: false,\n testSupport\n};\n\nexport default exported;\n\nlet glForTesting;\nlet webpCheckComplete = false;\nlet webpImgTest;\nlet webpImgTestOnloadComplete = false;\n\nif (window.document) {\n webpImgTest = window.document.createElement('img');\n webpImgTest.onload = function() {\n if (glForTesting) testWebpTextureUpload(glForTesting);\n glForTesting = null;\n webpImgTestOnloadComplete = true;\n };\n webpImgTest.onerror = function() {\n webpCheckComplete = true;\n glForTesting = null;\n };\n webpImgTest.src = 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=';\n}\n\nfunction testSupport(gl: WebGLRenderingContext) {\n if (webpCheckComplete || !webpImgTest) return;\n\n // HTMLImageElement.complete is set when an image is done loading it's source\n // regardless of whether the load was successful or not.\n // It's possible for an error to set HTMLImageElement.complete to true which would trigger\n // testWebpTextureUpload and mistakenly set exported.supported to true in browsers which don't support webp\n // To avoid this, we set a flag in the image's onload handler and only call testWebpTextureUpload\n // after a successful image load event.\n if (webpImgTestOnloadComplete) {\n testWebpTextureUpload(gl);\n } else {\n glForTesting = gl;\n\n }\n}\n\nfunction testWebpTextureUpload(gl: WebGLRenderingContext) {\n // Edge 18 supports WebP but not uploading a WebP image to a gl texture\n // Test support for this before allowing WebP images.\n // https://github.com/mapbox/mapbox-gl-js/issues/7671\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n try {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, webpImgTest);\n\n // The error does not get triggered in Edge if the context is lost\n if (gl.isContextLost()) return;\n\n exported.supported = true;\n } catch (e) {\n // Catch \"Unspecified Error.\" in Edge 18.\n }\n\n gl.deleteTexture(texture);\n\n webpCheckComplete = true;\n}\n","// @flow\n\n/***** START WARNING REMOVAL OR MODIFICATION OF THE\n* FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******\n* The following code is used to access Mapbox's APIs. Removal or modification\n* of this code can result in higher fees and/or\n* termination of your account with Mapbox.\n*\n* Under the Mapbox Terms of Service, you may not use this code to access Mapbox\n* Mapping APIs other than through Mapbox SDKs.\n*\n* The Mapping APIs documentation is available at https://docs.mapbox.com/api/maps/#maps\n* and the Mapbox Terms of Service are available at https://www.mapbox.com/tos/\n******************************************************************************/\n\ntype SkuTokenObject = {|\n token: string,\n tokenExpiresAt: number\n|};\n\nconst SKU_ID = '01';\n\nfunction createSkuToken(): SkuTokenObject {\n // SKU_ID and TOKEN_VERSION are specified by an internal schema and should not change\n const TOKEN_VERSION = '1';\n const base62chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n // sessionRandomizer is a randomized 10-digit base-62 number\n let sessionRandomizer = '';\n for (let i = 0; i < 10; i++) {\n sessionRandomizer += base62chars[Math.floor(Math.random() * 62)];\n }\n const expiration = 12 * 60 * 60 * 1000; // 12 hours\n const token = [TOKEN_VERSION, SKU_ID, sessionRandomizer].join('');\n const tokenExpiresAt = Date.now() + expiration;\n\n return {token, tokenExpiresAt};\n}\n\nexport {createSkuToken, SKU_ID};\n\n/***** END WARNING - REMOVAL OR MODIFICATION OF THE\nPRECEDING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******/\n","'use strict';\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype = {\n sampleCurveX: function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n },\n\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n\n sampleCurveDerivativeX: function (t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n },\n\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined) epsilon = 1e-6;\n\n if (x < 0.0) return 0.0;\n if (x > 1.0) return 1.0;\n\n var t = x;\n\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon) return t;\n\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 1e-6) break;\n\n t = t - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n var t0 = 0.0;\n var t1 = 1.0;\n t = x;\n\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon) break;\n\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n\n t = (t1 - t0) * 0.5 + t0;\n }\n\n return t;\n },\n\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","// @flow\n\nimport UnitBezier from '@mapbox/unitbezier';\n\nimport Point from '@mapbox/point-geometry';\nimport window from './window.js';\nimport assert from 'assert';\n\nimport type {Callback} from '../types/callback.js';\nimport type {Mat4, Vec4} from 'gl-matrix';\n\nconst DEG_TO_RAD = Math.PI / 180;\nconst RAD_TO_DEG = 180 / Math.PI;\n\n/**\n * Converts an angle in degrees to radians\n * copy all properties from the source objects into the destination.\n * The last source object given overrides properties from previous\n * source objects.\n *\n * @param a angle to convert\n * @returns the angle in radians\n * @private\n */\nexport function degToRad(a: number): number {\n return a * DEG_TO_RAD;\n}\n\n/**\n * Converts an angle in radians to degrees\n * copy all properties from the source objects into the destination.\n * The last source object given overrides properties from previous\n * source objects.\n *\n * @param a angle to convert\n * @returns the angle in degrees\n * @private\n */\nexport function radToDeg(a: number): number {\n return a * RAD_TO_DEG;\n}\n\nconst TILE_CORNERS = [[0, 0], [1, 0], [1, 1], [0, 1]];\n\n/**\n * Given a particular bearing, returns the corner of the tile thats farthest\n * along the bearing.\n *\n * @param {number} bearing angle in degrees (-180, 180]\n * @returns {QuadCorner}\n * @private\n */\nexport function furthestTileCorner(bearing: number): [number, number] {\n const alignedBearing = ((bearing + 45) + 360) % 360;\n const cornerIdx = Math.round(alignedBearing / 90) % 4;\n return TILE_CORNERS[cornerIdx];\n}\n\n/**\n * @module util\n * @private\n */\n\n/**\n * Given a value `t` that varies between 0 and 1, return\n * an interpolation function that eases between 0 and 1 in a pleasing\n * cubic in-out fashion.\n *\n * @private\n */\nexport function easeCubicInOut(t: number): number {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n const t2 = t * t,\n t3 = t2 * t;\n return 4 * (t < 0.5 ? t3 : 3 * (t - t2) + t3 - 0.75);\n}\n\n/**\n * Computes an AABB for a set of points.\n *\n * @param {Point[]} points\n * @returns {{ min: Point, max: Point}}\n * @private\n */\nexport function getBounds(points: Point[]): { min: Point, max: Point} {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const p of points) {\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n\n return {\n min: new Point(minX, minY),\n max: new Point(maxX, maxY),\n };\n}\n\n/**\n * Returns the square of the 2D distance between an AABB defined by min and max and a point.\n * If point is null or undefined, the AABB distance from the origin (0,0) is returned.\n *\n * @param {Array} min The minimum extent of the AABB.\n * @param {Array} max The maximum extent of the AABB.\n * @param {Array} [point] The point to compute the distance from, may be undefined.\n * @returns {number} The square distance from the AABB, 0.0 if the AABB contains the point.\n */\nexport function getAABBPointSquareDist(min: Array, max: Array, point: ?Array): number {\n let sqDist = 0.0;\n\n for (let i = 0; i < 2; ++i) {\n const v = point ? point[i] : 0.0;\n assert(min[i] < max[i], 'Invalid aabb min and max inputs, min[i] must be < max[i].');\n if (min[i] > v) sqDist += (min[i] - v) * (min[i] - v);\n if (max[i] < v) sqDist += (v - max[i]) * (v - max[i]);\n }\n\n return sqDist;\n}\n\n/**\n * Converts a AABB into a polygon with clockwise winding order.\n *\n * @param {Point} min The top left point.\n * @param {Point} max The bottom right point.\n * @param {number} [buffer=0] The buffer width.\n * @param {boolean} [close=true] Whether to close the polygon or not.\n * @returns {Point[]} The polygon.\n */\nexport function polygonizeBounds(min: Point, max: Point, buffer: number = 0, close: boolean = true): Point[] {\n const offset = new Point(buffer, buffer);\n const minBuf = min.sub(offset);\n const maxBuf = max.add(offset);\n const polygon = [minBuf, new Point(maxBuf.x, minBuf.y), maxBuf, new Point(minBuf.x, maxBuf.y)];\n\n if (close) {\n polygon.push(minBuf.clone());\n }\n return polygon;\n}\n\n/**\n * Takes a convex ring and expands it outward by applying a buffer around it.\n * This function assumes that the ring is in clockwise winding order.\n *\n * @param {Point[]} ring The input ring.\n * @param {number} buffer The buffer width.\n * @returns {Point[]} The expanded ring.\n */\nexport function bufferConvexPolygon(ring: Point[], buffer: number): Point[] {\n assert(ring.length > 2, 'bufferConvexPolygon requires the ring to have atleast 3 points');\n const output = [];\n for (let currIdx = 0; currIdx < ring.length; currIdx++) {\n const prevIdx = wrap(currIdx - 1, -1, ring.length - 1);\n const nextIdx = wrap(currIdx + 1, -1, ring.length - 1);\n const prev = ring[prevIdx];\n const curr = ring[currIdx];\n const next = ring[nextIdx];\n const p1 = prev.sub(curr).unit();\n const p2 = next.sub(curr).unit();\n const interiorAngle = p2.angleWithSep(p1.x, p1.y);\n // Calcuate a vector that points in the direction of the angle bisector between two sides.\n // Scale it based on a right angled triangle constructed at that corner.\n const offset = p1.add(p2).unit().mult(-1 * buffer / Math.sin(interiorAngle / 2));\n output.push(curr.add(offset));\n }\n return output;\n}\n\ntype EaseFunction = (t: number) => number;\n\n/**\n * Given given (x, y), (x1, y1) control points for a bezier curve,\n * return a function that interpolates along that curve.\n *\n * @param p1x control point 1 x coordinate\n * @param p1y control point 1 y coordinate\n * @param p2x control point 2 x coordinate\n * @param p2y control point 2 y coordinate\n * @private\n */\nexport function bezier(p1x: number, p1y: number, p2x: number, p2y: number): EaseFunction {\n const bezier = new UnitBezier(p1x, p1y, p2x, p2y);\n return function(t: number) {\n return bezier.solve(t);\n };\n}\n\n/**\n * A default bezier-curve powered easing function with\n * control points (0.25, 0.1) and (0.25, 1)\n *\n * @private\n */\nexport const ease: EaseFunction = bezier(0.25, 0.1, 0.25, 1);\n\n/**\n * constrain n to the given range via min + max\n *\n * @param n value\n * @param min the minimum value to be returned\n * @param max the maximum value to be returned\n * @returns the clamped value\n * @private\n */\nexport function clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * Equivalent to GLSL smoothstep.\n *\n * @param {number} e0 The lower edge of the sigmoid\n * @param {number} e1 The upper edge of the sigmoid\n * @param {number} x the value to be interpolated\n * @returns {number} in the range [0, 1]\n * @private\n */\nexport function smoothstep(e0: number, e1: number, x: number): number {\n x = clamp((x - e0) / (e1 - e0), 0, 1);\n return x * x * (3 - 2 * x);\n}\n\n/**\n * constrain n to the given range, excluding the minimum, via modular arithmetic\n *\n * @param n value\n * @param min the minimum value to be returned, exclusive\n * @param max the maximum value to be returned, inclusive\n * @returns constrained number\n * @private\n */\nexport function wrap(n: number, min: number, max: number): number {\n const d = max - min;\n const w = ((n - min) % d + d) % d + min;\n return (w === min) ? max : w;\n}\n\n/**\n * Computes shortest angle in range [-180, 180) between two angles.\n *\n * @param {*} a First angle in degrees\n * @param {*} b Second angle in degrees\n * @returns Shortest angle\n * @private\n */\nexport function shortestAngle(a: number, b: number): number {\n const diff = (b - a + 180) % 360 - 180;\n return diff < -180 ? diff + 360 : diff;\n}\n\n/*\n * Call an asynchronous function on an array of arguments,\n * calling `callback` with the completed results of all calls.\n *\n * @param array input to each call of the async function.\n * @param fn an async function with signature (data, callback)\n * @param callback a callback run after all async work is done.\n * called with an array, containing the results of each async call.\n * @private\n */\nexport function asyncAll(\n array: Array,\n fn: (item: Item, fnCallback: Callback) => void,\n callback: Callback>\n): void {\n if (!array.length) { return callback(null, []); }\n let remaining = array.length;\n const results = new Array(array.length);\n let error = null;\n array.forEach((item, i) => {\n fn(item, (err, result) => {\n if (err) error = err;\n results[i] = ((result: any): Result); // https://github.com/facebook/flow/issues/2123\n if (--remaining === 0) callback(error, results);\n });\n });\n}\n\n/*\n * Polyfill for Object.values. Not fully spec compliant, but we don't\n * need it to be.\n *\n * @private\n */\nexport function values(obj: {[key: string]: T}): Array {\n const result = [];\n for (const k in obj) {\n result.push(obj[k]);\n }\n return result;\n}\n\n/*\n * Compute the difference between the keys in one object and the keys\n * in another object.\n *\n * @returns keys difference\n * @private\n */\nexport function keysDifference(obj: {[key: string]: S}, other: {[key: string]: T}): Array {\n const difference = [];\n for (const i in obj) {\n if (!(i in other)) {\n difference.push(i);\n }\n }\n return difference;\n}\n\n/**\n * Given a destination object and optionally many source objects,\n * copy all properties from the source objects into the destination.\n * The last source object given overrides properties from previous\n * source objects.\n *\n * @param dest destination object\n * @param sources sources from which properties are pulled\n * @private\n */\nexport function extend(dest: Object, ...sources: Array): Object {\n for (const src of sources) {\n for (const k in src) {\n dest[k] = src[k];\n }\n }\n return dest;\n}\n\n/**\n * Given an object and a number of properties as strings, return version\n * of that object with only those properties.\n *\n * @param src the object\n * @param properties an array of property names chosen\n * to appear on the resulting object.\n * @returns object with limited properties.\n * @example\n * var foo = { name: 'Charlie', age: 10 };\n * var justName = pick(foo, ['name']);\n * // justName = { name: 'Charlie' }\n * @private\n */\nexport function pick(src: Object, properties: Array): Object {\n const result = {};\n for (let i = 0; i < properties.length; i++) {\n const k = properties[i];\n if (k in src) {\n result[k] = src[k];\n }\n }\n return result;\n}\n\nlet id = 1;\n\n/**\n * Return a unique numeric id, starting at 1 and incrementing with\n * each call.\n *\n * @returns unique numeric id.\n * @private\n */\nexport function uniqueId(): number {\n return id++;\n}\n\n/**\n * Return a random UUID (v4). Taken from: https://gist.github.com/jed/982883\n * @private\n */\nexport function uuid(): string {\n function b(a: void) {\n return a ? (a ^ Math.random() * (16 >> a / 4)).toString(16) :\n //$FlowFixMe: Flow doesn't like the implied array literal conversion here\n ([1e7] + -[1e3] + -4e3 + -8e3 + -1e11).replace(/[018]/g, b);\n }\n return b();\n}\n\n/**\n * Return whether a given value is a power of two\n * @private\n */\nexport function isPowerOfTwo(value: number): boolean {\n return (Math.log(value) / Math.LN2) % 1 === 0;\n}\n\n/**\n * Return the next power of two, or the input value if already a power of two\n * @private\n */\nexport function nextPowerOfTwo(value: number): number {\n if (value <= 1) return 1;\n return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\n\n/**\n * Return the previous power of two, or the input value if already a power of two\n * @private\n */\nexport function prevPowerOfTwo(value: number): number {\n if (value <= 1) return 1;\n return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\n\n/**\n * Validate a string to match UUID(v4) of the\n * form: xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx\n * @param str string to validate.\n * @private\n */\nexport function validateUuid(str: ?string): boolean {\n return str ? /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str) : false;\n}\n\n/**\n * Given an array of member function names as strings, replace all of them\n * with bound versions that will always refer to `context` as `this`. This\n * is useful for classes where otherwise event bindings would reassign\n * `this` to the evented object or some other value: this lets you ensure\n * the `this` value always.\n *\n * @param fns list of member function names\n * @param context the context value\n * @example\n * function MyClass() {\n * bindAll(['ontimer'], this);\n * this.name = 'Tom';\n * }\n * MyClass.prototype.ontimer = function() {\n * alert(this.name);\n * };\n * var myClass = new MyClass();\n * setTimeout(myClass.ontimer, 100);\n * @private\n */\nexport function bindAll(fns: Array, context: Object): void {\n fns.forEach((fn) => {\n if (!context[fn]) { return; }\n context[fn] = context[fn].bind(context);\n });\n}\n\n/**\n * Determine if a string ends with a particular substring\n *\n * @private\n */\nexport function endsWith(string: string, suffix: string): boolean {\n return string.indexOf(suffix, string.length - suffix.length) !== -1;\n}\n\n/**\n * Create an object by mapping all the values of an existing object while\n * preserving their keys.\n *\n * @private\n */\n// $FlowFixMe[missing-this-annot]\nexport function mapObject(input: Object, iterator: Function, context?: Object): Object {\n const output = {};\n for (const key in input) {\n output[key] = iterator.call(context || this, input[key], key, input);\n }\n return output;\n}\n\n/**\n * Create an object by filtering out values of an existing object.\n *\n * @private\n */\n// $FlowFixMe[missing-this-annot]\nexport function filterObject(input: Object, iterator: Function, context?: Object): Object {\n const output = {};\n for (const key in input) {\n if (iterator.call(context || this, input[key], key, input)) {\n output[key] = input[key];\n }\n }\n return output;\n}\n\nimport deepEqual from '../style-spec/util/deep_equal.js';\nexport {deepEqual};\n\n/**\n * Deeply clones two objects.\n *\n * @private\n */\nexport function clone(input: T): T {\n if (Array.isArray(input)) {\n return ((input.map(clone): any): T);\n } else if (typeof input === 'object' && input) {\n return ((mapObject(input, clone): any): T);\n } else {\n return input;\n }\n}\n\n/**\n * Maps a value from a range between [min, max] to the range [outMin, outMax]\n *\n * @private\n */\nexport function mapValue(value: number, min: number, max: number, outMin: number, outMax: number): number {\n return clamp((value - min) / (max - min) * (outMax - outMin) + outMin, outMin, outMax);\n}\n\n/**\n * Check if two arrays have at least one common element.\n *\n * @private\n */\nexport function arraysIntersect(a: Array, b: Array): boolean {\n for (let l = 0; l < a.length; l++) {\n if (b.indexOf(a[l]) >= 0) return true;\n }\n return false;\n}\n\n/**\n * Print a warning message to the console and ensure duplicate warning messages\n * are not printed.\n *\n * @private\n */\nconst warnOnceHistory: {[key: string]: boolean} = {};\n\nexport function warnOnce(message: string): void {\n if (!warnOnceHistory[message]) {\n // console isn't defined in some WebWorkers, see #2558\n if (typeof console !== \"undefined\") console.warn(message);\n warnOnceHistory[message] = true;\n }\n}\n\n/**\n * Indicates if the provided Points are in a counter clockwise (true) or clockwise (false) order\n *\n * @private\n * @returns true for a counter clockwise set of points\n */\n// http://bryceboe.com/2006/10/23/line-segment-intersection-algorithm/\nexport function isCounterClockwise(a: Point, b: Point, c: Point): boolean {\n return (c.y - a.y) * (b.x - a.x) > (b.y - a.y) * (c.x - a.x);\n}\n\n/**\n * Returns the signed area for the polygon ring. Postive areas are exterior rings and\n * have a clockwise winding. Negative areas are interior rings and have a counter clockwise\n * ordering.\n *\n * @private\n * @param ring Exterior or interior ring\n */\nexport function calculateSignedArea(ring: Array): number {\n let sum = 0;\n for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n\n/* global self, WorkerGlobalScope */\n/**\n * Returns true if run in the web-worker context.\n *\n * @private\n * @returns {boolean}\n */\nexport function isWorker(): boolean {\n return typeof WorkerGlobalScope !== 'undefined' && typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope;\n}\n\n/**\n * Parses data from 'Cache-Control' headers.\n *\n * @private\n * @param cacheControl Value of 'Cache-Control' header\n * @return object containing parsed header info.\n */\n\nexport function parseCacheControl(cacheControl: string): Object {\n // Taken from [Wreck](https://github.com/hapijs/wreck)\n const re = /(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g;\n\n const header = {};\n cacheControl.replace(re, ($0, $1, $2, $3) => {\n const value = $2 || $3;\n header[$1] = value ? value.toLowerCase() : true;\n return '';\n });\n\n if (header['max-age']) {\n const maxAge = parseInt(header['max-age'], 10);\n if (isNaN(maxAge)) delete header['max-age'];\n else header['max-age'] = maxAge;\n }\n\n return header;\n}\n\nlet _isSafari = null;\n\nexport function _resetSafariCheckForTest() {\n _isSafari = null;\n}\n\n/**\n * Returns true when run in WebKit derived browsers.\n * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to\n * transfer data between WebWorkers and the main thread.\n * https://github.com/mapbox/mapbox-gl-js/issues/8771\n *\n * This should be removed once the underlying Safari issue is fixed.\n *\n * @private\n * @param scope {WindowOrWorkerGlobalScope} Since this function is used both on the main thread and WebWorker context,\n * let the calling scope pass in the global scope object.\n * @returns {boolean}\n */\nexport function isSafari(scope: any): boolean {\n if (_isSafari == null) {\n const userAgent = scope.navigator ? scope.navigator.userAgent : null;\n _isSafari = !!scope.safari ||\n !!(userAgent && (/\\b(iPad|iPhone|iPod)\\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome'))));\n }\n return _isSafari;\n}\n\nexport function isSafariWithAntialiasingBug(scope: any): ?boolean {\n const userAgent = scope.navigator ? scope.navigator.userAgent : null;\n if (!isSafari(scope)) return false;\n // 15.4 is known to be buggy.\n // 15.5 may or may not include the fix. Mark it as buggy to be on the safe side.\n return userAgent && (userAgent.match('Version/15.4') || userAgent.match('Version/15.5') || userAgent.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/));\n}\n\nexport function isFullscreen(): boolean {\n return !!window.document.fullscreenElement || !!window.document.webkitFullscreenElement;\n}\n\nexport function storageAvailable(type: string): boolean {\n try {\n const storage = window[type];\n storage.setItem('_mapbox_test_', 1);\n storage.removeItem('_mapbox_test_');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// The following methods are from https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem\n//Unicode compliant base64 encoder for strings\nexport function b64EncodeUnicode(str: string): string {\n return window.btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,\n (match, p1) => {\n return String.fromCharCode(Number('0x' + p1)); //eslint-disable-line\n }\n )\n );\n}\n\n// Unicode compliant decoder for base64-encoded strings\nexport function b64DecodeUnicode(str: string): string {\n return decodeURIComponent(window.atob(str).split('').map((c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); //eslint-disable-line\n }).join(''));\n}\n\nexport function getColumn(matrix: Mat4, col: number): Vec4 {\n return [matrix[col * 4], matrix[col * 4 + 1], matrix[col * 4 + 2], matrix[col * 4 + 3]];\n}\n\nexport function setColumn(matrix: Mat4, col: number, values: Vec4) {\n matrix[col * 4 + 0] = values[0];\n matrix[col * 4 + 1] = values[1];\n matrix[col * 4 + 2] = values[2];\n matrix[col * 4 + 3] = values[3];\n}\n","// @flow\n\nimport {warnOnce, parseCacheControl} from './util.js';\nimport window from './window.js';\n\nimport type Dispatcher from './dispatcher.js';\n\nconst CACHE_NAME = 'mapbox-tiles';\nlet cacheLimit = 500; // 50MB / (100KB/tile) ~= 500 tiles\nlet cacheCheckThreshold = 50;\n\nconst MIN_TIME_UNTIL_EXPIRY = 1000 * 60 * 7; // 7 minutes. Skip caching tiles with a short enough max age.\n\nexport type ResponseOptions = {\n status: number,\n statusText: string,\n headers: Headers\n};\n\n// We're using a global shared cache object. Normally, requesting ad-hoc Cache objects is fine, but\n// Safari has a memory leak in which it fails to release memory when requesting keys() from a Cache\n// object. See https://bugs.webkit.org/show_bug.cgi?id=203991 for more information.\nlet sharedCache: ?Promise;\n\nfunction getCaches() {\n try {\n return window.caches;\n } catch (e) {\n //
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nconst layout: StructArrayLayout = createLayout([\n {type: 'Float32', name: 'a_globe_pos', components: 3},\n {type: 'Float32', name: 'a_uv', components: 2}\n]);\n\nexport default layout;\nexport const {members, size, alignment} = layout;\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport const posAttributesGlobeExt: StructArrayLayout = createLayout([\n {name: 'a_pos_3', components: 3, type: 'Int16'},\n]);\n\nexport default (createLayout([\n {name: 'a_pos', type: 'Int16', components: 2}\n]): StructArrayLayout);\n","// @flow\n\nimport {vec3, vec4} from 'gl-matrix';\nimport assert from 'assert';\n\nimport type {Vec3, Mat4} from 'gl-matrix';\n\nclass Ray {\n pos: Vec3;\n dir: Vec3;\n\n constructor(pos_: Vec3, dir_: Vec3) {\n this.pos = pos_;\n this.dir = dir_;\n }\n\n intersectsPlane(pt: Vec3, normal: Vec3, out: Vec3): boolean {\n const D = vec3.dot(normal, this.dir);\n\n // ray is parallel to plane, so it misses\n if (Math.abs(D) < 1e-6) { return false; }\n\n const t = (\n (pt[0] - this.pos[0]) * normal[0] +\n (pt[1] - this.pos[1]) * normal[1] +\n (pt[2] - this.pos[2]) * normal[2]) / D;\n\n out[0] = this.pos[0] + this.dir[0] * t;\n out[1] = this.pos[1] + this.dir[1] * t;\n out[2] = this.pos[2] + this.dir[2] * t;\n\n return true;\n }\n\n closestPointOnSphere(center: Vec3, r: number, out: Vec3): boolean {\n assert(vec3.squaredLength(this.dir) > 0.0 && r >= 0.0);\n\n if (vec3.equals(this.pos, center) || r === 0.0) {\n out[0] = out[1] = out[2] = 0;\n return false;\n }\n\n const [dx, dy, dz] = this.dir;\n\n const px = this.pos[0] - center[0];\n const py = this.pos[1] - center[1];\n const pz = this.pos[2] - center[2];\n\n const a = dx * dx + dy * dy + dz * dz;\n const b = 2.0 * (px * dx + py * dy + pz * dz);\n const c = (px * px + py * py + pz * pz) - r * r;\n const d = b * b - 4 * a * c;\n\n if (d < 0.0) {\n // No intersection, find distance between closest points\n const t = Math.max(-b / 2, 0.0);\n const gx = px + dx * t; // point to globe\n const gy = py + dy * t;\n const gz = pz + dz * t;\n const glen = Math.hypot(gx, gy, gz);\n out[0] = gx * r / glen;\n out[1] = gy * r / glen;\n out[2] = gz * r / glen;\n return false;\n\n } else {\n assert(a > 0.0);\n const t = (-b - Math.sqrt(d)) / (2.0 * a);\n\n if (t < 0.0) {\n // Ray is pointing away from the sphere\n const plen = Math.hypot(px, py, pz);\n out[0] = px * r / plen;\n out[1] = py * r / plen;\n out[2] = pz * r / plen;\n return false;\n\n } else {\n out[0] = px + dx * t;\n out[1] = py + dy * t;\n out[2] = pz + dz * t;\n return true;\n }\n }\n }\n}\n\nclass FrustumCorners {\n TL: [number, number, number];\n TR: [number, number, number];\n BR: [number, number, number];\n BL: [number, number, number];\n horizon: number;\n\n constructor(TL_: [number, number, number], TR_: [number, number, number], BR_: [number, number, number], BL_: [number, number, number], horizon_: number) {\n this.TL = TL_;\n this.TR = TR_;\n this.BR = BR_;\n this.BL = BL_;\n this.horizon = horizon_;\n }\n\n static fromInvProjectionMatrix(invProj: Array, horizonFromTop: number, viewportHeight: number): FrustumCorners {\n const TLClip = [-1, 1, 1];\n const TRClip = [1, 1, 1];\n const BRClip = [1, -1, 1];\n const BLClip = [-1, -1, 1];\n\n const TL = vec3.transformMat4(TLClip, TLClip, invProj);\n const TR = vec3.transformMat4(TRClip, TRClip, invProj);\n const BR = vec3.transformMat4(BRClip, BRClip, invProj);\n const BL = vec3.transformMat4(BLClip, BLClip, invProj);\n\n return new FrustumCorners(TL, TR, BR, BL, horizonFromTop / viewportHeight);\n }\n}\n\nclass Frustum {\n points: Array>;\n planes: Array>;\n\n constructor(points_: Array>, planes_: Array>) {\n this.points = points_;\n this.planes = planes_;\n }\n\n static fromInvProjectionMatrix(invProj: Float64Array, worldSize: number, zoom: number, zInMeters: boolean): Frustum {\n const clipSpaceCorners = [\n [-1, 1, -1, 1],\n [ 1, 1, -1, 1],\n [ 1, -1, -1, 1],\n [-1, -1, -1, 1],\n [-1, 1, 1, 1],\n [ 1, 1, 1, 1],\n [ 1, -1, 1, 1],\n [-1, -1, 1, 1]\n ];\n\n const scale = Math.pow(2, zoom);\n\n // Transform frustum corner points from clip space to tile space\n const frustumCoords = clipSpaceCorners\n .map(v => {\n const s = vec4.transformMat4([], v, invProj);\n const k = 1.0 / s[3] / worldSize * scale;\n // Z scale in meters.\n return vec4.mul(s, s, [k, k, zInMeters ? 1.0 / s[3] : k, k]);\n });\n\n const frustumPlanePointIndices = [\n [0, 1, 2], // near\n [6, 5, 4], // far\n [0, 3, 7], // left\n [2, 1, 5], // right\n [3, 2, 6], // bottom\n [0, 4, 5] // top\n ];\n\n const frustumPlanes = frustumPlanePointIndices.map((p: Array) => {\n const a = vec3.sub([], frustumCoords[p[0]], frustumCoords[p[1]]);\n const b = vec3.sub([], frustumCoords[p[2]], frustumCoords[p[1]]);\n const n = vec3.normalize([], vec3.cross([], a, b));\n const d = -vec3.dot(n, frustumCoords[p[1]]);\n return n.concat(d);\n });\n\n return new Frustum(frustumCoords, frustumPlanes);\n }\n}\n\nclass Aabb {\n min: Vec3;\n max: Vec3;\n center: Vec3;\n\n static fromPoints(points: Array): Aabb {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n\n for (const p of points) {\n vec3.min(min, min, p);\n vec3.max(max, max, p);\n }\n\n return new Aabb(min, max);\n }\n\n static applyTransform(aabb: Aabb, transform: Mat4): Aabb {\n const corners = aabb.getCorners();\n\n for (let i = 0; i < corners.length; ++i) {\n vec3.transformMat4(corners[i], corners[i], transform);\n }\n return Aabb.fromPoints(corners);\n }\n\n constructor(min_: Vec3, max_: Vec3) {\n this.min = min_;\n this.max = max_;\n this.center = vec3.scale([], vec3.add([], this.min, this.max), 0.5);\n }\n\n quadrant(index: number): Aabb {\n const split = [(index % 2) === 0, index < 2];\n const qMin = vec3.clone(this.min);\n const qMax = vec3.clone(this.max);\n for (let axis = 0; axis < split.length; axis++) {\n qMin[axis] = split[axis] ? this.min[axis] : this.center[axis];\n qMax[axis] = split[axis] ? this.center[axis] : this.max[axis];\n }\n // Temporarily, elevation is constant, hence quadrant.max.z = this.max.z\n qMax[2] = this.max[2];\n return new Aabb(qMin, qMax);\n }\n\n distanceX(point: Array): number {\n const pointOnAabb = Math.max(Math.min(this.max[0], point[0]), this.min[0]);\n return pointOnAabb - point[0];\n }\n\n distanceY(point: Array): number {\n const pointOnAabb = Math.max(Math.min(this.max[1], point[1]), this.min[1]);\n return pointOnAabb - point[1];\n }\n\n distanceZ(point: Array): number {\n const pointOnAabb = Math.max(Math.min(this.max[2], point[2]), this.min[2]);\n return pointOnAabb - point[2];\n }\n\n getCorners(): Array {\n const mn = this.min;\n const mx = this.max;\n return [\n [mn[0], mn[1], mn[2]],\n [mx[0], mn[1], mn[2]],\n [mx[0], mx[1], mn[2]],\n [mn[0], mx[1], mn[2]],\n [mn[0], mn[1], mx[2]],\n [mx[0], mn[1], mx[2]],\n [mx[0], mx[1], mx[2]],\n [mn[0], mx[1], mx[2]],\n ];\n }\n\n // Performs a frustum-aabb intersection test. Returns 0 if there's no intersection,\n // 1 if shapes are intersecting and 2 if the aabb if fully inside the frustum.\n intersects(frustum: Frustum): number {\n // Execute separating axis test between two convex objects to find intersections\n // Each frustum plane together with 3 major axes define the separating axes\n\n const aabbPoints = this.getCorners();\n let fullyInside = true;\n\n for (let p = 0; p < frustum.planes.length; p++) {\n const plane = frustum.planes[p];\n let pointsInside = 0;\n\n for (let i = 0; i < aabbPoints.length; i++) {\n pointsInside += vec3.dot(plane, aabbPoints[i]) + plane[3] >= 0;\n }\n\n if (pointsInside === 0)\n return 0;\n\n if (pointsInside !== aabbPoints.length)\n fullyInside = false;\n }\n\n if (fullyInside)\n return 2;\n\n for (let axis = 0; axis < 3; axis++) {\n let projMin = Number.MAX_VALUE;\n let projMax = -Number.MAX_VALUE;\n\n for (let p = 0; p < frustum.points.length; p++) {\n const projectedPoint = frustum.points[p][axis] - this.min[axis];\n\n projMin = Math.min(projMin, projectedPoint);\n projMax = Math.max(projMax, projectedPoint);\n }\n\n if (projMax < 0 || projMin > this.max[axis] - this.min[axis])\n return 0;\n }\n\n return 1;\n }\n}\nexport {\n Aabb,\n Frustum,\n FrustumCorners,\n Ray\n};\n","// @flow\nimport MercatorCoordinate, {\n lngFromMercatorX,\n latFromMercatorY,\n mercatorZfromAltitude,\n mercatorXfromLng,\n mercatorYfromLat,\n MAX_MERCATOR_LATITUDE\n} from '../mercator_coordinate.js';\nimport EXTENT from '../../data/extent.js';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport {degToRad, radToDeg, clamp, smoothstep, getColumn, shortestAngle} from '../../util/util.js';\nimport {vec3, vec4, mat3, mat4} from 'gl-matrix';\nimport SegmentVector from '../../data/segment.js';\nimport {members as globeLayoutAttributes} from '../../terrain/globe_attributes.js';\nimport posAttributes from '../../data/pos_attributes.js';\nimport {TriangleIndexArray, GlobeVertexArray, LineIndexArray, PosArray} from '../../data/array_types.js';\nimport {Aabb, Ray} from '../../util/primitives.js';\nimport LngLat, {earthRadius} from '../lng_lat.js';\nimport LngLatBounds from '../lng_lat_bounds.js';\n\nimport type Painter from '../../render/painter.js';\nimport type {CanonicalTileID, UnwrappedTileID} from '../../source/tile_id.js';\nimport type Context from '../../gl/context.js';\nimport type {Vec3, Mat4} from 'gl-matrix';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type Transform from '../transform.js';\nimport Point from '@mapbox/point-geometry';\nimport assert from 'assert';\n\nexport const GLOBE_ZOOM_THRESHOLD_MIN = 5;\nexport const GLOBE_ZOOM_THRESHOLD_MAX = 6;\n\n// At low zoom levels the globe gets rendered so that the scale at this\n// latitude matches it's scale in a mercator map. The choice of latitude is\n// a bit arbitrary. Different choices will match mercator more closely in different\n// views. 45 is a good enough choice because:\n// - it's half way from the pole to the equator\n// - matches most middle latitudes reasonably well\n// - biases towards increasing size rather than decreasing\n// - makes the globe slightly larger at very low zoom levels, where it already\n// covers less pixels than mercator (due to the curved surface)\n//\n// Changing this value will change how large a globe is rendered and could affect\n// end users. This should only be done of the tradeoffs between change and improvement\n// are carefully considered.\nexport const GLOBE_SCALE_MATCH_LATITUDE = 45;\n\nexport const GLOBE_RADIUS = EXTENT / Math.PI / 2.0;\nconst GLOBE_NORMALIZATION_BIT_RANGE = 15;\nconst GLOBE_NORMALIZATION_MASK = (1 << (GLOBE_NORMALIZATION_BIT_RANGE - 1)) - 1;\nconst GLOBE_VERTEX_GRID_SIZE = 64;\nconst GLOBE_LATITUDINAL_GRID_LOD_TABLE = [GLOBE_VERTEX_GRID_SIZE, GLOBE_VERTEX_GRID_SIZE / 2, GLOBE_VERTEX_GRID_SIZE / 4];\nconst TILE_SIZE = 512;\n\nconst GLOBE_MIN = -GLOBE_RADIUS;\nconst GLOBE_MAX = GLOBE_RADIUS;\n\nconst GLOBE_LOW_ZOOM_TILE_AABBS = [\n // z == 0\n new Aabb([GLOBE_MIN, GLOBE_MIN, GLOBE_MIN], [GLOBE_MAX, GLOBE_MAX, GLOBE_MAX]),\n // z == 1\n new Aabb([GLOBE_MIN, GLOBE_MIN, GLOBE_MIN], [0, 0, GLOBE_MAX]), // x=0, y=0\n new Aabb([0, GLOBE_MIN, GLOBE_MIN], [GLOBE_MAX, 0, GLOBE_MAX]), // x=1, y=0\n new Aabb([GLOBE_MIN, 0, GLOBE_MIN], [0, GLOBE_MAX, GLOBE_MAX]), // x=0, y=1\n new Aabb([0, 0, GLOBE_MIN], [GLOBE_MAX, GLOBE_MAX, GLOBE_MAX]) // x=1, y=1\n];\n\nexport function globeMetersToEcef(d: number): number {\n return d * GLOBE_RADIUS / earthRadius;\n}\n\nexport function globePointCoordinate(tr: Transform, x: number, y: number, clampToHorizon: boolean = true): ?MercatorCoordinate {\n const point0 = vec3.scale([], tr._camera.position, tr.worldSize);\n const point1 = [x, y, 1, 1];\n\n vec4.transformMat4(point1, point1, tr.pixelMatrixInverse);\n vec4.scale(point1, point1, 1 / point1[3]);\n\n const p0p1 = vec3.sub([], point1, point0);\n const dir = vec3.normalize([], p0p1);\n\n // Find closest point on the sphere to the ray. This is a bit more involving operation\n // if the ray is not intersecting with the sphere, in which case we \"clamp\" the ray\n // to the surface of the sphere, i.e. find a tangent vector that originates from the camera position\n const m = tr.globeMatrix;\n const globeCenter = [m[12], m[13], m[14]];\n const p0toCenter = vec3.sub([], globeCenter, point0);\n const p0toCenterDist = vec3.length(p0toCenter);\n const centerDir = vec3.normalize([], p0toCenter);\n const radius = tr.worldSize / (2.0 * Math.PI);\n const cosAngle = vec3.dot(centerDir, dir);\n\n const origoTangentAngle = Math.asin(radius / p0toCenterDist);\n const origoDirAngle = Math.acos(cosAngle);\n\n if (origoTangentAngle < origoDirAngle) {\n if (!clampToHorizon) return null;\n\n // Find the tangent vector by interpolating between camera-to-globe and camera-to-click vectors.\n // First we'll find a point P1 on the clicked ray that forms a right-angled triangle with the camera position\n // and the center of the globe. Angle of the tanget vector is then used as the interpolation factor\n const clampedP1 = [], origoToP1 = [];\n\n vec3.scale(clampedP1, dir, p0toCenterDist / cosAngle);\n vec3.normalize(origoToP1, vec3.sub(origoToP1, clampedP1, p0toCenter));\n vec3.normalize(dir, vec3.add(dir, p0toCenter, vec3.scale(dir, origoToP1, Math.tan(origoTangentAngle) * p0toCenterDist)));\n }\n\n const pointOnGlobe = [];\n const ray = new Ray(point0, dir);\n\n ray.closestPointOnSphere(globeCenter, radius, pointOnGlobe);\n\n // Transform coordinate axes to find lat & lng of the position\n const xa = vec3.normalize([], getColumn(m, 0));\n const ya = vec3.normalize([], getColumn(m, 1));\n const za = vec3.normalize([], getColumn(m, 2));\n\n const xp = vec3.dot(xa, pointOnGlobe);\n const yp = vec3.dot(ya, pointOnGlobe);\n const zp = vec3.dot(za, pointOnGlobe);\n\n const lat = radToDeg(Math.asin(-yp / radius));\n let lng = radToDeg(Math.atan2(xp, zp));\n\n // Check that the returned longitude angle is not wrapped\n lng = tr.center.lng + shortestAngle(tr.center.lng, lng);\n\n const mx = mercatorXfromLng(lng);\n const my = clamp(mercatorYfromLat(lat), 0, 1);\n\n return new MercatorCoordinate(mx, my);\n}\n\nexport class Arc {\n constructor(p0: Vec3, p1: Vec3, center: Vec3) {\n this.a = vec3.sub([], p0, center);\n this.b = vec3.sub([], p1, center);\n this.center = center;\n const an = vec3.normalize([], this.a);\n const bn = vec3.normalize([], this.b);\n this.angle = Math.acos(vec3.dot(an, bn));\n }\n\n a: Vec3;\n b: Vec3;\n center: Vec3;\n angle: number;\n}\n\nexport function slerp(a: number, b: number, angle: number, t: number): number {\n const sina = Math.sin(angle);\n return a * (Math.sin((1.0 - t) * angle) / sina) + b * (Math.sin(t * angle) / sina);\n}\n\n// Computes local extremum point of an arc on one of the dimensions (x, y or z),\n// i.e. value of a point where d/dt*f(x,y,t) == 0\nexport function localExtremum(arc: Arc, dim: number): ?number {\n // d/dt*slerp(x,y,t) = 0\n // => t = (1/a)*atan(y/(x*sin(a))-1/tan(a)), x > 0\n // => t = (1/a)*(pi/2), x == 0\n if (arc.angle === 0) {\n return null;\n }\n\n let t: number;\n if (arc.a[dim] === 0) {\n t = (1.0 / arc.angle) * 0.5 * Math.PI;\n } else {\n t = 1.0 / arc.angle * Math.atan(arc.b[dim] / arc.a[dim] / Math.sin(arc.angle) - 1.0 / Math.tan(arc.angle));\n }\n\n if (t < 0 || t > 1) {\n return null;\n }\n\n return slerp(arc.a[dim], arc.b[dim], arc.angle, clamp(t, 0.0, 1.0)) + arc.center[dim];\n}\n\nexport function globeTileBounds(id: CanonicalTileID): Aabb {\n if (id.z <= 1) {\n return GLOBE_LOW_ZOOM_TILE_AABBS[id.z + id.y * 2 + id.x];\n }\n\n // After zoom 1 surface function is monotonic for all tile patches\n // => it is enough to project corner points\n const bounds = tileCornersToBounds(id);\n const corners = boundsToECEF(bounds);\n\n return Aabb.fromPoints(corners);\n}\n\nexport function interpolateVec3(from: Vec3, to: Vec3, phase: number): Vec3 {\n vec3.scale(from, from, 1 - phase);\n return vec3.scaleAndAdd(from, from, to, phase);\n}\n\n// Similar to globeTileBounds() but accounts for globe to Mercator transition.\nexport function transitionTileAABBinECEF(id: CanonicalTileID, tr: Transform): Aabb {\n const phase = globeToMercatorTransition(tr.zoom);\n if (phase === 0) {\n return globeTileBounds(id);\n }\n\n const bounds = tileCornersToBounds(id);\n const corners = boundsToECEF(bounds);\n\n const w = mercatorXfromLng(bounds.getWest()) * tr.worldSize;\n const e = mercatorXfromLng(bounds.getEast()) * tr.worldSize;\n const n = mercatorYfromLat(bounds.getNorth()) * tr.worldSize;\n const s = mercatorYfromLat(bounds.getSouth()) * tr.worldSize;\n // Mercator bounds globeCorners in world/pixel space\n const nw = [w, n, 0];\n const ne = [e, n, 0];\n const sw = [w, s, 0];\n const se = [e, s, 0];\n // Transform Mercator globeCorners to ECEF\n const worldToECEFMatrix = mat4.invert([], tr.globeMatrix);\n vec3.transformMat4(nw, nw, worldToECEFMatrix);\n vec3.transformMat4(ne, ne, worldToECEFMatrix);\n vec3.transformMat4(sw, sw, worldToECEFMatrix);\n vec3.transformMat4(se, se, worldToECEFMatrix);\n // Interpolate Mercator corners and globe corners\n corners[0] = interpolateVec3(corners[0], sw, phase);\n corners[1] = interpolateVec3(corners[1], se, phase);\n corners[2] = interpolateVec3(corners[2], ne, phase);\n corners[3] = interpolateVec3(corners[3], nw, phase);\n\n return Aabb.fromPoints(corners);\n}\n\nfunction transformPoints(corners: Array, globeMatrix: Mat4, scale: number) {\n for (const corner of corners) {\n vec3.transformMat4(corner, corner, globeMatrix);\n vec3.scale(corner, corner, scale);\n }\n}\n\n// Returns AABB in world/camera space scaled by numTiles / tr.worldSize\nexport function aabbForTileOnGlobe(tr: Transform, numTiles: number, tileId: CanonicalTileID): Aabb {\n const scale = numTiles / tr.worldSize;\n const m = tr.globeMatrix;\n\n if (tileId.z <= 1) {\n // Compute world/pixel space AABB that fully encapsulates\n // transformed corners of the ECEF AABB\n const corners = globeTileBounds(tileId).getCorners();\n transformPoints(corners, m, scale);\n return Aabb.fromPoints(corners);\n }\n\n // Find minimal aabb for a tile. Correct solution would be to compute bounding box that\n // fully encapsulates the curved patch that represents the tile on globes surface.\n // This can be simplified a bit as the globe transformation is constrained:\n // 1. Camera always faces the center point on the map\n // 2. Camera is always above (z-coordinate) all of the tiles\n // 3. Up direction of the coordinate space (pixel space) is always +z. This means that\n // the \"highest\" point of the map is at the center.\n // 4. z-coordinate of any point in any tile descends as a function of the distance from the center\n\n // Simplified aabb is computed by first encapsulating 4 transformed corner points of the tile.\n // The resulting aabb is not complete yet as curved edges of the tile might span outside of the boundaries.\n // It is enough to extend the aabb to contain only the edge that's closest to the center point.\n const bounds = tileCornersToBounds(tileId);\n const corners = boundsToECEF(bounds);\n\n // Transform the corners to world space\n transformPoints(corners, m, scale);\n\n const mx = Number.MAX_VALUE;\n const cornerMax = [-mx, -mx, -mx];\n const cornerMin = [mx, mx, mx];\n\n // Extend the aabb by including the center point. There are some corner cases where center point is inside the\n // tile but due to curvature aabb computed from corner points does not cover the curved area.\n if (bounds.contains(tr.center)) {\n\n for (const corner of corners) {\n vec3.min(cornerMin, cornerMin, corner);\n vec3.max(cornerMax, cornerMax, corner);\n }\n cornerMax[2] = 0.0;\n const point = tr.point;\n const center = [point.x * scale, point.y * scale, 0];\n vec3.min(cornerMin, cornerMin, center);\n vec3.max(cornerMax, cornerMax, center);\n\n return new Aabb(cornerMin, cornerMax);\n }\n\n // Compute arcs describing edges of the tile on the globe surface.\n // Vertical edges revolves around the globe origin whereas horizontal edges revolves around the y-axis.\n const arcCenter = [m[12] * scale, m[13] * scale, m[14] * scale];\n\n const tileCenter = bounds.getCenter();\n const centerLat = clamp(tr.center.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n const tileCenterLat = clamp(tileCenter.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n const camX = mercatorXfromLng(tr.center.lng);\n const camY = mercatorYfromLat(centerLat);\n\n let dx = camX - mercatorXfromLng(tileCenter.lng);\n const dy = camY - mercatorYfromLat(tileCenterLat);\n\n // Shortest distance might be across the antimeridian\n if (dx > .5) {\n dx -= 1;\n } else if (dx < -.5) {\n dx += 1;\n }\n\n // Here we determine the arc which is closest to the map center point.\n // Horizontal arcs origin = globe center\n // Vertical arcs origin = globe center + yAxis * shift.\n // Where `shift` is determined by latitude.\n let closestArcIdx = 0;\n if (Math.abs(dx) > Math.abs(dy)) {\n closestArcIdx = dx >= 0 ? 1 : 3;\n } else {\n closestArcIdx = dy >= 0 ? 0 : 2;\n const yAxis = [m[4] * scale, m[5] * scale, m[6] * scale];\n const shift = -Math.sin(degToRad(dy >= 0 ? bounds.getSouth() : bounds.getNorth())) * GLOBE_RADIUS;\n vec3.scaleAndAdd(arcCenter, arcCenter, yAxis, shift);\n }\n\n const arcStart = corners[closestArcIdx];\n const arcEnd = corners[(closestArcIdx + 1) % 4];\n\n const closestArc = new Arc(arcStart, arcEnd, arcCenter);\n const arcExtremum = [\n (localExtremum(closestArc, 0) || arcStart[0]),\n (localExtremum(closestArc, 1) || arcStart[1]),\n (localExtremum(closestArc, 2) || arcStart[2])];\n\n const phase = globeToMercatorTransition(tr.zoom);\n if (phase > 0.0) {\n const mercatorCorners = mercatorTileCornersInCameraSpace(tileId, numTiles, tr._pixelsPerMercatorPixel, camX, camY);\n // Interpolate the four corners towards their world space location in mercator projection during transition.\n for (let i = 0; i < corners.length; i++) {\n interpolateVec3(corners[i], mercatorCorners[i], phase);\n }\n // Calculate the midpoint of the closest edge midpoint in Mercator\n const mercatorMidpoint = vec3.add([], mercatorCorners[closestArcIdx], mercatorCorners[(closestArcIdx + 1) % 4]);\n vec3.scale(mercatorMidpoint, mercatorMidpoint, .5);\n // Interpolate globe extremum toward Mercator midpoint\n interpolateVec3(arcExtremum, mercatorMidpoint, phase);\n }\n\n for (const corner of corners) {\n vec3.min(cornerMin, cornerMin, corner);\n vec3.max(cornerMax, cornerMax, corner);\n }\n\n // Reduce height of the aabb to match height of the closest arc. This reduces false positives\n // of tiles farther away from the center as they would otherwise intersect with far end\n // of the view frustum\n cornerMin[2] = Math.min(arcStart[2], arcEnd[2]);\n\n vec3.min(cornerMin, cornerMin, arcExtremum);\n vec3.max(cornerMax, cornerMax, arcExtremum);\n\n return new Aabb(cornerMin, cornerMax);\n}\n\nexport function tileCornersToBounds({x, y, z}: CanonicalTileID): LngLatBounds {\n const s = 1.0 / (1 << z);\n const sw = new LngLat(lngFromMercatorX(x * s), latFromMercatorY((y + 1) * s));\n const ne = new LngLat(lngFromMercatorX((x + 1) * s), latFromMercatorY(y * s));\n return new LngLatBounds(sw, ne);\n}\n\nfunction mercatorTileCornersInCameraSpace({x, y, z}: CanonicalTileID, numTiles: number, mercatorScale: number, camX: number, camY: number): Array {\n\n const tileScale = 1.0 / (1 << z);\n // Values in Mercator coordinates (0 - 1)\n let w = x * tileScale;\n let e = w + tileScale;\n let n = y * tileScale;\n let s = n + tileScale;\n\n // // Ensure that the tile viewed is the nearest when across the antimeridian\n let wrap = 0;\n const tileCenterXFromCamera = (w + e) / 2 - camX;\n if (tileCenterXFromCamera > .5) {\n wrap = -1;\n } else if (tileCenterXFromCamera < -.5) {\n wrap = 1;\n }\n\n camX *= numTiles;\n camY *= numTiles;\n\n // Transform Mercator coordinates to points on the plane tangent to the globe at cameraCenter.\n w = ((w + wrap) * numTiles - camX) * mercatorScale + camX;\n e = ((e + wrap) * numTiles - camX) * mercatorScale + camX;\n n = (n * numTiles - camY) * mercatorScale + camY;\n s = (s * numTiles - camY) * mercatorScale + camY;\n\n return [[w, s, 0],\n [e, s, 0],\n [e, n, 0],\n [w, n, 0]];\n}\n\nfunction boundsToECEF(bounds: LngLatBounds): Array {\n const ny = degToRad(bounds.getNorth());\n const sy = degToRad(bounds.getSouth());\n const cosN = Math.cos(ny);\n const cosS = Math.cos(sy);\n const sinN = Math.sin(ny);\n const sinS = Math.sin(sy);\n const w = bounds.getWest();\n const e = bounds.getEast();\n return [\n csLatLngToECEF(cosS, sinS, w),\n csLatLngToECEF(cosS, sinS, e),\n csLatLngToECEF(cosN, sinN, e),\n csLatLngToECEF(cosN, sinN, w)\n ];\n}\n\nfunction csLatLngToECEF(cosLat: number, sinLat: number, lng: number, radius: number = GLOBE_RADIUS): Vec3 {\n lng = degToRad(lng);\n\n // Convert lat & lng to spherical representation. Use zoom=0 as a reference\n const sx = cosLat * Math.sin(lng) * radius;\n const sy = -sinLat * radius;\n const sz = cosLat * Math.cos(lng) * radius;\n\n return [sx, sy, sz];\n}\n\nexport function ecefToLatLng([x, y, z]: Array): LngLat {\n const radius = Math.hypot(x, y, z);\n const lng = Math.atan2(x, z);\n const lat = Math.PI * 0.5 - Math.acos(-y / radius);\n\n return new LngLat(radToDeg(lng), radToDeg(lat));\n}\n\nexport function latLngToECEF(lat: number, lng: number, radius?: number): Vec3 {\n assert(lat <= 90 && lat >= -90, 'Lattitude must be between -90 and 90');\n return csLatLngToECEF(Math.cos(degToRad(lat)), Math.sin(degToRad(lat)), lng, radius);\n}\n\nexport function tileCoordToECEF(x: number, y: number, id: CanonicalTileID, radius?: number): Vec3 {\n const tileCount = 1 << id.z;\n const mercatorX = (x / EXTENT + id.x) / tileCount;\n const mercatorY = (y / EXTENT + id.y) / tileCount;\n const lat = latFromMercatorY(mercatorY);\n const lng = lngFromMercatorX(mercatorX);\n const pos = latLngToECEF(lat, lng, radius);\n return pos;\n}\n\nexport function globeECEFOrigin(tileMatrix: Mat4, id: UnwrappedTileID): [number, number, number] {\n const origin = [0, 0, 0];\n const bounds = globeTileBounds(id.canonical);\n const normalizationMatrix = globeNormalizeECEF(bounds);\n vec3.transformMat4(origin, origin, normalizationMatrix);\n vec3.transformMat4(origin, origin, tileMatrix);\n return origin;\n}\n\nexport function globeECEFNormalizationScale({min, max}: Aabb): number {\n return GLOBE_NORMALIZATION_MASK / Math.max(max[0] - min[0], max[1] - min[1], max[2] - min[2]);\n}\n\n// avoid redundant allocations by sharing the same typed array for normalization/denormalization matrices;\n// we never use multiple instances of these at the same time, but this might change, so let's be careful here!\nconst tempMatrix = new Float64Array(16);\n\nexport function globeNormalizeECEF(bounds: Aabb): Float64Array {\n const scale = globeECEFNormalizationScale(bounds);\n const m = mat4.fromScaling(tempMatrix, [scale, scale, scale]);\n return mat4.translate(m, m, vec3.negate([], bounds.min));\n}\n\nexport function globeDenormalizeECEF(bounds: Aabb): Float64Array {\n const m = mat4.fromTranslation(tempMatrix, bounds.min);\n const scale = 1.0 / globeECEFNormalizationScale(bounds);\n return mat4.scale(m, m, [scale, scale, scale]);\n}\n\nexport function globeECEFUnitsToPixelScale(worldSize: number): number {\n const localRadius = EXTENT / (2.0 * Math.PI);\n const wsRadius = worldSize / (2.0 * Math.PI);\n return wsRadius / localRadius;\n}\n\nexport function globePixelsToTileUnits(zoom: number, id: CanonicalTileID): number {\n const ecefPerPixel = EXTENT / (TILE_SIZE * Math.pow(2, zoom));\n const normCoeff = globeECEFNormalizationScale(globeTileBounds(id));\n\n return ecefPerPixel * normCoeff;\n}\n\nfunction calculateGlobePosMatrix(x: number, y: number, worldSize: number, lng: number, lat: number): Float64Array {\n // transform the globe from reference coordinate space to world space\n const scale = globeECEFUnitsToPixelScale(worldSize);\n const offset = [x, y, -worldSize / (2.0 * Math.PI)];\n const m = mat4.identity(new Float64Array(16));\n mat4.translate(m, m, offset);\n mat4.scale(m, m, [scale, scale, scale]);\n mat4.rotateX(m, m, degToRad(-lat));\n mat4.rotateY(m, m, degToRad(-lng));\n return m;\n}\n\nexport function calculateGlobeMatrix(tr: Transform): Float64Array {\n const {x, y} = tr.point;\n const {lng, lat} = tr._center;\n return calculateGlobePosMatrix(x, y, tr.worldSize, lng, lat);\n}\n\nexport function calculateGlobeLabelMatrix(tr: Transform, id: CanonicalTileID): Float64Array {\n const {x, y} = tr.point;\n\n // Map aligned label space for globe view is the non-rotated globe itself in pixel coordinates.\n\n // Camera is moved closer towards the ground near poles as part of\n // compesanting the reprojection. This has to be compensated for the\n // map aligned label space. Whithout this logic map aligned symbols\n // would appear larger than intended.\n const m = calculateGlobePosMatrix(x, y, tr.worldSize / tr._pixelsPerMercatorPixel, 0, 0);\n return mat4.multiply(m, m, globeDenormalizeECEF(globeTileBounds(id)));\n}\n\nexport function calculateGlobeMercatorMatrix(tr: Transform): Float32Array {\n const zScale = tr.pixelsPerMeter;\n const ws = zScale / mercatorZfromAltitude(1, tr.center.lat);\n\n const posMatrix = mat4.identity(new Float64Array(16));\n mat4.translate(posMatrix, posMatrix, [tr.point.x, tr.point.y, 0.0]);\n mat4.scale(posMatrix, posMatrix, [ws, ws, zScale]);\n\n return Float32Array.from(posMatrix);\n}\n\nexport function globeToMercatorTransition(zoom: number): number {\n return smoothstep(GLOBE_ZOOM_THRESHOLD_MIN, GLOBE_ZOOM_THRESHOLD_MAX, zoom);\n}\n\nexport function globeMatrixForTile(id: CanonicalTileID, globeMatrix: Float64Array): Float32Array {\n const decode = globeDenormalizeECEF(globeTileBounds(id));\n return mat4.mul(mat4.create(), globeMatrix, decode);\n}\n\nexport function globePoleMatrixForTile(z: number, x: number, tr: Transform): Float32Array {\n const poleMatrix = mat4.identity(new Float64Array(16));\n\n // Rotate the pole triangle fan to the correct location\n const numTiles = 1 << z;\n const xOffsetAngle = (x / numTiles - 0.5) * Math.PI * 2.0;\n mat4.rotateY(poleMatrix, tr.globeMatrix, xOffsetAngle);\n\n return Float32Array.from(poleMatrix);\n}\n\nexport function globeUseCustomAntiAliasing(painter: Painter, context: Context, transform: Transform): boolean {\n const transitionT = globeToMercatorTransition(transform.zoom);\n const useContextAA = painter.style.map._antialias;\n const hasStandardDerivatives = !!context.extStandardDerivatives;\n const disabled = context.extStandardDerivativesForceOff || (painter.terrain && painter.terrain.exaggeration() > 0.0);\n return transitionT === 0.0 && !useContextAA && !disabled && hasStandardDerivatives;\n}\n\nexport function getGridMatrix(id: CanonicalTileID, bounds: LngLatBounds, latitudinalLod: number, worldSize: number): Mat4 {\n const n = bounds.getNorth();\n const s = bounds.getSouth();\n const w = bounds.getWest();\n const e = bounds.getEast();\n\n // Construct transformation matrix for converting tile coordinates into LatLngs\n const tiles = 1 << id.z;\n const tileWidth = e - w;\n const tileHeight = n - s;\n const tileToLng = tileWidth / GLOBE_VERTEX_GRID_SIZE;\n const tileToLat = -tileHeight / GLOBE_LATITUDINAL_GRID_LOD_TABLE[latitudinalLod];\n\n const matrix = [0, tileToLng, 0, tileToLat, 0, 0, n, w, 0];\n\n if (id.z > 0) {\n // Add slight padding to patch seams between tiles.\n // This is done by extruding vertices by a fixed amount. Pixel padding\n // is first converted to degrees and then to tile units before being\n // applied to the final transformation matrix.\n const pixelPadding = 0.5;\n const padding = pixelPadding * 360.0 / worldSize;\n\n const xScale = padding / tileWidth + 1;\n const yScale = padding / tileHeight + 1;\n const padMatrix = [xScale, 0, 0, 0, yScale, 0, -0.5 * padding / tileToLng, 0.5 * padding / tileToLat, 1];\n\n mat3.multiply(matrix, matrix, padMatrix);\n }\n\n // Embed additional variables to the last row of the matrix\n matrix[2] = tiles;\n matrix[5] = id.x;\n matrix[8] = id.y;\n\n return matrix;\n}\n\nexport function getLatitudinalLod(lat: number): number {\n const UPPER_LATITUDE = MAX_MERCATOR_LATITUDE - 5.0;\n lat = clamp(lat, -UPPER_LATITUDE, UPPER_LATITUDE) / UPPER_LATITUDE * 90.0;\n // const t = Math.pow(1.0 - Math.cos(degToRad(lat)), 2);\n const t = Math.pow(Math.abs(Math.sin(degToRad(lat))), 3);\n const lod = Math.round(t * (GLOBE_LATITUDINAL_GRID_LOD_TABLE.length - 1));\n return lod;\n}\n\nexport function globeCenterToScreenPoint(tr: Transform): Point {\n const pos = [0, 0, 0];\n const matrix = mat4.identity(new Float64Array(16));\n mat4.multiply(matrix, tr.pixelMatrix, tr.globeMatrix);\n vec3.transformMat4(pos, pos, matrix);\n return new Point(pos[0], pos[1]);\n}\n\nfunction cameraPositionInECEF(tr: Transform): Array {\n // Here \"center\" is the center of the globe. We refer to transform._center\n // (the surface of the map on the center of the screen) as \"pivot\" to avoid confusion.\n const centerToPivot = latLngToECEF(tr._center.lat, tr._center.lng);\n\n // Set axis to East-West line tangent to sphere at pivot\n const south = vec3.fromValues(0, 1, 0);\n let axis = vec3.cross([], south, centerToPivot);\n\n // Rotate axis around pivot by bearing\n const rotation = mat4.fromRotation([], -tr.angle, centerToPivot);\n axis = vec3.transformMat4(axis, axis, rotation);\n\n // Rotate camera around axis by pitch\n mat4.fromRotation(rotation, -tr._pitch, axis);\n\n const pivotToCamera = vec3.normalize([], centerToPivot);\n vec3.scale(pivotToCamera, pivotToCamera, globeMetersToEcef(tr.cameraToCenterDistance / tr.pixelsPerMeter));\n vec3.transformMat4(pivotToCamera, pivotToCamera, rotation);\n\n return vec3.add([], centerToPivot, pivotToCamera);\n}\n\n// Return the angle of the normal vector at a point on the globe relative to the camera.\n// i.e. how much to tilt map-aligned markers.\nexport function globeTiltAtLngLat(tr: Transform, lngLat: LngLat): number {\n const centerToPoint = latLngToECEF(lngLat.lat, lngLat.lng);\n const centerToCamera = cameraPositionInECEF(tr);\n const pointToCamera = vec3.subtract([], centerToCamera, centerToPoint);\n return vec3.angle(pointToCamera, centerToPoint);\n}\n\nexport function isLngLatBehindGlobe(tr: Transform, lngLat: LngLat): boolean {\n // We consider 1% past the horizon not occluded, this allows popups to be dragged around the globe edge without fading.\n return (globeTiltAtLngLat(tr, lngLat) > Math.PI / 2 * 1.01);\n}\n\n/**\n * Check if poles are visible inside the current viewport\n *\n * @param {Transform} transform The current map transform.\n * @returns {[boolean, boolean]} A tuple of booleans [northInViewport, southInViewport]\n */\nexport function polesInViewport(tr: Transform): [boolean, boolean] {\n // Create matrix from ECEF to screen coordinates\n const ecefToScreenMatrix = mat4.identity(new Float64Array(16));\n mat4.multiply(ecefToScreenMatrix, tr.pixelMatrix, tr.globeMatrix);\n\n const north = [0, GLOBE_MIN, 0];\n const south = [0, GLOBE_MAX, 0];\n\n // Translate the poles from ECEF to screen coordinates\n vec3.transformMat4(north, north, ecefToScreenMatrix);\n vec3.transformMat4(south, south, ecefToScreenMatrix);\n\n // Check if the poles are inside the viewport and not behind the globe surface\n const northInViewport =\n north[0] > 0 && north[0] <= tr.width &&\n north[1] > 0 && north[1] <= tr.height &&\n !isLngLatBehindGlobe(tr, new LngLat(tr.center.lat, 90));\n\n const southInViewport =\n south[0] > 0 && south[0] <= tr.width &&\n south[1] > 0 && south[1] <= tr.height &&\n !isLngLatBehindGlobe(tr, new LngLat(tr.center.lat, -90));\n\n return [northInViewport, southInViewport];\n}\n\nconst POLE_RAD = degToRad(85.0);\nconst POLE_COS = Math.cos(POLE_RAD);\nconst POLE_SIN = Math.sin(POLE_RAD);\n\n// Generate terrain grid with embedded skirts\nconst EMBED_SKIRTS = true;\n\ntype GridLodSegments = {\n withoutSkirts: SegmentVector,\n withSkirts: SegmentVector\n};\n\ntype GridWithLods = {\n vertices: PosArray,\n indices: TriangleIndexArray,\n segments: Array\n};\n\nexport class GlobeSharedBuffers {\n _poleNorthVertexBuffer: VertexBuffer;\n _poleSouthVertexBuffer: VertexBuffer;\n _poleIndexBuffer: IndexBuffer;\n _poleSegments: Array;\n\n _gridBuffer: VertexBuffer;\n _gridIndexBuffer: IndexBuffer;\n _gridSegments: Array;\n\n _wireframeIndexBuffer: IndexBuffer;\n _wireframeSegments: Array;\n\n constructor(context: Context) {\n this._createGrid(context);\n this._createPoles(context);\n }\n\n destroy() {\n this._poleIndexBuffer.destroy();\n this._gridBuffer.destroy();\n this._gridIndexBuffer.destroy();\n this._poleNorthVertexBuffer.destroy();\n this._poleSouthVertexBuffer.destroy();\n for (const segments of this._poleSegments) segments.destroy();\n for (const segments of this._gridSegments) {\n segments.withSkirts.destroy();\n segments.withoutSkirts.destroy();\n }\n\n if (this._wireframeIndexBuffer) {\n this._wireframeIndexBuffer.destroy();\n for (const segments of this._wireframeSegments) segments.destroy();\n }\n }\n\n // Generate terrain grid vertices and indices for all LOD's\n //\n // Grid vertices memory layout:\n //\n // First line Skirt\n // ┌───────────────┐\n // │┌─────────────┐│\n // Left ││┼┼┼┼┼┼┼┼┼┼┼┼┼││ Right\n // Border ││┼┼┼┼┼┼┼┼┼┼┼┼┼││ Border\n // Skirt │├─────────────┤│ Skirt\n // ││ Main Grid ││\n // │├─────────────┤│\n // ││┼┼┼┼┼┼┼┼┼┼┼┼┼││\n // ││┼┼┼┼┼┼┼┼┼┼┼┼┼││\n // │└─────────────┘│\n // ├───────────────┤\n // ├───────────────┤\n // └───────────────┘\n // Bottom Skirt = Number of LOD's\n //\n _fillGridMeshWithLods(longitudinalCellsCount: number, latitudinalLods: number[]): GridWithLods {\n const vertices = new PosArray();\n const indices = new TriangleIndexArray();\n const segments: Array = [];\n\n const xVertices = longitudinalCellsCount + 1 + 2 * (EMBED_SKIRTS ? 1 : 0);\n const yVerticesHighLodNoStrip = latitudinalLods[0] + 1;\n const yVerticesHighLodWithStrip = latitudinalLods[0] + 1 + (EMBED_SKIRTS ? 1 + latitudinalLods.length : 0);\n\n // Index adjustment, used to make strip (x, y) vertex input attribute data\n // to match same data on ordinary grid edges\n const prepareVertex = (x: number, y: number, isSkirt: boolean) => {\n if (!EMBED_SKIRTS) return [x, y];\n\n let adjustedX = (() => {\n if (x === xVertices - 1) {\n return x - 2;\n } else if (x === 0) {\n return x;\n } else {\n return x - 1;\n }\n })();\n\n // Skirt factor is introduces as an offset to the .x coordinate, similar to how it's done for mercator grids\n const skirtOffset = 24575;\n adjustedX += isSkirt ? skirtOffset : 0;\n\n return [adjustedX, y];\n };\n\n // Add first horizontal strip if present\n if (EMBED_SKIRTS) {\n for (let x = 0; x < xVertices; ++x) {\n vertices.emplaceBack(...prepareVertex(x, 0, true));\n }\n }\n\n // Add main grid part with vertices strips embedded\n for (let y = 0; y < yVerticesHighLodNoStrip; ++y) {\n for (let x = 0; x < xVertices; ++x) {\n const isSideBorder = (x === 0 || x === xVertices - 1);\n\n vertices.emplaceBack(...prepareVertex(x, y, isSideBorder && EMBED_SKIRTS));\n }\n }\n\n // Add bottom strips for each LOD\n if (EMBED_SKIRTS) {\n for (let lodIdx = 0; lodIdx < latitudinalLods.length; ++lodIdx) {\n const lastYRowForLod = latitudinalLods[lodIdx];\n for (let x = 0; x < xVertices; ++x) {\n vertices.emplaceBack(...prepareVertex(x, lastYRowForLod, true));\n }\n }\n }\n\n // Fill triangles\n for (let lodIdx = 0; lodIdx < latitudinalLods.length; ++lodIdx) {\n const indexOffset = indices.length;\n\n const yVerticesLod = latitudinalLods[lodIdx] + 1 + 2 * (EMBED_SKIRTS ? 1 : 0);\n\n const skirtsOnlyIndices = new TriangleIndexArray();\n\n for (let y = 0; y < yVerticesLod - 1; y++) {\n const isLastLine = (y === yVerticesLod - 2);\n const offsetToNextRow =\n (isLastLine && EMBED_SKIRTS ?\n (xVertices * (yVerticesHighLodWithStrip - latitudinalLods.length + lodIdx - y)) :\n xVertices);\n\n for (let x = 0; x < xVertices - 1; x++) {\n const idx = y * xVertices + x;\n\n const isSkirt = EMBED_SKIRTS && (y === 0 || isLastLine || x === 0 || x === xVertices - 2);\n\n if (isSkirt) {\n skirtsOnlyIndices.emplaceBack(idx + 1, idx, idx + offsetToNextRow);\n skirtsOnlyIndices.emplaceBack(idx + offsetToNextRow, idx + offsetToNextRow + 1, idx + 1);\n } else {\n indices.emplaceBack(idx + 1, idx, idx + offsetToNextRow);\n indices.emplaceBack(idx + offsetToNextRow, idx + offsetToNextRow + 1, idx + 1);\n }\n }\n }\n\n // Segments grid only\n const withoutSkirts = SegmentVector.simpleSegment(0, indexOffset, vertices.length, indices.length - indexOffset);\n\n for (let i = 0; i < skirtsOnlyIndices.uint16.length; i += 3) {\n indices.emplaceBack(skirtsOnlyIndices.uint16[i], skirtsOnlyIndices.uint16[i + 1], skirtsOnlyIndices.uint16[i + 2]);\n }\n\n // Segments grid + skirts only\n const withSkirts = SegmentVector.simpleSegment(0, indexOffset, vertices.length, indices.length - indexOffset);\n segments.push({withoutSkirts, withSkirts});\n }\n\n return {vertices, indices, segments};\n }\n\n _createGrid(context: Context) {\n const gridWithLods = this._fillGridMeshWithLods(GLOBE_VERTEX_GRID_SIZE, GLOBE_LATITUDINAL_GRID_LOD_TABLE);\n this._gridSegments = gridWithLods.segments;\n\n this._gridBuffer = context.createVertexBuffer(gridWithLods.vertices, posAttributes.members);\n this._gridIndexBuffer = context.createIndexBuffer(gridWithLods.indices, true);\n }\n\n _createPoles(context: Context) {\n const poleIndices = new TriangleIndexArray();\n for (let i = 0; i <= GLOBE_VERTEX_GRID_SIZE; i++) {\n poleIndices.emplaceBack(0, i + 1, i + 2);\n }\n this._poleIndexBuffer = context.createIndexBuffer(poleIndices, true);\n\n const northVertices = new GlobeVertexArray();\n const southVertices = new GlobeVertexArray();\n const polePrimitives = GLOBE_VERTEX_GRID_SIZE;\n const poleVertices = GLOBE_VERTEX_GRID_SIZE + 2;\n this._poleSegments = [];\n\n for (let zoom = 0, offset = 0; zoom < GLOBE_ZOOM_THRESHOLD_MIN; zoom++) {\n const tiles = 1 << zoom;\n const endAngle = 360.0 / tiles;\n\n northVertices.emplaceBack(0, -GLOBE_RADIUS, 0, 0.5, 0); // place the tip\n southVertices.emplaceBack(0, -GLOBE_RADIUS, 0, 0.5, 1);\n\n for (let i = 0; i <= GLOBE_VERTEX_GRID_SIZE; i++) {\n const uvX = i / GLOBE_VERTEX_GRID_SIZE;\n const angle = interpolate(0, endAngle, uvX);\n const [gx, gy, gz] = csLatLngToECEF(POLE_COS, POLE_SIN, angle, GLOBE_RADIUS);\n northVertices.emplaceBack(gx, gy, gz, uvX, 0);\n southVertices.emplaceBack(gx, gy, gz, uvX, 1);\n }\n\n this._poleSegments.push(SegmentVector.simpleSegment(offset, 0, poleVertices, polePrimitives));\n\n offset += poleVertices;\n }\n\n this._poleNorthVertexBuffer = context.createVertexBuffer(northVertices, globeLayoutAttributes, false);\n this._poleSouthVertexBuffer = context.createVertexBuffer(southVertices, globeLayoutAttributes, false);\n }\n\n getGridBuffers(latitudinalLod: number, withSkirts: boolean): [VertexBuffer, IndexBuffer, SegmentVector] {\n return [this._gridBuffer, this._gridIndexBuffer, withSkirts ? this._gridSegments[latitudinalLod].withSkirts : this._gridSegments[latitudinalLod].withoutSkirts];\n }\n\n getPoleBuffers(z: number): [VertexBuffer, VertexBuffer, IndexBuffer, SegmentVector] {\n return [this._poleNorthVertexBuffer, this._poleSouthVertexBuffer, this._poleIndexBuffer, this._poleSegments[z]];\n }\n\n getWirefameBuffers(context: Context, lod: number): [VertexBuffer, IndexBuffer, SegmentVector] {\n if (!this._wireframeSegments) {\n const wireframeIndices = new LineIndexArray();\n const quadExt = GLOBE_VERTEX_GRID_SIZE;\n const vertexExt = quadExt + 1 + (EMBED_SKIRTS ? 2 : 0);\n\n const iterOffset = EMBED_SKIRTS ? 1 : 0;\n\n this._wireframeSegments = [];\n for (let k = 0, primitiveOffset = 0; k < GLOBE_LATITUDINAL_GRID_LOD_TABLE.length; k++) {\n const latitudinalLod = GLOBE_LATITUDINAL_GRID_LOD_TABLE[k];\n for (let j = iterOffset; j < latitudinalLod + iterOffset; j++) {\n for (let i = iterOffset; i < quadExt + iterOffset; i++) {\n const index = j * vertexExt + i;\n wireframeIndices.emplaceBack(index, index + 1);\n wireframeIndices.emplaceBack(index, index + vertexExt);\n wireframeIndices.emplaceBack(index, index + vertexExt + 1);\n }\n }\n\n const numVertices = (latitudinalLod + 1) * vertexExt;\n const numPrimitives = latitudinalLod * quadExt * 3;\n\n this._wireframeSegments.push(SegmentVector.simpleSegment(0, primitiveOffset, numVertices, numPrimitives));\n primitiveOffset += numPrimitives;\n }\n\n this._wireframeIndexBuffer = context.createIndexBuffer(wireframeIndices);\n }\n return [this._gridBuffer, this._wireframeIndexBuffer, this._wireframeSegments[lod]];\n }\n}\n","// @flow\n\nimport {wrap} from '../util/util.js';\nimport LngLatBounds from './lng_lat_bounds.js';\nimport {GLOBE_RADIUS, globeMetersToEcef, latLngToECEF} from '../geo/projection/globe_util.js';\n\n/*\n* Approximate radius of the earth in meters.\n* Uses the WGS-84 approximation. The radius at the equator is ~6378137 and at the poles is ~6356752. https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84\n* 6371008.8 is one published \"average radius\" see https://en.wikipedia.org/wiki/Earth_radius#Mean_radius, or ftp://athena.fsv.cvut.cz/ZFG/grs80-Moritz.pdf p.4\n*/\nexport const earthRadius = 6371008.8;\n\n/*\n * The average circumference of the earth in meters.\n */\nexport const earthCircumference = 2 * Math.PI * earthRadius;\n\n/**\n * A `LngLat` object represents a given longitude and latitude coordinate, measured in degrees.\n * These coordinates use longitude, latitude coordinate order (as opposed to latitude, longitude)\n * to match the [GeoJSON specification](https://datatracker.ietf.org/doc/html/rfc7946#section-4),\n * which is equivalent to the OGC:CRS84 coordinate reference system.\n *\n * Note that any Mapbox GL method that accepts a `LngLat` object as an argument or option\n * can also accept an `Array` of two numbers and will perform an implicit conversion.\n * This flexible type is documented as {@link LngLatLike}.\n *\n * @param {number} lng Longitude, measured in degrees.\n * @param {number} lat Latitude, measured in degrees.\n * @example\n * const ll = new mapboxgl.LngLat(-123.9749, 40.7736);\n * console.log(ll.lng); // = -123.9749\n * @see [Example: Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/)\n * @see [Example: Display a popup](https://www.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Highlight features within a bounding box](https://www.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Create a timeline animation](https://www.mapbox.com/mapbox-gl-js/example/timeline-animation/)\n */\nclass LngLat {\n lng: number;\n lat: number;\n\n constructor(lng: number, lat: number) {\n if (isNaN(lng) || isNaN(lat)) {\n throw new Error(`Invalid LngLat object: (${lng}, ${lat})`);\n }\n this.lng = +lng;\n this.lat = +lat;\n if (this.lat > 90 || this.lat < -90) {\n throw new Error('Invalid LngLat latitude value: must be between -90 and 90');\n }\n }\n\n /**\n * Returns a new `LngLat` object whose longitude is wrapped to the range (-180, 180).\n *\n * @returns {LngLat} The wrapped `LngLat` object.\n * @example\n * const ll = new mapboxgl.LngLat(286.0251, 40.7736);\n * const wrapped = ll.wrap();\n * console.log(wrapped.lng); // = -73.9749\n */\n wrap(): LngLat {\n return new LngLat(wrap(this.lng, -180, 180), this.lat);\n }\n\n /**\n * Returns the coordinates represented as an array of two numbers.\n *\n * @returns {Array} The coordinates represeted as an array of longitude and latitude.\n * @example\n * const ll = new mapboxgl.LngLat(-73.9749, 40.7736);\n * ll.toArray(); // = [-73.9749, 40.7736]\n */\n toArray(): [number, number] {\n return [this.lng, this.lat];\n }\n\n /**\n * Returns the coordinates represent as a string.\n *\n * @returns {string} The coordinates represented as a string of the format `'LngLat(lng, lat)'`.\n * @example\n * const ll = new mapboxgl.LngLat(-73.9749, 40.7736);\n * ll.toString(); // = \"LngLat(-73.9749, 40.7736)\"\n */\n toString(): string {\n return `LngLat(${this.lng}, ${this.lat})`;\n }\n\n /**\n * Returns the approximate distance between a pair of coordinates in meters.\n * Uses the Haversine Formula (from R.W. Sinnott, \"Virtues of the Haversine\", Sky and Telescope, vol. 68, no. 2, 1984, p. 159).\n *\n * @param {LngLat} lngLat Coordinates to compute the distance to.\n * @returns {number} Distance in meters between the two coordinates.\n * @example\n * const newYork = new mapboxgl.LngLat(-74.0060, 40.7128);\n * const losAngeles = new mapboxgl.LngLat(-118.2437, 34.0522);\n * newYork.distanceTo(losAngeles); // = 3935751.690893987, \"true distance\" using a non-spherical approximation is ~3966km\n */\n distanceTo(lngLat: LngLat): number {\n const rad = Math.PI / 180;\n const lat1 = this.lat * rad;\n const lat2 = lngLat.lat * rad;\n const a = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos((lngLat.lng - this.lng) * rad);\n\n const maxMeters = earthRadius * Math.acos(Math.min(a, 1));\n return maxMeters;\n }\n\n /**\n * Returns a `LngLatBounds` from the coordinates extended by a given `radius`. The returned `LngLatBounds` completely contains the `radius`.\n *\n * @param {number} [radius=0] Distance in meters from the coordinates to extend the bounds.\n * @returns {LngLatBounds} A new `LngLatBounds` object representing the coordinates extended by the `radius`.\n * @example\n * const ll = new mapboxgl.LngLat(-73.9749, 40.7736);\n * ll.toBounds(100).toArray(); // = [[-73.97501862141328, 40.77351016847229], [-73.97478137858673, 40.77368983152771]]\n */\n toBounds(radius?: number = 0): LngLatBounds {\n const earthCircumferenceInMetersAtEquator = 40075017;\n const latAccuracy = 360 * radius / earthCircumferenceInMetersAtEquator,\n lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\n\n return new LngLatBounds(new LngLat(this.lng - lngAccuracy, this.lat - latAccuracy),\n new LngLat(this.lng + lngAccuracy, this.lat + latAccuracy));\n }\n\n toEcef(altitude: number): [number, number, number] {\n const altInEcef = globeMetersToEcef(altitude);\n const radius = GLOBE_RADIUS + altInEcef;\n return (latLngToECEF(this.lat, this.lng, radius): any);\n }\n\n /**\n * Converts an array of two numbers or an object with `lng` and `lat` or `lon` and `lat` properties\n * to a `LngLat` object.\n *\n * If a `LngLat` object is passed in, the function returns it unchanged.\n *\n * @param {LngLatLike} input An array of two numbers or object to convert, or a `LngLat` object to return.\n * @returns {LngLat} A new `LngLat` object, if a conversion occurred, or the original `LngLat` object.\n * @example\n * const arr = [-73.9749, 40.7736];\n * const ll = mapboxgl.LngLat.convert(arr);\n * console.log(ll); // = LngLat {lng: -73.9749, lat: 40.7736}\n */\n static convert(input: LngLatLike): LngLat {\n if (input instanceof LngLat) {\n return input;\n }\n if (Array.isArray(input) && (input.length === 2 || input.length === 3)) {\n return new LngLat(Number(input[0]), Number(input[1]));\n }\n if (!Array.isArray(input) && typeof input === 'object' && input !== null) {\n return new LngLat(\n // flow can't refine this to have one of lng or lat, so we have to cast to any\n Number('lng' in input ? (input: any).lng : (input: any).lon),\n Number(input.lat)\n );\n }\n throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\");\n }\n}\n\n/**\n * A {@link LngLat} object, an array of two numbers representing longitude and latitude,\n * or an object with `lng` and `lat` or `lon` and `lat` properties.\n *\n * @typedef {LngLat | {lng: number, lat: number} | {lon: number, lat: number} | [number, number]} LngLatLike\n * @example\n * const v1 = new mapboxgl.LngLat(-122.420679, 37.772537);\n * const v2 = [-122.420679, 37.772537];\n * const v3 = {lon: -122.420679, lat: 37.772537};\n */\nexport type LngLatLike = LngLat | {lng: number, lat: number} | {lon: number, lat: number} | [number, number];\n\nexport default LngLat;\n","// @flow\n\nimport LngLat, {earthCircumference} from '../geo/lng_lat.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\n\n/*\n * The circumference at a line of latitude in meters.\n */\nexport function circumferenceAtLatitude(latitude: number): number {\n return earthCircumference * Math.cos(latitude * Math.PI / 180);\n}\n\nexport function mercatorXfromLng(lng: number): number {\n return (180 + lng) / 360;\n}\n\nexport function mercatorYfromLat(lat: number): number {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nexport function mercatorZfromAltitude(altitude: number, lat: number): number {\n return altitude / circumferenceAtLatitude(lat);\n}\n\nexport function lngFromMercatorX(x: number): number {\n return x * 360 - 180;\n}\n\nexport function latFromMercatorY(y: number): number {\n const y2 = 180 - y * 360;\n return 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;\n}\n\nexport function altitudeFromMercatorZ(z: number, y: number): number {\n return z * circumferenceAtLatitude(latFromMercatorY(y));\n}\n\nexport const MAX_MERCATOR_LATITUDE = 85.051129;\n\n/**\n * Determine the Mercator scale factor for a given latitude, see\n * https://en.wikipedia.org/wiki/Mercator_projection#Scale_factor\n *\n * At the equator the scale factor will be 1, which increases at higher latitudes.\n *\n * @param {number} lat Latitude\n * @returns {number} scale factor\n * @private\n */\nexport function mercatorScale(lat: number): number {\n return 1 / Math.cos(lat * Math.PI / 180);\n}\n\n/**\n * A `MercatorCoordinate` object represents a projected three dimensional position.\n *\n * `MercatorCoordinate` uses the web mercator projection ([EPSG:3857](https://epsg.io/3857)) with slightly different units:\n * - the size of 1 unit is the width of the projected world instead of the \"mercator meter\"\n * - the origin of the coordinate space is at the north-west corner instead of the middle.\n *\n * For example, `MercatorCoordinate(0, 0, 0)` is the north-west corner of the mercator world and\n * `MercatorCoordinate(1, 1, 0)` is the south-east corner. If you are familiar with\n * [vector tiles](https://github.com/mapbox/vector-tile-spec) it may be helpful to think\n * of the coordinate space as the `0/0/0` tile with an extent of `1`.\n *\n * The `z` dimension of `MercatorCoordinate` is conformal. A cube in the mercator coordinate space would be rendered as a cube.\n *\n * @param {number} x The x component of the position.\n * @param {number} y The y component of the position.\n * @param {number} z The z component of the position.\n * @example\n * const nullIsland = new mapboxgl.MercatorCoordinate(0.5, 0.5, 0);\n *\n * @see [Example: Add a custom style layer](https://www.mapbox.com/mapbox-gl-js/example/custom-style-layer/)\n */\nclass MercatorCoordinate {\n x: number;\n y: number;\n z: number;\n\n constructor(x: number, y: number, z: number = 0) {\n this.x = +x;\n this.y = +y;\n this.z = +z;\n }\n\n /**\n * Project a `LngLat` to a `MercatorCoordinate`.\n *\n * @param {LngLatLike} lngLatLike The location to project.\n * @param {number} altitude The altitude in meters of the position.\n * @returns {MercatorCoordinate} The projected mercator coordinate.\n * @example\n * const coord = mapboxgl.MercatorCoordinate.fromLngLat({lng: 0, lat: 0}, 0);\n * console.log(coord); // MercatorCoordinate(0.5, 0.5, 0)\n */\n static fromLngLat(lngLatLike: LngLatLike, altitude: number = 0): MercatorCoordinate {\n const lngLat = LngLat.convert(lngLatLike);\n\n return new MercatorCoordinate(\n mercatorXfromLng(lngLat.lng),\n mercatorYfromLat(lngLat.lat),\n mercatorZfromAltitude(altitude, lngLat.lat));\n }\n\n /**\n * Returns the `LngLat` for the coordinate.\n *\n * @returns {LngLat} The `LngLat` object.\n * @example\n * const coord = new mapboxgl.MercatorCoordinate(0.5, 0.5, 0);\n * const lngLat = coord.toLngLat(); // LngLat(0, 0)\n */\n toLngLat(): LngLat {\n return new LngLat(\n lngFromMercatorX(this.x),\n latFromMercatorY(this.y));\n }\n\n /**\n * Returns the altitude in meters of the coordinate.\n *\n * @returns {number} The altitude in meters.\n * @example\n * const coord = new mapboxgl.MercatorCoordinate(0, 0, 0.02);\n * coord.toAltitude(); // 6914.281956295339\n */\n toAltitude(): number {\n return altitudeFromMercatorZ(this.z, this.y);\n }\n\n /**\n * Returns the distance of 1 meter in `MercatorCoordinate` units at this latitude.\n *\n * For coordinates in real world units using meters, this naturally provides the scale\n * to transform into `MercatorCoordinate`s.\n *\n * @returns {number} Distance of 1 meter in `MercatorCoordinate` units.\n * @example\n * // Calculate a new MercatorCoordinate that is 150 meters west of the other coord.\n * const coord = new mapboxgl.MercatorCoordinate(0.5, 0.25, 0);\n * const offsetInMeters = 150;\n * const offsetInMercatorCoordinateUnits = offsetInMeters * coord.meterInMercatorCoordinateUnits();\n * const westCoord = new mapboxgl.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);\n */\n meterInMercatorCoordinateUnits(): number {\n // 1 meter / circumference at equator in meters * Mercator projection scale factor at this latitude\n return 1 / earthCircumference * mercatorScale(latFromMercatorY(this.y));\n }\n\n}\n\nexport default MercatorCoordinate;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nfunction pointToLineDist(px: number, py: number, ax: number, ay: number, bx: number, by: number) {\n const dx = ax - bx;\n const dy = ay - by;\n return Math.abs((ay - py) * dx - (ax - px) * dy) / Math.hypot(dx, dy);\n}\n\nfunction addResampled(resampled: Array, mx0: number, my0: number, mx2: number, my2: number, start: Point, end: Point, reproject: ((Point) => void), tolerance: number) {\n const mx1 = (mx0 + mx2) / 2;\n const my1 = (my0 + my2) / 2;\n const mid = new Point(mx1, my1);\n reproject(mid);\n const err = pointToLineDist(mid.x, mid.y, start.x, start.y, end.x, end.y);\n\n // if reprojected midPoint is too far from geometric midpoint, recurse into two halves\n if (err >= tolerance) {\n // we're very unlikely to hit max call stack exceeded here,\n // but we might want to safeguard against it in the future\n addResampled(resampled, mx0, my0, mx1, my1, start, mid, reproject, tolerance);\n addResampled(resampled, mx1, my1, mx2, my2, mid, end, reproject, tolerance);\n\n } else { // otherwise, just add the point\n resampled.push(end);\n }\n}\n\n// reproject and resample a line, adding point where necessary for lines that become curves;\n// note that this operation is mutable (modifying original points) for performance\nexport default function resample(line: Array, reproject: (Point) => void, tolerance: number): Array {\n let prev = line[0];\n let mx0 = prev.x;\n let my0 = prev.y;\n reproject(prev);\n const resampled = [prev];\n\n for (let i = 1; i < line.length; i++) {\n const point = line[i];\n const {x, y} = point;\n reproject(point);\n addResampled(resampled, mx0, my0, x, y, prev, point, reproject, tolerance);\n mx0 = x;\n my0 = y;\n prev = point;\n }\n\n return resampled;\n}\n\nfunction addResampledPred(resampled: Point[], a: Point, b: Point, pred: ((Point, Point) => boolean)) {\n const split = pred(a, b);\n\n // if the predicate condition is met, recurse into two halves\n if (split) {\n const mid = a.add(b)._mult(0.5);\n addResampledPred(resampled, a, mid, pred);\n addResampledPred(resampled, mid, b, pred);\n\n } else {\n resampled.push(b);\n }\n}\n\nexport function resamplePred(line: Point[], predicate: (Point, Point) => boolean): Point[] {\n let prev = line[0];\n const resampled = [prev];\n\n for (let i = 1; i < line.length; i++) {\n const point = line[i];\n addResampledPred(resampled, prev, point, predicate);\n prev = point;\n }\n\n return resampled;\n}\n","// @flow\n\nimport {warnOnce, clamp} from '../util/util.js';\n\nimport EXTENT from './extent.js';\nimport {lngFromMercatorX, latFromMercatorY} from '../geo/mercator_coordinate.js';\nimport resample from '../geo/projection/resample.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\n\n// These bounds define the minimum and maximum supported coordinate values.\n// While visible coordinates are within [0, EXTENT], tiles may theoretically\n// contain coordinates within [-Infinity, Infinity]. Our range is limited by the\n// number of bits used to represent the coordinate.\nconst BITS = 15;\nconst MAX = Math.pow(2, BITS - 1) - 1;\nconst MIN = -MAX - 1;\n\nfunction preparePoint(point: Point, scale: number) {\n const x = Math.round(point.x * scale);\n const y = Math.round(point.y * scale);\n point.x = clamp(x, MIN, MAX);\n point.y = clamp(y, MIN, MAX);\n if (x < point.x || x > point.x + 1 || y < point.y || y > point.y + 1) {\n // warn when exceeding allowed extent except for the 1-px-off case\n // https://github.com/mapbox/mapbox-gl-js/issues/8992\n warnOnce('Geometry exceeds allowed extent, reduce your vector tile buffer size');\n }\n return point;\n}\n\n// a subset of VectorTileGeometry\ninterface FeatureWithGeometry {\n extent: number;\n type: 1 | 2 | 3;\n loadGeometry(): Array>;\n}\n\n/**\n * Loads a geometry from a VectorTileFeature and scales it to the common extent\n * used internally.\n * @param {VectorTileFeature} feature\n * @private\n */\nexport default function loadGeometry(feature: FeatureWithGeometry, canonical?: CanonicalTileID, tileTransform?: TileTransform): Array> {\n const geometry = feature.loadGeometry();\n const extent = feature.extent;\n const extentScale = EXTENT / extent;\n\n if (canonical && tileTransform && tileTransform.projection.isReprojectedInTileSpace) {\n const z2 = 1 << canonical.z;\n const {scale, x, y, projection} = tileTransform;\n\n const reproject = (p: Point) => {\n const lng = lngFromMercatorX((canonical.x + p.x / extent) / z2);\n const lat = latFromMercatorY((canonical.y + p.y / extent) / z2);\n const p2 = projection.project(lng, lat);\n p.x = (p2.x * scale - x) * extent;\n p.y = (p2.y * scale - y) * extent;\n };\n\n for (let i = 0; i < geometry.length; i++) {\n if (feature.type !== 1) {\n geometry[i] = resample(geometry[i], reproject, 1); // resample lines and polygons\n\n } else { // points\n const line = [];\n for (const p of geometry[i]) {\n // filter out point features outside tile boundaries now; it'd be harder to do later\n // when the coords are reprojected and no longer axis-aligned; ideally this would happen\n // or not depending on how the geometry is used, but we forego the complexity for now\n if (p.x < 0 || p.x >= extent || p.y < 0 || p.y >= extent) continue;\n reproject(p);\n line.push(p);\n }\n geometry[i] = line;\n }\n }\n }\n\n for (const line of geometry) {\n for (const p of line) {\n preparePoint(p, extentScale);\n }\n }\n\n return geometry;\n}\n","// @flow\n\nimport loadGeometry from './load_geometry.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\ntype EvaluationFeature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'LineString' | 'Polygon',\n +id?: any,\n +properties: {[_: string]: any},\n +patterns?: {[_: string]: string},\n geometry: Array>\n};\n\n/**\n * Construct a new feature based on a VectorTileFeature for expression evaluation, the geometry of which\n * will be loaded based on necessity.\n * @param {VectorTileFeature} feature\n * @param {boolean} needGeometry\n * @private\n */\nexport default function toEvaluationFeature(feature: IVectorTileFeature, needGeometry: boolean): EvaluationFeature {\n return {type: feature.type,\n id: feature.id,\n properties:feature.properties,\n geometry: needGeometry ? loadGeometry(feature) : []};\n}\n","// @flow\n\nimport {CircleLayoutArray, CircleGlobeExtArray} from '../array_types.js';\n\nimport {circleAttributes, circleGlobeAttributesExt} from './circle_attributes.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray} from '../index_array_type.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EXTENT from '../extent.js';\nimport {register} from '../../util/web_worker_transfer.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\n\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type CircleStyleLayer from '../../style/style_layer/circle_style_layer.js';\nimport type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type Projection from '../../geo/projection/projection.js';\nimport type {Vec3} from 'gl-matrix';\nimport type {IVectorTileLayer} from '@mapbox/vector-tile';\n\nfunction addCircleVertex(layoutVertexArray: CircleLayoutArray, x: number, y: number, extrudeX: number, extrudeY: number) {\n layoutVertexArray.emplaceBack(\n (x * 2) + ((extrudeX + 1) / 2),\n (y * 2) + ((extrudeY + 1) / 2));\n}\n\nfunction addGlobeExtVertex(vertexArray: CircleGlobeExtArray, pos: {x: number, y: number, z: number}, normal: Vec3) {\n const encode = 1 << 14;\n vertexArray.emplaceBack(\n pos.x, pos.y, pos.z,\n normal[0] * encode, normal[1] * encode, normal[2] * encode);\n}\n\n/**\n * Circles are represented by two triangles.\n *\n * Each corner has a pos that is the center of the circle and an extrusion\n * vector that is where it points.\n * @private\n */\nclass CircleBucket implements Bucket {\n index: number;\n zoom: number;\n overscaling: number;\n layerIds: Array;\n layers: Array;\n stateDependentLayers: Array;\n stateDependentLayerIds: Array;\n\n layoutVertexArray: CircleLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n globeExtVertexArray: ?CircleGlobeExtArray;\n globeExtVertexBuffer: ?VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet;\n segments: SegmentVector;\n uploaded: boolean;\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters) {\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.hasPattern = false;\n this.projection = options.projection;\n\n this.layoutVertexArray = new CircleLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.segments = new SegmentVector();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n }\n\n populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n const styleLayer = this.layers[0];\n const bucketFeatures = [];\n let circleSortKey = null;\n\n // Heatmap layers are handled in this bucket and have no evaluated properties, so we check our access\n if (styleLayer.type === 'circle') {\n circleSortKey = ((styleLayer: any): CircleStyleLayer).layout.get('circle-sort-key');\n }\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n // $FlowFixMe[method-unbinding]\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const sortKey = circleSortKey ?\n circleSortKey.evaluate(evaluationFeature, {}, canonical) :\n undefined;\n\n const bucketFeature: BucketFeature = {\n id,\n properties: feature.properties,\n type: feature.type,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n patterns: {},\n sortKey\n };\n\n bucketFeatures.push(bucketFeature);\n\n }\n\n if (circleSortKey) {\n bucketFeatures.sort((a, b) => {\n // a.sortKey is always a number when in use\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n\n let globeProjection: ?Projection = null;\n\n if (tileTransform.projection.name === 'globe') {\n // Extend vertex attributes if the globe projection is enabled\n this.globeExtVertexArray = new CircleGlobeExtArray();\n globeProjection = tileTransform.projection;\n }\n\n for (const bucketFeature of bucketFeatures) {\n const {geometry, index, sourceLayerIndex} = bucketFeature;\n const feature = features[index].feature;\n\n this.addFeature(bucketFeature, geometry, index, options.availableImages, canonical, globeProjection);\n options.featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);\n }\n }\n\n update(states: FeatureStates, vtLayer: IVectorTileLayer, availableImages: Array, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, circleAttributes.members);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n\n if (this.globeExtVertexArray) {\n this.globeExtVertexBuffer = context.createVertexBuffer(this.globeExtVertexArray, circleGlobeAttributesExt.members);\n }\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n if (this.globeExtVertexBuffer) {\n this.globeExtVertexBuffer.destroy();\n }\n }\n\n addFeature(feature: BucketFeature, geometry: Array>, index: number, availableImages: Array, canonical: CanonicalTileID, projection?: ?Projection) {\n for (const ring of geometry) {\n for (const point of ring) {\n const x = point.x;\n const y = point.y;\n\n // Do not include points that are outside the tile boundaries.\n if (x < 0 || x >= EXTENT || y < 0 || y >= EXTENT) continue;\n\n // this geometry will be of the Point type, and we'll derive\n // two triangles from it.\n //\n // ┌─────────┐\n // │ 3 2 │\n // │ │\n // │ 0 1 │\n // └─────────┘\n\n if (projection) {\n const projectedPoint = projection.projectTilePoint(x, y, canonical);\n const normal = projection.upVector(canonical, x, y);\n const array: any = this.globeExtVertexArray;\n\n addGlobeExtVertex(array, projectedPoint, normal);\n addGlobeExtVertex(array, projectedPoint, normal);\n addGlobeExtVertex(array, projectedPoint, normal);\n addGlobeExtVertex(array, projectedPoint, normal);\n }\n const segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray, feature.sortKey);\n const index = segment.vertexLength;\n\n addCircleVertex(this.layoutVertexArray, x, y, -1, -1);\n addCircleVertex(this.layoutVertexArray, x, y, 1, -1);\n addCircleVertex(this.layoutVertexArray, x, y, 1, 1);\n addCircleVertex(this.layoutVertexArray, x, y, -1, 1);\n\n this.indexArray.emplaceBack(index, index + 1, index + 2);\n this.indexArray.emplaceBack(index, index + 2, index + 3);\n\n segment.vertexLength += 4;\n segment.primitiveLength += 2;\n }\n }\n\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, {}, availableImages, canonical);\n }\n}\n\nregister(CircleBucket, 'CircleBucket', {omit: ['layers']});\n\nexport default CircleBucket;\n","// @flow\n\nimport {isCounterClockwise} from './util.js';\n\nimport Point from '@mapbox/point-geometry';\n\nexport {polygonIntersectsBufferedPoint, polygonIntersectsMultiPolygon, polygonIntersectsBufferedMultiLine, polygonIntersectsPolygon, distToSegmentSquared, polygonIntersectsBox, polygonContainsPoint};\n\ntype Line = $ReadOnlyArray;\ntype MultiLine = $ReadOnlyArray;\ntype Ring = $ReadOnlyArray;\ntype Polygon = $ReadOnlyArray;\ntype MultiPolygon = $ReadOnlyArray;\n\nfunction polygonIntersectsPolygon(polygonA: Polygon, polygonB: Polygon): boolean {\n for (let i = 0; i < polygonA.length; i++) {\n if (polygonContainsPoint(polygonB, polygonA[i])) return true;\n }\n\n for (let i = 0; i < polygonB.length; i++) {\n if (polygonContainsPoint(polygonA, polygonB[i])) return true;\n }\n\n if (lineIntersectsLine(polygonA, polygonB)) return true;\n\n return false;\n}\n\nfunction polygonIntersectsBufferedPoint(polygon: Polygon, point: Point, radius: number): boolean {\n if (polygonContainsPoint(polygon, point)) return true;\n if (pointIntersectsBufferedLine(point, polygon, radius)) return true;\n return false;\n}\n\nfunction polygonIntersectsMultiPolygon(polygon: Polygon, multiPolygon: MultiPolygon): boolean {\n\n if (polygon.length === 1) {\n return multiPolygonContainsPoint(multiPolygon, polygon[0]);\n }\n\n for (let m = 0; m < multiPolygon.length; m++) {\n const ring = multiPolygon[m];\n for (let n = 0; n < ring.length; n++) {\n if (polygonContainsPoint(polygon, ring[n])) return true;\n }\n }\n\n for (let i = 0; i < polygon.length; i++) {\n if (multiPolygonContainsPoint(multiPolygon, polygon[i])) return true;\n }\n\n for (let k = 0; k < multiPolygon.length; k++) {\n if (lineIntersectsLine(polygon, multiPolygon[k])) return true;\n }\n\n return false;\n}\n\nfunction polygonIntersectsBufferedMultiLine(polygon: Polygon, multiLine: MultiLine, radius: number): boolean {\n for (let i = 0; i < multiLine.length; i++) {\n const line = multiLine[i];\n\n if (polygon.length >= 3) {\n for (let k = 0; k < line.length; k++) {\n if (polygonContainsPoint(polygon, line[k])) return true;\n }\n }\n\n if (lineIntersectsBufferedLine(polygon, line, radius)) return true;\n }\n return false;\n}\n\nfunction lineIntersectsBufferedLine(lineA: Line, lineB: Line, radius: number) {\n\n if (lineA.length > 1) {\n if (lineIntersectsLine(lineA, lineB)) return true;\n\n // Check whether any point in either line is within radius of the other line\n for (let j = 0; j < lineB.length; j++) {\n if (pointIntersectsBufferedLine(lineB[j], lineA, radius)) return true;\n }\n }\n\n for (let k = 0; k < lineA.length; k++) {\n if (pointIntersectsBufferedLine(lineA[k], lineB, radius)) return true;\n }\n\n return false;\n}\n\nfunction lineIntersectsLine(lineA: Line, lineB: Line) {\n if (lineA.length === 0 || lineB.length === 0) return false;\n for (let i = 0; i < lineA.length - 1; i++) {\n const a0 = lineA[i];\n const a1 = lineA[i + 1];\n for (let j = 0; j < lineB.length - 1; j++) {\n const b0 = lineB[j];\n const b1 = lineB[j + 1];\n if (lineSegmentIntersectsLineSegment(a0, a1, b0, b1)) return true;\n }\n }\n return false;\n}\n\nfunction lineSegmentIntersectsLineSegment(a0: Point, a1: Point, b0: Point, b1: Point) {\n return isCounterClockwise(a0, b0, b1) !== isCounterClockwise(a1, b0, b1) &&\n isCounterClockwise(a0, a1, b0) !== isCounterClockwise(a0, a1, b1);\n}\n\nfunction pointIntersectsBufferedLine(p: Point, line: Line, radius: number) {\n const radiusSquared = radius * radius;\n\n if (line.length === 1) return p.distSqr(line[0]) < radiusSquared;\n\n for (let i = 1; i < line.length; i++) {\n // Find line segments that have a distance <= radius^2 to p\n // In that case, we treat the line as \"containing point p\".\n const v = line[i - 1], w = line[i];\n if (distToSegmentSquared(p, v, w) < radiusSquared) return true;\n }\n return false;\n}\n\n// Code from http://stackoverflow.com/a/1501725/331379.\nfunction distToSegmentSquared(p: Point, v: Point, w: Point): number {\n const l2 = v.distSqr(w);\n if (l2 === 0) return p.distSqr(v);\n const t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n if (t < 0) return p.distSqr(v);\n if (t > 1) return p.distSqr(w);\n return p.distSqr(w.sub(v)._mult(t)._add(v));\n}\n\n// point in polygon ray casting algorithm\nfunction multiPolygonContainsPoint(rings: MultiPolygon, p: Point) {\n let c = false,\n ring, p1, p2;\n\n for (let k = 0; k < rings.length; k++) {\n ring = rings[k];\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n c = !c;\n }\n }\n }\n return c;\n}\n\nfunction polygonContainsPoint(ring: Ring, p: Point): boolean {\n let c = false;\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n const p1 = ring[i];\n const p2 = ring[j];\n if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n c = !c;\n }\n }\n return c;\n}\n\nfunction polygonIntersectsBox(ring: Ring, boxX1: number, boxY1: number, boxX2: number, boxY2: number): boolean {\n for (const p of ring) {\n if (boxX1 <= p.x &&\n boxY1 <= p.y &&\n boxX2 >= p.x &&\n boxY2 >= p.y) return true;\n }\n\n const corners = [\n new Point(boxX1, boxY1),\n new Point(boxX1, boxY2),\n new Point(boxX2, boxY2),\n new Point(boxX2, boxY1)];\n\n if (ring.length > 2) {\n for (const corner of corners) {\n if (polygonContainsPoint(ring, corner)) return true;\n }\n }\n\n for (let i = 0; i < ring.length - 1; i++) {\n const p1 = ring[i];\n const p2 = ring[i + 1];\n if (edgeIntersectsBox(p1, p2, corners)) return true;\n }\n\n return false;\n}\n\nfunction edgeIntersectsBox(e1: Point, e2: Point, corners: Array) {\n const tl = corners[0];\n const br = corners[2];\n // the edge and box do not intersect in either the x or y dimensions\n if (((e1.x < tl.x) && (e2.x < tl.x)) ||\n ((e1.x > br.x) && (e2.x > br.x)) ||\n ((e1.y < tl.y) && (e2.y < tl.y)) ||\n ((e1.y > br.y) && (e2.y > br.y))) return false;\n\n // check if all corners of the box are on the same side of the edge\n const dir = isCounterClockwise(e1, e2, corners[0]);\n return dir !== isCounterClockwise(e1, e2, corners[1]) ||\n dir !== isCounterClockwise(e1, e2, corners[2]) ||\n dir !== isCounterClockwise(e1, e2, corners[3]);\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport type {PossiblyEvaluatedPropertyValue} from './properties.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type CircleBucket from '../data/bucket/circle_bucket.js';\nimport type LineBucket from '../data/bucket/line_bucket.js';\n\nexport function getMaximumPaintValue(property: string, layer: StyleLayer, bucket: CircleBucket<*> | LineBucket): number {\n const value = ((layer.paint: any).get(property): PossiblyEvaluatedPropertyValue).value;\n if (value.kind === 'constant') {\n return value.value;\n } else {\n return bucket.programConfigurations.get(layer.id).getMaxValue(property);\n }\n}\n\nexport function translateDistance(translate: [number, number]): number {\n return Math.sqrt(translate[0] * translate[0] + translate[1] * translate[1]);\n}\n\nexport function translate(queryGeometry: Array,\n translate: [number, number],\n translateAnchor: 'viewport' | 'map',\n bearing: number,\n pixelsToTileUnits: number): Array {\n if (!translate[0] && !translate[1]) {\n return queryGeometry;\n }\n const pt = Point.convert(translate)._mult(pixelsToTileUnits);\n\n if (translateAnchor === \"viewport\") {\n pt._rotate(-bearing);\n }\n\n const translated = [];\n for (let i = 0; i < queryGeometry.length; i++) {\n const point = queryGeometry[i];\n translated.push(point.sub(pt));\n }\n return translated;\n}\n\nexport function tilespaceTranslate(translate: [number, number],\n translateAnchor: 'viewport' | 'map',\n bearing: number,\n pixelsToTileUnits: number): Point {\n const pt = Point.convert(translate)._mult(pixelsToTileUnits);\n\n if (translateAnchor === \"viewport\") {\n pt._rotate(-bearing);\n }\n\n return pt;\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"circle-sort-key\": DataDrivenProperty,\n|};\n\nconst layout: Properties = new Properties({\n \"circle-sort-key\": new DataDrivenProperty(styleSpec[\"layout_circle\"][\"circle-sort-key\"]),\n});\n\nexport type PaintProps = {|\n \"circle-radius\": DataDrivenProperty,\n \"circle-color\": DataDrivenProperty,\n \"circle-blur\": DataDrivenProperty,\n \"circle-opacity\": DataDrivenProperty,\n \"circle-translate\": DataConstantProperty<[number, number]>,\n \"circle-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"circle-pitch-scale\": DataConstantProperty<\"map\" | \"viewport\">,\n \"circle-pitch-alignment\": DataConstantProperty<\"map\" | \"viewport\">,\n \"circle-stroke-width\": DataDrivenProperty,\n \"circle-stroke-color\": DataDrivenProperty,\n \"circle-stroke-opacity\": DataDrivenProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"circle-radius\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-radius\"]),\n \"circle-color\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-color\"]),\n \"circle-blur\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-blur\"]),\n \"circle-opacity\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-opacity\"]),\n \"circle-translate\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-translate\"]),\n \"circle-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-translate-anchor\"]),\n \"circle-pitch-scale\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-pitch-scale\"]),\n \"circle-pitch-alignment\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-pitch-alignment\"]),\n \"circle-stroke-width\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-stroke-width\"]),\n \"circle-stroke-color\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-stroke-color\"]),\n \"circle-stroke-opacity\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-stroke-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties, layout: Properties\n}>);\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport CircleBucket from '../../data/bucket/circle_bucket.js';\nimport {polygonIntersectsBufferedPoint} from '../../util/intersection_tests.js';\nimport {getMaximumPaintValue, translateDistance, tilespaceTranslate} from '../query_utils.js';\nimport properties from './circle_style_layer_properties.js';\nimport {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties.js';\nimport {vec4, vec3} from 'gl-matrix';\nimport Point from '@mapbox/point-geometry';\nimport ProgramConfiguration from '../../data/program_configuration.js';\nimport {Ray} from '../../util/primitives.js';\nimport assert from 'assert';\nimport {latFromMercatorY, mercatorZfromAltitude} from '../../geo/mercator_coordinate.js';\nimport EXTENT from '../../data/extent.js';\n\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type Transform from '../../geo/transform.js';\nimport type {Bucket, BucketParameters} from '../../data/bucket.js';\nimport type {LayoutProps, PaintProps} from './circle_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {DEMSampler} from '../../terrain/elevation.js';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\nclass CircleStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout;\n layout: PossiblyEvaluated;\n\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n createBucket(parameters: BucketParameters): CircleBucket {\n return new CircleBucket(parameters);\n }\n\n // $FlowFixMe[method-unbinding]\n queryRadius(bucket: Bucket): number {\n const circleBucket: CircleBucket = (bucket: any);\n return getMaximumPaintValue('circle-radius', this, circleBucket) +\n getMaximumPaintValue('circle-stroke-width', this, circleBucket) +\n translateDistance(this.paint.get('circle-translate'));\n }\n\n // $FlowFixMe[method-unbinding]\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: IVectorTileFeature,\n featureState: FeatureState,\n geometry: Array>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler): boolean {\n\n const translation = tilespaceTranslate(\n this.paint.get('circle-translate'),\n this.paint.get('circle-translate-anchor'),\n transform.angle, queryGeometry.pixelToTileUnitsFactor);\n\n const size = this.paint.get('circle-radius').evaluate(feature, featureState) +\n this.paint.get('circle-stroke-width').evaluate(feature, featureState);\n\n return queryIntersectsCircle(queryGeometry, geometry, transform, pixelPosMatrix, elevationHelper,\n this.paint.get('circle-pitch-alignment') === 'map',\n this.paint.get('circle-pitch-scale') === 'map', translation, size);\n }\n\n getProgramIds(): Array {\n return ['circle'];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n}\n\nexport function queryIntersectsCircle(queryGeometry: TilespaceQueryGeometry,\n geometry: Array>,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler,\n alignWithMap: boolean,\n scaleWithMap: boolean,\n translation: Point,\n size: number): boolean {\n if (alignWithMap && queryGeometry.queryGeometry.isAboveHorizon) return false;\n\n // For pitch-alignment: map, compare feature geometry to query geometry in the plane of the tile\n // // Otherwise, compare geometry in the plane of the viewport\n // // A circle with fixed scaling relative to the viewport gets larger in tile space as it moves into the distance\n // // A circle with fixed scaling relative to the map gets smaller in viewport space as it moves into the distance\n if (alignWithMap) size *= queryGeometry.pixelToTileUnitsFactor;\n\n const tileId = queryGeometry.tileID.canonical;\n const elevationScale = transform.projection.upVectorScale(tileId, transform.center.lat, transform.worldSize).metersToTile;\n\n for (const ring of geometry) {\n for (const point of ring) {\n const translatedPoint = point.add(translation);\n const z = (elevationHelper && transform.elevation) ?\n transform.elevation.exaggeration() * elevationHelper.getElevationAt(translatedPoint.x, translatedPoint.y, true) :\n 0;\n\n // Reproject tile coordinate to the local coordinate space used by the projection\n const reproj = transform.projection.projectTilePoint(translatedPoint.x, translatedPoint.y, tileId);\n\n if (z > 0) {\n const dir = transform.projection.upVector(tileId, translatedPoint.x, translatedPoint.y);\n reproj.x += dir[0] * elevationScale * z;\n reproj.y += dir[1] * elevationScale * z;\n reproj.z += dir[2] * elevationScale * z;\n }\n\n const transformedPoint = alignWithMap ? translatedPoint : projectPoint(reproj.x, reproj.y, reproj.z, pixelPosMatrix);\n const transformedPolygon = alignWithMap ?\n queryGeometry.tilespaceRays.map((r) => intersectAtHeight(r, z)) :\n queryGeometry.queryGeometry.screenGeometry;\n\n const projectedCenter = vec4.transformMat4([], [reproj.x, reproj.y, reproj.z, 1], pixelPosMatrix);\n if (!scaleWithMap && alignWithMap) {\n size *= projectedCenter[3] / transform.cameraToCenterDistance;\n } else if (scaleWithMap && !alignWithMap) {\n size *= transform.cameraToCenterDistance / projectedCenter[3];\n }\n\n if (alignWithMap) {\n // Apply extra scaling to cover different pixelPerMeter ratios at different latitudes\n const lat = latFromMercatorY((point.y / EXTENT + tileId.y) / (1 << tileId.z));\n const scale = transform.projection.pixelsPerMeter(lat, 1) / mercatorZfromAltitude(1, lat);\n\n size /= scale;\n }\n\n if (polygonIntersectsBufferedPoint(transformedPolygon, transformedPoint, size)) return true;\n }\n }\n\n return false;\n}\n\nfunction projectPoint(x: number, y: number, z: number, pixelPosMatrix: Float32Array) {\n const point = vec4.transformMat4([], [x, y, z, 1], pixelPosMatrix);\n return new Point(point[0] / point[3], point[1] / point[3]);\n}\n\nconst origin = vec3.fromValues(0, 0, 0);\nconst up = vec3.fromValues(0, 0, 1);\n\nfunction intersectAtHeight(r: Ray, z: number): Point {\n const intersectionPt = vec3.create();\n origin[2] = z;\n const intersects = r.intersectsPlane(origin, up, intersectionPt);\n assert(intersects, 'tilespacePoint should always be below horizon, and since camera cannot have pitch >90, ray should always intersect');\n\n return new Point(intersectionPt[0], intersectionPt[1]);\n}\n\nexport default CircleStyleLayer;\n","// @flow\n\nimport CircleBucket from './circle_bucket.js';\n\nimport {register} from '../../util/web_worker_transfer.js';\n\nimport type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer.js';\n\nclass HeatmapBucket extends CircleBucket {\n // Needed for flow to accept omit: ['layers'] below, due to\n // https://github.com/facebook/flow/issues/4262\n layers: Array;\n}\n\nregister(HeatmapBucket, 'HeatmapBucket', {omit: ['layers']});\n\nexport default HeatmapBucket;\n","// @flow\n\nimport assert from 'assert';\n\nimport {register} from './web_worker_transfer.js';\n\nexport type Size = interface {\n width: number,\n height: number,\n};\n\nexport interface SpritePosition {\n +tl: [number, number],\n +br: [number, number],\n +pixelRatio?: number\n}\nexport type SpritePositions = {[_: string]: SpritePosition};\n\ntype Point = {\n x: number,\n y: number\n};\n\nfunction createImage(image: T, {width, height}: Size, channels: number, data?: Uint8Array | Uint8ClampedArray): T {\n if (!data) {\n data = new Uint8Array(width * height * channels);\n } else if (data instanceof Uint8ClampedArray) {\n data = new Uint8Array(data.buffer);\n } else if (data.length !== width * height * channels) {\n throw new RangeError('mismatched image size');\n }\n image.width = width;\n image.height = height;\n image.data = data;\n return image;\n}\n\nfunction resizeImage(image: T, newImage: T, channels: number) {\n const {width, height} = newImage;\n if (width === image.width && height === image.height) {\n return;\n }\n\n copyImage(image, newImage, {x: 0, y: 0}, {x: 0, y: 0}, {\n width: Math.min(image.width, width),\n height: Math.min(image.height, height)\n }, channels);\n\n image.width = width;\n image.height = height;\n image.data = newImage.data;\n}\n\nfunction copyImage(srcImg: T | ImageData, dstImg: T, srcPt: Point, dstPt: Point, size: Size, channels: number): T {\n if (size.width === 0 || size.height === 0) {\n return dstImg;\n }\n\n if (size.width > srcImg.width ||\n size.height > srcImg.height ||\n srcPt.x > srcImg.width - size.width ||\n srcPt.y > srcImg.height - size.height) {\n throw new RangeError('out of range source coordinates for image copy');\n }\n\n if (size.width > dstImg.width ||\n size.height > dstImg.height ||\n dstPt.x > dstImg.width - size.width ||\n dstPt.y > dstImg.height - size.height) {\n throw new RangeError('out of range destination coordinates for image copy');\n }\n\n const srcData = srcImg.data;\n const dstData = dstImg.data;\n\n assert(srcData !== dstData);\n\n for (let y = 0; y < size.height; y++) {\n const srcOffset = ((srcPt.y + y) * srcImg.width + srcPt.x) * channels;\n const dstOffset = ((dstPt.y + y) * dstImg.width + dstPt.x) * channels;\n for (let i = 0; i < size.width * channels; i++) {\n dstData[dstOffset + i] = srcData[srcOffset + i];\n }\n }\n return dstImg;\n}\n\nexport class AlphaImage {\n width: number;\n height: number;\n data: Uint8Array;\n\n constructor(size: Size, data?: Uint8Array | Uint8ClampedArray) {\n createImage(this, size, 1, data);\n }\n\n resize(size: Size) {\n resizeImage(this, new AlphaImage(size), 1);\n }\n\n clone(): AlphaImage {\n return new AlphaImage({width: this.width, height: this.height}, new Uint8Array(this.data));\n }\n\n static copy(srcImg: AlphaImage, dstImg: AlphaImage, srcPt: Point, dstPt: Point, size: Size) {\n copyImage(srcImg, dstImg, srcPt, dstPt, size, 1);\n }\n}\n\n// Not premultiplied, because ImageData is not premultiplied.\n// UNPACK_PREMULTIPLY_ALPHA_WEBGL must be used when uploading to a texture.\nexport class RGBAImage {\n width: number;\n height: number;\n\n // data must be a Uint8Array instead of Uint8ClampedArray because texImage2D does not\n // support Uint8ClampedArray in all browsers\n data: Uint8Array;\n\n constructor(size: Size, data?: Uint8Array | Uint8ClampedArray) {\n createImage(this, size, 4, data);\n }\n\n resize(size: Size) {\n resizeImage(this, new RGBAImage(size), 4);\n }\n\n replace(data: Uint8Array | Uint8ClampedArray, copy?: boolean) {\n if (copy) {\n this.data.set(data);\n } else if (data instanceof Uint8ClampedArray) {\n this.data = new Uint8Array(data.buffer);\n } else {\n this.data = data;\n }\n }\n\n clone(): RGBAImage {\n return new RGBAImage({width: this.width, height: this.height}, new Uint8Array(this.data));\n }\n\n static copy(srcImg: RGBAImage | ImageData, dstImg: RGBAImage, srcPt: Point, dstPt: Point, size: Size) {\n copyImage(srcImg, dstImg, srcPt, dstPt, size, 4);\n }\n}\n\nregister(AlphaImage, 'AlphaImage');\nregister(RGBAImage, 'RGBAImage');\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"heatmap-radius\": DataDrivenProperty,\n \"heatmap-weight\": DataDrivenProperty,\n \"heatmap-intensity\": DataConstantProperty,\n \"heatmap-color\": ColorRampProperty,\n \"heatmap-opacity\": DataConstantProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"heatmap-radius\": new DataDrivenProperty(styleSpec[\"paint_heatmap\"][\"heatmap-radius\"]),\n \"heatmap-weight\": new DataDrivenProperty(styleSpec[\"paint_heatmap\"][\"heatmap-weight\"]),\n \"heatmap-intensity\": new DataConstantProperty(styleSpec[\"paint_heatmap\"][\"heatmap-intensity\"]),\n \"heatmap-color\": new ColorRampProperty(styleSpec[\"paint_heatmap\"][\"heatmap-color\"]),\n \"heatmap-opacity\": new DataConstantProperty(styleSpec[\"paint_heatmap\"][\"heatmap-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties\n}>);\n","// @flow\n\nimport {RGBAImage} from './image.js';\nimport {isPowerOfTwo} from './util.js';\nimport assert from 'assert';\n\nimport type {StylePropertyExpression} from '../style-spec/expression/index.js';\n\nexport type ColorRampParams = {\n expression: StylePropertyExpression;\n evaluationKey: string;\n resolution?: number;\n image?: RGBAImage;\n clips?: Array;\n}\n\n/**\n * Given an expression that should evaluate to a color ramp,\n * return a RGBA image representing that ramp expression.\n *\n * @private\n */\nexport function renderColorRamp(params: ColorRampParams): RGBAImage {\n const evaluationGlobals = {};\n const width = params.resolution || 256;\n const height = params.clips ? params.clips.length : 1;\n const image = params.image || new RGBAImage({width, height});\n\n assert(isPowerOfTwo(width));\n\n const renderPixel = (stride: number, index: number, progress: number) => {\n evaluationGlobals[params.evaluationKey] = progress;\n const pxColor = params.expression.evaluate((evaluationGlobals: any));\n // the colors are being unpremultiplied because Color uses\n // premultiplied values, and the Texture class expects unpremultiplied ones\n image.data[stride + index + 0] = Math.floor(pxColor.r * 255 / pxColor.a);\n image.data[stride + index + 1] = Math.floor(pxColor.g * 255 / pxColor.a);\n image.data[stride + index + 2] = Math.floor(pxColor.b * 255 / pxColor.a);\n image.data[stride + index + 3] = Math.floor(pxColor.a * 255);\n };\n\n if (!params.clips) {\n for (let i = 0, j = 0; i < width; i++, j += 4) {\n const progress = i / (width - 1);\n\n renderPixel(0, j, progress);\n }\n } else {\n for (let clip = 0, stride = 0; clip < height; ++clip, stride += width * 4) {\n for (let i = 0, j = 0; i < width; i++, j += 4) {\n // Remap progress between clips\n const progress = i / (width - 1);\n const {start, end} = params.clips[clip];\n const evaluationProgress = start * (1 - progress) + end * progress;\n renderPixel(stride, j, evaluationProgress);\n }\n }\n }\n\n return image;\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"hillshade-illumination-direction\": DataConstantProperty,\n \"hillshade-illumination-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"hillshade-exaggeration\": DataConstantProperty,\n \"hillshade-shadow-color\": DataConstantProperty,\n \"hillshade-highlight-color\": DataConstantProperty,\n \"hillshade-accent-color\": DataConstantProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"hillshade-illumination-direction\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-illumination-direction\"]),\n \"hillshade-illumination-anchor\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-illumination-anchor\"]),\n \"hillshade-exaggeration\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-exaggeration\"]),\n \"hillshade-shadow-color\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-shadow-color\"]),\n \"hillshade-highlight-color\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-highlight-color\"]),\n \"hillshade-accent-color\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-accent-color\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties\n}>);\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst layout: StructArrayLayout = createLayout([\n {name: 'a_pos', components: 2, type: 'Int16'}\n], 4);\n\nexport default layout;\nexport const {members, size, alignment} = layout;\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","\nexport default function quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","// @flow\n\nimport quickselect from 'quickselect';\n\nimport {calculateSignedArea} from './util.js';\n\nimport type Point from '@mapbox/point-geometry';\n\n// classifies an array of rings into polygons with outer rings and holes\nexport default function classifyRings(rings: Array>, maxRings: number): Array>> {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons = [];\n let polygon,\n ccw;\n\n for (let i = 0; i < len; i++) {\n const area = calculateSignedArea(rings[i]);\n if (area === 0) continue;\n\n (rings[i]: any).area = Math.abs(area);\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n (polygon: any).push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n // Earcut performance degrades with the # of rings in a polygon. For this\n // reason, we limit strip out all but the `maxRings` largest rings.\n if (maxRings > 1) {\n for (let j = 0; j < polygons.length; j++) {\n if (polygons[j].length <= maxRings) continue;\n quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n polygons[j] = polygons[j].slice(0, maxRings);\n }\n }\n\n return polygons;\n}\n\nfunction compareAreas(a: {area: number}, b: {area: number}) {\n return b.area - a.area;\n}\n","// @flow\nimport type FillStyleLayer from '../../style/style_layer/fill_style_layer.js';\nimport type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion_style_layer.js';\nimport type LineStyleLayer from '../../style/style_layer/line_style_layer.js';\n\nimport type {\n BucketFeature,\n PopulateParameters\n} from '../bucket.js';\n\ntype PatternStyleLayers =\n Array |\n Array |\n Array;\n\nexport function hasPattern(type: string, layers: PatternStyleLayers, options: PopulateParameters): boolean {\n const patterns = options.patternDependencies;\n let hasPattern = false;\n\n for (const layer of layers) {\n const patternProperty = layer.paint.get(`${type}-pattern`);\n if (!patternProperty.isConstant()) {\n hasPattern = true;\n }\n\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern) {\n hasPattern = true;\n patterns[constantPattern] = true;\n }\n }\n\n return hasPattern;\n}\n\nexport function addPatternDependencies(type: string, layers: PatternStyleLayers, patternFeature: BucketFeature, zoom: number, options: PopulateParameters): BucketFeature {\n const patterns = options.patternDependencies;\n for (const layer of layers) {\n const patternProperty = layer.paint.get(`${type}-pattern`);\n\n const patternPropertyValue = patternProperty.value;\n if (patternPropertyValue.kind !== \"constant\") {\n let pattern = patternPropertyValue.evaluate({zoom}, patternFeature, {}, options.availableImages);\n pattern = pattern && pattern.name ? pattern.name : pattern;\n\n // add to patternDependencies\n patterns[pattern] = true;\n\n // save for layout\n patternFeature.patterns[layer.id] = pattern;\n }\n }\n return patternFeature;\n}\n","// @flow\n\nimport {FillLayoutArray} from '../array_types.js';\n\nimport {members as layoutAttributes} from './fill_attributes.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {LineIndexArray, TriangleIndexArray} from '../index_array_type.js';\nimport earcut from 'earcut';\nimport classifyRings from '../../util/classify_rings.js';\nimport assert from 'assert';\nconst EARCUT_MAX_RINGS = 500;\nimport {register} from '../../util/web_worker_transfer.js';\nimport {hasPattern, addPatternDependencies} from './pattern_bucket_features.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\n\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type FillStyleLayer from '../../style/style_layer/fill_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nimport type {IVectorTileLayer} from '@mapbox/vector-tile';\n\nclass FillBucket implements Bucket {\n index: number;\n zoom: number;\n overscaling: number;\n layers: Array;\n layerIds: Array;\n stateDependentLayers: Array;\n stateDependentLayerIds: Array;\n patternFeatures: Array;\n\n layoutVertexArray: FillLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n indexArray2: LineIndexArray;\n indexBuffer2: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet;\n segments: SegmentVector;\n segments2: SegmentVector;\n uploaded: boolean;\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters) {\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.hasPattern = false;\n this.patternFeatures = [];\n\n this.layoutVertexArray = new FillLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.indexArray2 = new LineIndexArray();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.segments = new SegmentVector();\n this.segments2 = new SegmentVector();\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n this.projection = options.projection;\n }\n\n populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n this.hasPattern = hasPattern('fill', this.layers, options);\n const fillSortKey = this.layers[0].layout.get('fill-sort-key');\n const bucketFeatures = [];\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n // $FlowFixMe[method-unbinding]\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const sortKey = fillSortKey ?\n fillSortKey.evaluate(evaluationFeature, {}, canonical, options.availableImages) :\n undefined;\n\n const bucketFeature: BucketFeature = {\n id,\n properties: feature.properties,\n type: feature.type,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n patterns: {},\n sortKey\n };\n\n bucketFeatures.push(bucketFeature);\n }\n\n if (fillSortKey) {\n bucketFeatures.sort((a, b) => {\n // a.sortKey is always a number when in use\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n\n for (const bucketFeature of bucketFeatures) {\n const {geometry, index, sourceLayerIndex} = bucketFeature;\n\n if (this.hasPattern) {\n const patternFeature = addPatternDependencies('fill', this.layers, bucketFeature, this.zoom, options);\n // pattern features are added only once the pattern is loaded into the image atlas\n // so are stored during populate until later updated with positions by tile worker in addFeatures\n this.patternFeatures.push(patternFeature);\n } else {\n this.addFeature(bucketFeature, geometry, index, canonical, {}, options.availableImages);\n }\n\n const feature = features[index].feature;\n options.featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);\n }\n }\n\n update(states: FeatureStates, vtLayer: IVectorTileLayer, availableImages: Array, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array, _: TileTransform) {\n for (const feature of this.patternFeatures) {\n this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions, availableImages);\n }\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n upload(context: Context) {\n if (!this.uploaded) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n this.indexBuffer2 = context.createIndexBuffer(this.indexArray2);\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.indexBuffer2.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n this.segments2.destroy();\n }\n\n addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array = []) {\n for (const polygon of classifyRings(geometry, EARCUT_MAX_RINGS)) {\n let numVertices = 0;\n for (const ring of polygon) {\n numVertices += ring.length;\n }\n\n const triangleSegment = this.segments.prepareSegment(numVertices, this.layoutVertexArray, this.indexArray);\n const triangleIndex = triangleSegment.vertexLength;\n\n const flattened = [];\n const holeIndices = [];\n\n for (const ring of polygon) {\n if (ring.length === 0) {\n continue;\n }\n\n if (ring !== polygon[0]) {\n holeIndices.push(flattened.length / 2);\n }\n\n const lineSegment = this.segments2.prepareSegment(ring.length, this.layoutVertexArray, this.indexArray2);\n const lineIndex = lineSegment.vertexLength;\n\n this.layoutVertexArray.emplaceBack(ring[0].x, ring[0].y);\n this.indexArray2.emplaceBack(lineIndex + ring.length - 1, lineIndex);\n flattened.push(ring[0].x);\n flattened.push(ring[0].y);\n\n for (let i = 1; i < ring.length; i++) {\n this.layoutVertexArray.emplaceBack(ring[i].x, ring[i].y);\n this.indexArray2.emplaceBack(lineIndex + i - 1, lineIndex + i);\n flattened.push(ring[i].x);\n flattened.push(ring[i].y);\n }\n\n lineSegment.vertexLength += ring.length;\n lineSegment.primitiveLength += ring.length;\n }\n\n const indices = earcut(flattened, holeIndices);\n assert(indices.length % 3 === 0);\n\n for (let i = 0; i < indices.length; i += 3) {\n this.indexArray.emplaceBack(\n triangleIndex + indices[i],\n triangleIndex + indices[i + 1],\n triangleIndex + indices[i + 2]);\n }\n\n triangleSegment.vertexLength += numVertices;\n triangleSegment.primitiveLength += indices.length / 3;\n }\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, availableImages, canonical);\n }\n}\n\nregister(FillBucket, 'FillBucket', {omit: ['layers', 'patternFeatures']});\n\nexport default FillBucket;\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"fill-sort-key\": DataDrivenProperty,\n|};\n\nconst layout: Properties = new Properties({\n \"fill-sort-key\": new DataDrivenProperty(styleSpec[\"layout_fill\"][\"fill-sort-key\"]),\n});\n\nexport type PaintProps = {|\n \"fill-antialias\": DataConstantProperty,\n \"fill-opacity\": DataDrivenProperty,\n \"fill-color\": DataDrivenProperty,\n \"fill-outline-color\": DataDrivenProperty,\n \"fill-translate\": DataConstantProperty<[number, number]>,\n \"fill-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"fill-pattern\": DataDrivenProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"fill-antialias\": new DataConstantProperty(styleSpec[\"paint_fill\"][\"fill-antialias\"]),\n \"fill-opacity\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-opacity\"]),\n \"fill-color\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-color\"]),\n \"fill-outline-color\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-outline-color\"]),\n \"fill-translate\": new DataConstantProperty(styleSpec[\"paint_fill\"][\"fill-translate\"]),\n \"fill-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_fill\"][\"fill-translate-anchor\"]),\n \"fill-pattern\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-pattern\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties, layout: Properties\n}>);\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nexport const fillExtrusionAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_normal_ed', components: 4, type: 'Int16'}\n]);\n\nexport const centroidAttributes: StructArrayLayout = createLayout([\n {name: 'a_centroid_pos', components: 2, type: 'Uint16'}\n]);\n\nexport const fillExtrusionAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_pos_3', components: 3, type: 'Int16'},\n {name: 'a_pos_normal_3', components: 3, type: 'Int16'}\n]);\n\nexport const {members, size, alignment} = fillExtrusionAttributes;\n","'use strict';\n\nvar Point = require('@mapbox/point-geometry');\n\nmodule.exports = VectorTileFeature;\n\nfunction VectorTileFeature(pbf, end, extent, keys, values) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n}\n\nfunction readFeature(tag, feature, pbf) {\n if (tag == 1) feature.id = pbf.readVarint();\n else if (tag == 2) readTag(pbf, feature);\n else if (tag == 3) feature.type = pbf.readVarint();\n else if (tag == 4) feature._geometry = pbf.pos;\n}\n\nfunction readTag(pbf, feature) {\n var end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var key = feature._keys[pbf.readVarint()],\n value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n\nVectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nVectorTileFeature.prototype.loadGeometry = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n lines = [],\n line;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) { // moveTo\n if (line) lines.push(line);\n line = [];\n }\n\n line.push(new Point(x, y));\n\n } else if (cmd === 7) {\n\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].clone()); // closePolygon\n }\n\n } else {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n};\n\nVectorTileFeature.prototype.bbox = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n x1 = Infinity,\n x2 = -Infinity,\n y1 = Infinity,\n y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n\n } else if (cmd !== 7) {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n return [x1, y1, x2, y2];\n};\n\nVectorTileFeature.prototype.toGeoJSON = function(x, y, z) {\n var size = this.extent * Math.pow(2, z),\n x0 = this.extent * x,\n y0 = this.extent * y,\n coords = this.loadGeometry(),\n type = VectorTileFeature.types[this.type],\n i, j;\n\n function project(line) {\n for (var j = 0; j < line.length; j++) {\n var p = line[j], y2 = 180 - (p.y + y0) * 360 / size;\n line[j] = [\n (p.x + x0) * 360 / size - 180,\n 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90\n ];\n }\n }\n\n switch (this.type) {\n case 1:\n var points = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n project(coords);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n project(coords[i]);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n project(coords[i][j]);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = 'Multi' + type;\n }\n\n var result = {\n type: \"Feature\",\n geometry: {\n type: type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if ('id' in this) {\n result.id = this.id;\n }\n\n return result;\n};\n\n// classifies an array of rings into polygons with outer rings and holes\n\nfunction classifyRings(rings) {\n var len = rings.length;\n\n if (len <= 1) return [rings];\n\n var polygons = [],\n polygon,\n ccw;\n\n for (var i = 0; i < len; i++) {\n var area = signedArea(rings[i]);\n if (area === 0) continue;\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n polygon.push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\nfunction signedArea(ring) {\n var sum = 0;\n for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n","'use strict';\n\nvar VectorTileFeature = require('./vectortilefeature.js');\n\nmodule.exports = VectorTileLayer;\n\nfunction VectorTileLayer(pbf, end) {\n // Public\n this.version = 1;\n this.name = null;\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n}\n\nfunction readLayer(tag, layer, pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n}\n\nfunction readValueMessage(pbf) {\n var value = null,\n end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var tag = pbf.readVarint() >> 3;\n\n value = tag === 1 ? pbf.readString() :\n tag === 2 ? pbf.readFloat() :\n tag === 3 ? pbf.readDouble() :\n tag === 4 ? pbf.readVarint64() :\n tag === 5 ? pbf.readVarint() :\n tag === 6 ? pbf.readSVarint() :\n tag === 7 ? pbf.readBoolean() : null;\n }\n\n return value;\n}\n\n// return feature `i` from this layer as a `VectorTileFeature`\nVectorTileLayer.prototype.feature = function(i) {\n if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds');\n\n this._pbf.pos = this._features[i];\n\n var end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n};\n","'use strict';\n\nvar VectorTileLayer = require('./vectortilelayer');\n\nmodule.exports = VectorTile;\n\nfunction VectorTile(pbf, end) {\n this.layers = pbf.readFields(readTile, {}, end);\n}\n\nfunction readTile(tag, layers, pbf) {\n if (tag === 3) {\n var layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length) layers[layer.name] = layer;\n }\n}\n\n","module.exports.VectorTile = require('./lib/vectortile.js');\nmodule.exports.VectorTileFeature = require('./lib/vectortilefeature.js');\nmodule.exports.VectorTileLayer = require('./lib/vectortilelayer.js');\n","// @flow\n\nimport assert from 'assert';\nimport Point from '@mapbox/point-geometry';\n\nexport type ClippedPolygon = {\n polygon: Array>,\n bounds: [Point, Point]\n};\n\ntype PolygonArray = Array>>;\n\nfunction clipPolygon(polygons: PolygonArray, clipAxis1: number, clipAxis2: number, axis: number): PolygonArray {\n const intersectX = (ring: Array, ax: number, ay: number, bx: number, by: number, x: number) => {\n ring.push(new Point(x, ay + (by - ay) * ((x - ax) / (bx - ax))));\n };\n const intersectY = (ring: Array, ax: number, ay: number, bx: number, by: number, y: number) => {\n ring.push(new Point(ax + (bx - ax) * ((y - ay) / (by - ay)), y));\n };\n\n const polygonsClipped = [];\n const intersect = axis === 0 ? intersectX : intersectY;\n for (const polygon of polygons) {\n const polygonClipped = [];\n for (const ring of polygon) {\n if (ring.length <= 2) {\n continue;\n }\n\n const clipped = [];\n for (let i = 0; i < ring.length - 1; i++) {\n const ax = ring[i].x;\n const ay = ring[i].y;\n const bx = ring[i + 1].x;\n const by = ring[i + 1].y;\n const a = axis === 0 ? ax : ay;\n const b = axis === 0 ? bx : by;\n if (a < clipAxis1) {\n if (b > clipAxis1) {\n intersect(clipped, ax, ay, bx, by, clipAxis1);\n }\n } else if (a > clipAxis2) {\n if (b < clipAxis2) {\n intersect(clipped, ax, ay, bx, by, clipAxis2);\n }\n } else {\n clipped.push(ring[i]);\n }\n if (b < clipAxis1 && a >= clipAxis1) {\n intersect(clipped, ax, ay, bx, by, clipAxis1);\n }\n if (b > clipAxis2 && a <= clipAxis2) {\n intersect(clipped, ax, ay, bx, by, clipAxis2);\n }\n }\n\n let last = ring[ring.length - 1];\n const a = axis === 0 ? last.x : last.y;\n if (a >= clipAxis1 && a <= clipAxis2) {\n clipped.push(last);\n }\n if (clipped.length) {\n last = clipped[clipped.length - 1];\n if (clipped[0].x !== last.x || clipped[0].y !== last.y) {\n clipped.push(clipped[0]);\n }\n polygonClipped.push(clipped);\n }\n }\n if (polygonClipped.length) {\n polygonsClipped.push(polygonClipped);\n }\n }\n\n return polygonsClipped;\n}\n\nexport function subdividePolygons(polygons: PolygonArray, bounds: [Point, Point], gridSizeX: number, gridSizeY: number, padding: number = 0.0, splitFn: Function): Array {\n const outPolygons = [];\n\n if (!polygons.length || !gridSizeX || !gridSizeY) {\n return outPolygons;\n }\n\n const addResult = (clipped: PolygonArray, bounds: [Point, Point]) => {\n for (const polygon of clipped) {\n outPolygons.push({polygon, bounds});\n }\n };\n\n const hSplits = Math.ceil(Math.log2(gridSizeX));\n const vSplits = Math.ceil(Math.log2(gridSizeY));\n\n const initialSplits = hSplits - vSplits;\n\n const splits = [];\n for (let i = 0; i < Math.abs(initialSplits); i++) {\n splits.push(initialSplits > 0 ? 0 : 1);\n }\n\n for (let i = 0; i < Math.min(hSplits, vSplits); i++) {\n splits.push(0); // x\n splits.push(1); // y\n }\n\n let split = polygons;\n\n split = clipPolygon(split, bounds[0].y - padding, bounds[1].y + padding, 1);\n split = clipPolygon(split, bounds[0].x - padding, bounds[1].x + padding, 0);\n\n if (!split.length) {\n return outPolygons;\n }\n\n const stack = [];\n if (splits.length) {\n stack.push({polygons: split, bounds, depth: 0});\n } else {\n addResult(split, bounds);\n }\n\n while (stack.length) {\n const frame = stack.pop();\n\n assert(frame.polygons.length > 0);\n\n const depth = frame.depth;\n const axis = splits[depth];\n\n const bboxMin = frame.bounds[0];\n const bboxMax = frame.bounds[1];\n\n const splitMin = axis === 0 ? bboxMin.x : bboxMin.y;\n const splitMax = axis === 0 ? bboxMax.x : bboxMax.y;\n\n const splitMid = splitFn ? splitFn(axis, splitMin, splitMax) : 0.5 * (splitMin + splitMax);\n\n const lclip = clipPolygon(frame.polygons, splitMin - padding, splitMid + padding, axis);\n const rclip = clipPolygon(frame.polygons, splitMid - padding, splitMax + padding, axis);\n\n if (lclip.length) {\n const bbMaxX = axis === 0 ? splitMid : bboxMax.x;\n const bbMaxY = axis === 1 ? splitMid : bboxMax.y;\n\n const bbMax = new Point(bbMaxX, bbMaxY);\n\n const lclipBounds = [bboxMin, bbMax];\n\n if (splits.length > depth + 1) {\n stack.push({polygons: lclip, bounds: lclipBounds, depth: depth + 1});\n } else {\n addResult(lclip, lclipBounds);\n }\n }\n\n if (rclip.length) {\n const bbMinX = axis === 0 ? splitMid : bboxMin.x;\n const bbMinY = axis === 1 ? splitMid : bboxMin.y;\n\n const bbMin = new Point(bbMinX, bbMinY);\n\n const rclipBounds = [bbMin, bboxMax];\n\n if (splits.length > depth + 1) {\n stack.push({polygons: rclip, bounds: rclipBounds, depth: depth + 1});\n } else {\n addResult(rclip, rclipBounds);\n }\n }\n }\n\n return outPolygons;\n}\n","// @flow\n\nimport {FillExtrusionLayoutArray, FillExtrusionExtArray, FillExtrusionCentroidArray} from '../array_types.js';\n\nimport {members as layoutAttributes, centroidAttributes, fillExtrusionAttributesExt} from './fill_extrusion_attributes.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray} from '../index_array_type.js';\nimport EXTENT from '../extent.js';\nimport earcut from 'earcut';\nimport {VectorTileFeature} from '@mapbox/vector-tile';\nconst vectorTileFeatureTypes = VectorTileFeature.types;\nimport classifyRings from '../../util/classify_rings.js';\nimport assert from 'assert';\nconst EARCUT_MAX_RINGS = 500;\nimport {register} from '../../util/web_worker_transfer.js';\nimport {hasPattern, addPatternDependencies} from './pattern_bucket_features.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\nimport Point from '@mapbox/point-geometry';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport {lngFromMercatorX, latFromMercatorY, mercatorYfromLat} from '../../geo/mercator_coordinate.js';\nimport {subdividePolygons} from '../../util/polygon_clipping.js';\nimport type {ClippedPolygon} from '../../util/polygon_clipping.js';\nimport type {Vec3} from 'gl-matrix';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport {earthRadius} from '../../geo/lng_lat.js';\n\nimport type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nimport type {IVectorTileLayer} from '@mapbox/vector-tile';\n\nconst FACTOR = Math.pow(2, 13);\n\n// Also declared in _prelude_terrain.vertex.glsl\n// Used to scale most likely elevation values to fit well in an uint16\n// (Elevation of Dead Sea + ELEVATION_OFFSET) * ELEVATION_SCALE is roughly 0\n// (Height of mt everest + ELEVATION_OFFSET) * ELEVATION_SCALE is roughly 64k\nexport const ELEVATION_SCALE = 7.0;\nexport const ELEVATION_OFFSET = 450;\n\nfunction addVertex(vertexArray: FillExtrusionLayoutArray, x: number, y: number, nxRatio: number, nySign: number, normalUp: number, top: number, e: number) {\n vertexArray.emplaceBack(\n // a_pos_normal_ed:\n // Encode top and side/up normal using the least significant bits\n (x << 1) + top,\n (y << 1) + normalUp,\n // dxdy is signed, encode quadrant info using the least significant bit\n (Math.floor(nxRatio * FACTOR) << 1) + nySign,\n // edgedistance (used for wrapping patterns around extrusion sides)\n Math.round(e)\n );\n}\n\nfunction addGlobeExtVertex(vertexArray: FillExtrusionExtArray, pos: {x: number, y: number, z: number}, normal: Vec3) {\n const encode = 1 << 14;\n vertexArray.emplaceBack(\n pos.x, pos.y, pos.z,\n normal[0] * encode, normal[1] * encode, normal[2] * encode);\n}\n\nexport class PartMetadata {\n acc: Point;\n min: Point;\n max: Point;\n polyCount: Array<{edges: number, top: number}>;\n currentPolyCount: {edges: number, top: number};\n borders: Array<[number, number]>; // Array<[min, max]>\n vertexArrayOffset: number;\n\n constructor() {\n this.acc = new Point(0, 0);\n this.polyCount = [];\n }\n\n startRing(p: Point) {\n this.currentPolyCount = {edges: 0, top: 0};\n this.polyCount.push(this.currentPolyCount);\n if (this.min) return;\n this.min = new Point(p.x, p.y);\n this.max = new Point(p.x, p.y);\n }\n\n append(p: Point, prev: Point) {\n this.currentPolyCount.edges++;\n\n this.acc._add(p);\n const min = this.min, max = this.max;\n if (p.x < min.x) {\n min.x = p.x;\n } else if (p.x > max.x) {\n max.x = p.x;\n }\n if (p.y < min.y) {\n min.y = p.y;\n } else if (p.y > max.y) {\n max.y = p.y;\n }\n if (((p.x === 0 || p.x === EXTENT) && p.x === prev.x) !== ((p.y === 0 || p.y === EXTENT) && p.y === prev.y)) {\n // Custom defined geojson buildings are cut on borders. Points are\n // repeated when edge cuts tile corner (reason for using xor).\n this.processBorderOverlap(p, prev);\n }\n // check border intersection\n if ((prev.x < 0) !== (p.x < 0)) {\n this.addBorderIntersection(0, interpolate(prev.y, p.y, (0 - prev.x) / (p.x - prev.x)));\n }\n if ((prev.x > EXTENT) !== (p.x > EXTENT)) {\n this.addBorderIntersection(1, interpolate(prev.y, p.y, (EXTENT - prev.x) / (p.x - prev.x)));\n }\n if ((prev.y < 0) !== (p.y < 0)) {\n this.addBorderIntersection(2, interpolate(prev.x, p.x, (0 - prev.y) / (p.y - prev.y)));\n }\n if ((prev.y > EXTENT) !== (p.y > EXTENT)) {\n this.addBorderIntersection(3, interpolate(prev.x, p.x, (EXTENT - prev.y) / (p.y - prev.y)));\n }\n }\n\n addBorderIntersection(index: 0 | 1 | 2 | 3, i: number) {\n if (!this.borders) {\n this.borders = [\n [Number.MAX_VALUE, -Number.MAX_VALUE],\n [Number.MAX_VALUE, -Number.MAX_VALUE],\n [Number.MAX_VALUE, -Number.MAX_VALUE],\n [Number.MAX_VALUE, -Number.MAX_VALUE]\n ];\n }\n const b = this.borders[index];\n if (i < b[0]) b[0] = i;\n if (i > b[1]) b[1] = i;\n }\n\n processBorderOverlap(p: Point, prev: Point) {\n if (p.x === prev.x) {\n if (p.y === prev.y) return; // custom defined geojson could have points repeated.\n const index = p.x === 0 ? 0 : 1;\n this.addBorderIntersection(index, prev.y);\n this.addBorderIntersection(index, p.y);\n } else {\n assert(p.y === prev.y);\n const index = p.y === 0 ? 2 : 3;\n this.addBorderIntersection(index, prev.x);\n this.addBorderIntersection(index, p.x);\n }\n }\n\n centroid(): Point {\n const count = this.polyCount.reduce((acc, p) => acc + p.edges, 0);\n return count !== 0 ? this.acc.div(count)._round() : new Point(0, 0);\n }\n\n span(): Point {\n return new Point(this.max.x - this.min.x, this.max.y - this.min.y);\n }\n\n intersectsCount(): number {\n return this.borders.reduce((acc, p) => acc + +(p[0] !== Number.MAX_VALUE), 0);\n }\n}\n\nclass FillExtrusionBucket implements Bucket {\n index: number;\n zoom: number;\n canonical: CanonicalTileID;\n overscaling: number;\n enableTerrain: boolean;\n layers: Array;\n layerIds: Array;\n stateDependentLayers: Array;\n stateDependentLayerIds: Array;\n\n layoutVertexArray: FillExtrusionLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n\n centroidVertexArray: FillExtrusionCentroidArray;\n centroidVertexBuffer: VertexBuffer;\n\n layoutVertexExtArray: ?FillExtrusionExtArray;\n layoutVertexExtBuffer: ?VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n hasPattern: boolean;\n edgeRadius: number;\n programConfigurations: ProgramConfigurationSet;\n segments: SegmentVector;\n uploaded: boolean;\n features: Array;\n\n featuresOnBorder: Array;\n // borders / borderDoneWithNeighborZ: 0 - left, 1, right, 2 - top, 3 - bottom\n borders: Array>; // For each side, indices into featuresOnBorder array.\n borderDoneWithNeighborZ: Array;\n needsCentroidUpdate: boolean;\n tileToMeter: number; // cache conversion.\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters) {\n this.zoom = options.zoom;\n this.canonical = options.canonical;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.hasPattern = false;\n this.edgeRadius = 0;\n this.projection = options.projection;\n\n this.layoutVertexArray = new FillExtrusionLayoutArray();\n this.centroidVertexArray = new FillExtrusionCentroidArray();\n this.indexArray = new TriangleIndexArray();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.segments = new SegmentVector();\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n this.enableTerrain = options.enableTerrain;\n }\n\n populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n this.features = [];\n this.hasPattern = hasPattern('fill-extrusion', this.layers, options);\n this.featuresOnBorder = [];\n this.borders = [[], [], [], []];\n this.borderDoneWithNeighborZ = [-1, -1, -1, -1];\n this.tileToMeter = tileToMeter(canonical);\n this.edgeRadius = this.layers[0].layout.get('fill-extrusion-edge-radius') / this.tileToMeter;\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n // $FlowFixMe[method-unbinding]\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const bucketFeature: BucketFeature = {\n id,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n properties: feature.properties,\n type: feature.type,\n patterns: {}\n };\n\n const vertexArrayOffset = this.layoutVertexArray.length;\n if (this.hasPattern) {\n this.features.push(addPatternDependencies('fill-extrusion', this.layers, bucketFeature, this.zoom, options));\n } else {\n this.addFeature(bucketFeature, bucketFeature.geometry, index, canonical, {}, options.availableImages, tileTransform);\n }\n\n options.featureIndex.insert(feature, bucketFeature.geometry, index, sourceLayerIndex, this.index, vertexArrayOffset);\n }\n this.sortBorders();\n }\n\n addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array, tileTransform: TileTransform) {\n for (const feature of this.features) {\n const {geometry} = feature;\n this.addFeature(feature, geometry, feature.index, canonical, imagePositions, availableImages, tileTransform);\n }\n this.sortBorders();\n }\n\n update(states: FeatureStates, vtLayer: IVectorTileLayer, availableImages: Array, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n\n if (this.layoutVertexExtArray) {\n this.layoutVertexExtBuffer = context.createVertexBuffer(this.layoutVertexExtArray, fillExtrusionAttributesExt.members, true);\n }\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n uploadCentroid(context: Context) {\n if (this.centroidVertexArray.length === 0) return;\n if (!this.centroidVertexBuffer) {\n this.centroidVertexBuffer = context.createVertexBuffer(this.centroidVertexArray, centroidAttributes.members, true);\n } else if (this.needsCentroidUpdate) {\n this.centroidVertexBuffer.updateData(this.centroidVertexArray);\n }\n this.needsCentroidUpdate = false;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n if (this.centroidVertexBuffer) {\n this.centroidVertexBuffer.destroy();\n }\n if (this.layoutVertexExtBuffer) {\n this.layoutVertexExtBuffer.destroy();\n }\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n }\n\n addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array, tileTransform: TileTransform) {\n const tileBounds = [new Point(0, 0), new Point(EXTENT, EXTENT)];\n const projection = tileTransform.projection;\n const isGlobe = projection.name === 'globe';\n const metadata = this.enableTerrain && !isGlobe ? new PartMetadata() : null;\n const isPolygon = vectorTileFeatureTypes[feature.type] === 'Polygon';\n\n if (isGlobe && !this.layoutVertexExtArray) {\n this.layoutVertexExtArray = new FillExtrusionExtArray();\n }\n\n const polygons = classifyRings(geometry, EARCUT_MAX_RINGS);\n\n for (let i = polygons.length - 1; i >= 0; i--) {\n const polygon = polygons[i];\n if (polygon.length === 0 || isEntirelyOutside(polygon[0])) {\n polygons.splice(i, 1);\n }\n }\n\n let clippedPolygons: ClippedPolygon[];\n if (isGlobe) {\n // Perform tesselation for polygons of tiles in order to support long planar\n // triangles on the curved surface of the globe. This is done for all polygons\n // regardless of their size in order guarantee identical results on all sides of\n // tile boundaries.\n //\n // The globe is subdivided into a 32x16 grid. The number of subdivisions done\n // for a tile depends on the zoom level. For example tile with z=0 requires 2⁴\n // subdivisions, tile with z=1 2³ etc. The subdivision is done in polar coordinates\n // instead of tile coordinates.\n clippedPolygons = resampleFillExtrusionPolygonsForGlobe(polygons, tileBounds, canonical);\n } else {\n clippedPolygons = [];\n for (const polygon of polygons) {\n clippedPolygons.push({polygon, bounds: tileBounds});\n }\n }\n\n const edgeRadius = isPolygon ? this.edgeRadius : 0;\n\n for (const {polygon, bounds} of clippedPolygons) {\n // Only triangulate and draw the area of the feature if it is a polygon\n // Other feature types (e.g. LineString) do not have area, so triangulation is pointless / undefined\n let topIndex = 0;\n let numVertices = 0;\n for (const ring of polygon) {\n // make sure the ring closes\n if (isPolygon && !ring[0].equals(ring[ring.length - 1])) ring.push(ring[0]);\n numVertices += (isPolygon ? (ring.length - 1) : ring.length);\n }\n // We use \"(isPolygon ? 5 : 4) * numVertices\" as an estimate to ensure whether additional segments are needed or not (see SegmentVector.MAX_VERTEX_ARRAY_LENGTH).\n const segment = this.segments.prepareSegment((isPolygon ? 5 : 4) * numVertices, this.layoutVertexArray, this.indexArray);\n if (isPolygon) {\n const flattened = [];\n const holeIndices = [];\n topIndex = segment.vertexLength;\n\n // First we offset (inset) the top vertices (i.e the vertices that make up the roof).\n for (const ring of polygon) {\n if (ring.length && ring !== polygon[0]) {\n holeIndices.push(flattened.length / 2);\n }\n\n // The following vectors are used to avoid duplicate normal calculations when going over the vertices.\n let na, nb;\n {\n const p0 = ring[0];\n const p1 = ring[1];\n na = p1.sub(p0)._perp()._unit();\n }\n for (let i = 1; i < ring.length; i++) {\n const p1 = ring[i];\n const p2 = ring[i === ring.length - 1 ? 1 : i + 1];\n\n let {x, y} = p1;\n if (edgeRadius) {\n nb = p2.sub(p1)._perp()._unit();\n const nm = na.add(nb)._unit();\n\n const cosHalfAngle = na.x * nm.x + na.y * nm.y;\n const offset = edgeRadius * Math.min(4, 1 / cosHalfAngle);\n\n x += offset * nm.x;\n y += offset * nm.y;\n\n na = nb;\n }\n\n addVertex(this.layoutVertexArray, x, y, 0, 0, 1, 1, 0);\n segment.vertexLength++;\n\n // triangulate as if vertices were not offset to ensure correct triangulation\n flattened.push(p1.x, p1.y);\n\n if (isGlobe) {\n const array: any = this.layoutVertexExtArray;\n const projectedP = projection.projectTilePoint(x, y, canonical);\n const n = projection.upVector(canonical, x, y);\n addGlobeExtVertex(array, projectedP, n);\n }\n }\n }\n\n const indices = earcut(flattened, holeIndices);\n assert(indices.length % 3 === 0);\n\n for (let j = 0; j < indices.length; j += 3) {\n // clockwise winding order.\n this.indexArray.emplaceBack(\n topIndex + indices[j],\n topIndex + indices[j + 2],\n topIndex + indices[j + 1]);\n segment.primitiveLength++;\n }\n }\n\n for (const ring of polygon) {\n if (metadata && ring.length) metadata.startRing(ring[0]);\n let isPrevCornerConcave = ring.length > 4 && isAOConcaveAngle(ring[ring.length - 2], ring[0], ring[1]);\n let offsetPrev = edgeRadius ? getRoundedEdgeOffset(ring[ring.length - 2], ring[0], ring[1], edgeRadius) : 0;\n\n let kFirst;\n\n // The following vectors are used to avoid duplicate normal calculations when going over the vertices.\n let na, nb;\n {\n const p0 = ring[0];\n const p1 = ring[1];\n na = p1.sub(p0)._perp()._unit();\n }\n let cap = true;\n for (let i = 1, edgeDistance = 0; i < ring.length; i++) {\n let p0 = ring[i - 1];\n let p1 = ring[i];\n const p2 = ring[i === ring.length - 1 ? 1 : i + 1];\n\n if (metadata && isPolygon) metadata.currentPolyCount.top++;\n if (isEdgeOutsideBounds(p1, p0, bounds)) {\n if (edgeRadius) {\n na = p2.sub(p1)._perp()._unit();\n cap = !cap;\n }\n continue;\n }\n if (metadata) metadata.append(p1, p0);\n\n const d = p1.sub(p0)._perp();\n // Given that nz === 0, encode nx / (abs(nx) + abs(ny)) and signs.\n // This information is sufficient to reconstruct normal vector in vertex shader.\n const nxRatio = d.x / (Math.abs(d.x) + Math.abs(d.y));\n const nySign = d.y > 0 ? 1 : 0;\n\n const dist = p0.dist(p1);\n if (edgeDistance + dist > 32768) edgeDistance = 0;\n\n // Next offset the vertices along the edges and create a chamfer space between them:\n // So if we have the following (where 'x' denotes a vertex)\n // x──────x\n // | |\n // | |\n // | |\n // | |\n // x──────x\n // we end up with:\n // x────x\n // x x\n // | |\n // | |\n // x x\n // x────x\n // (drawing isn't exact but hopefully gets the point across).\n\n if (edgeRadius) {\n nb = p2.sub(p1)._perp()._unit();\n\n const cosHalfAngle = getCosHalfAngle(na, nb);\n let offsetNext = _getRoundedEdgeOffset(p0, p1, p2, cosHalfAngle, edgeRadius);\n\n if (isNaN(offsetNext)) offsetNext = 0;\n const nEdge = p1.sub(p0)._unit();\n p0 = p0.add(nEdge.mult(offsetPrev))._round();\n p1 = p1.add(nEdge.mult(-offsetNext))._round();\n offsetPrev = offsetNext;\n\n na = nb;\n }\n\n const k = segment.vertexLength;\n\n const isConcaveCorner = ring.length > 4 && isAOConcaveAngle(p0, p1, p2);\n let encodedEdgeDistance = encodeAOToEdgeDistance(edgeDistance, isPrevCornerConcave, cap);\n\n addVertex(this.layoutVertexArray, p0.x, p0.y, nxRatio, nySign, 0, 0, encodedEdgeDistance);\n addVertex(this.layoutVertexArray, p0.x, p0.y, nxRatio, nySign, 0, 1, encodedEdgeDistance);\n\n edgeDistance += dist;\n encodedEdgeDistance = encodeAOToEdgeDistance(edgeDistance, isConcaveCorner, !cap);\n isPrevCornerConcave = isConcaveCorner;\n\n addVertex(this.layoutVertexArray, p1.x, p1.y, nxRatio, nySign, 0, 0, encodedEdgeDistance);\n addVertex(this.layoutVertexArray, p1.x, p1.y, nxRatio, nySign, 0, 1, encodedEdgeDistance);\n\n segment.vertexLength += 4;\n\n // ┌──────┐\n // │ 1 3 │ clockwise winding order.\n // │ │ Triangle 1: 0 => 1 => 2\n // │ 0 2 │ Triangle 2: 1 => 3 => 2\n // └──────┘\n this.indexArray.emplaceBack(k + 0, k + 1, k + 2);\n this.indexArray.emplaceBack(k + 1, k + 3, k + 2);\n segment.primitiveLength += 2;\n\n if (edgeRadius) {\n // Note that in the previous for-loop we start from index 1 to add the top vertices which explains the next line.\n const t0 = topIndex + (i === 1 ? ring.length - 2 : i - 2);\n const t1 = i === 1 ? topIndex : t0 + 1;\n\n // top chamfer along the side (i.e. the space between the wall and the roof).\n this.indexArray.emplaceBack(k + 1, t0, k + 3);\n this.indexArray.emplaceBack(t0, t1, k + 3);\n segment.primitiveLength += 2;\n\n if (kFirst === undefined) {\n kFirst = k;\n }\n\n // Make sure to fill in the gap in the corner only when both corresponding edges are in tile bounds.\n if (!isEdgeOutsideBounds(p2, ring[i], bounds)) {\n const l = i === ring.length - 1 ? kFirst : segment.vertexLength;\n\n // vertical side chamfer i.e. the space between consecutive walls.\n this.indexArray.emplaceBack(k + 2, k + 3, l);\n this.indexArray.emplaceBack(k + 3, l + 1, l);\n\n // top corner where the top(roof) and two sides(walls) meet.\n this.indexArray.emplaceBack(k + 3, t1, l + 1);\n\n segment.primitiveLength += 3;\n }\n cap = !cap;\n }\n\n if (isGlobe) {\n const array: any = this.layoutVertexExtArray;\n\n const projectedP0 = projection.projectTilePoint(p0.x, p0.y, canonical);\n const projectedP1 = projection.projectTilePoint(p1.x, p1.y, canonical);\n\n const n0 = projection.upVector(canonical, p0.x, p0.y);\n const n1 = projection.upVector(canonical, p1.x, p1.y);\n\n addGlobeExtVertex(array, projectedP0, n0);\n addGlobeExtVertex(array, projectedP0, n0);\n addGlobeExtVertex(array, projectedP1, n1);\n addGlobeExtVertex(array, projectedP1, n1);\n }\n }\n if (isPolygon) topIndex += (ring.length - 1);\n }\n }\n\n assert(!isGlobe || (this.layoutVertexExtArray && this.layoutVertexExtArray.length === this.layoutVertexArray.length));\n\n if (metadata && metadata.polyCount.length > 0) {\n // When building is split between tiles, don't handle flat roofs here.\n if (metadata.borders) {\n // Store to the bucket. Flat roofs are handled in flatRoofsUpdate,\n // after joining parts that lay in different buckets.\n metadata.vertexArrayOffset = this.centroidVertexArray.length;\n const borders = metadata.borders;\n const index = this.featuresOnBorder.push(metadata) - 1;\n for (let i = 0; i < 4; i++) {\n if (borders[i][0] !== Number.MAX_VALUE) { this.borders[i].push(index); }\n }\n }\n this.encodeCentroid(metadata.borders ? undefined : metadata.centroid(), metadata);\n assert(!this.centroidVertexArray.length || this.centroidVertexArray.length === this.layoutVertexArray.length);\n }\n\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, availableImages, canonical);\n }\n\n sortBorders() {\n for (let i = 0; i < 4; i++) {\n // Sort by border intersection area minimums, ascending.\n this.borders[i].sort((a, b) => this.featuresOnBorder[a].borders[i][0] - this.featuresOnBorder[b].borders[i][0]);\n }\n }\n\n encodeCentroid(c: ?Point, metadata: PartMetadata, append: boolean = true) {\n let x, y;\n // Encoded centroid x and y:\n // x y\n // ---------------------------------------------\n // 0 0 Default, no flat roof.\n // 0 1 Hide, used to hide parts of buildings on border while expecting the other side to get loaded\n // >0 0 Elevation encoded to uint16 word\n // >0 >0 Encoded centroid position and x & y span\n if (c) {\n if (c.y !== 0) {\n const span = metadata.span()._mult(this.tileToMeter);\n x = (Math.max(c.x, 1) << 3) + Math.min(7, Math.round(span.x / 10));\n y = (Math.max(c.y, 1) << 3) + Math.min(7, Math.round(span.y / 10));\n } else { // encode height:\n x = Math.ceil((c.x + ELEVATION_OFFSET) * ELEVATION_SCALE);\n y = 0;\n }\n } else {\n // Use the impossible situation (building that has width and doesn't cross border cannot have centroid\n // at border) to encode unprocessed border building: it is initially (append === true) hidden until\n // computing centroid for joined building parts in rendering thread (flatRoofsUpdate). If it intersects more than\n // two borders, flat roof approach is not applied.\n x = 0;\n y = +append; // Hide (1) initially when creating - visibility is changed in draw_fill_extrusion as soon as neighbor tile gets loaded.\n }\n\n assert(append || metadata.vertexArrayOffset !== undefined);\n let offset = append ? this.centroidVertexArray.length : metadata.vertexArrayOffset;\n for (const polyInfo of metadata.polyCount) {\n if (append) {\n this.centroidVertexArray.resize(this.centroidVertexArray.length + polyInfo.edges * 4 + polyInfo.top);\n }\n for (let i = 0; i < polyInfo.top; i++) {\n this.centroidVertexArray.emplace(offset++, x, y);\n }\n for (let i = 0; i < polyInfo.edges * 2; i++) {\n this.centroidVertexArray.emplace(offset++, 0, y);\n this.centroidVertexArray.emplace(offset++, x, y);\n }\n }\n }\n}\n\nfunction getCosHalfAngle(na: Point, nb: Point) {\n const nm = na.add(nb)._unit();\n const cosHalfAngle = na.x * nm.x + na.y * nm.y;\n return cosHalfAngle;\n}\n\nfunction getRoundedEdgeOffset(p0: Point, p1: Point, p2: Point, edgeRadius: number) {\n const na = p1.sub(p0)._perp()._unit();\n const nb = p2.sub(p1)._perp()._unit();\n const cosHalfAngle = getCosHalfAngle(na, nb);\n return _getRoundedEdgeOffset(p0, p1, p2, cosHalfAngle, edgeRadius);\n}\n\nfunction _getRoundedEdgeOffset(p0: Point, p1: Point, p2: Point, cosHalfAngle: number, edgeRadius: number) {\n const sinHalfAngle = Math.sqrt(1 - cosHalfAngle * cosHalfAngle);\n return Math.min(p0.dist(p1) / 3, p1.dist(p2) / 3, edgeRadius * sinHalfAngle / cosHalfAngle);\n}\n\nregister(FillExtrusionBucket, 'FillExtrusionBucket', {omit: ['layers', 'features']});\nregister(PartMetadata, 'PartMetadata');\n\nexport default FillExtrusionBucket;\n\n// Edges that are outside tile bounds are defined in tile across the border.\n// Rendering them twice often results with Z-fighting.\n// In case of globe and axis aligned bounds, it is also useful to\n// discard edges that have the both endpoints outside the same bound.\nfunction isEdgeOutsideBounds(p1: Point, p2: Point, bounds: [Point, Point]) {\n return (p1.x < bounds[0].x && p2.x < bounds[0].x) ||\n (p1.x > bounds[1].x && p2.x > bounds[1].x) ||\n (p1.y < bounds[0].y && p2.y < bounds[0].y) ||\n (p1.y > bounds[1].y && p2.y > bounds[1].y);\n}\n\nfunction isEntirelyOutside(ring: Array) {\n // Discard rings with corners on border if all other vertices are outside: they get defined\n // also in the tile across the border. Eventual zero area rings at border are discarded by classifyRings\n // and there is no need to handle that case here.\n return ring.every(p => p.x <= 0) ||\n ring.every(p => p.x >= EXTENT) ||\n ring.every(p => p.y <= 0) ||\n ring.every(p => p.y >= EXTENT);\n}\n\nfunction tileToMeter(canonical: CanonicalTileID) {\n const circumferenceAtEquator = 40075017;\n const mercatorY = canonical.y / (1 << canonical.z);\n const exp = Math.exp(Math.PI * (1 - 2 * mercatorY));\n // simplify cos(2 * atan(e) - PI/2) from mercator_coordinate.js, remove trigonometrics.\n return circumferenceAtEquator * 2 * exp / (exp * exp + 1) / EXTENT / (1 << canonical.z);\n}\n\nfunction isAOConcaveAngle(p2: Point, p1: Point, p3: Point) {\n if (p2.x < 0 || p2.x >= EXTENT || p1.x < 0 || p1.x >= EXTENT || p3.x < 0 || p3.x >= EXTENT) {\n return false; // angles are not processed for edges that extend over tile borders\n }\n const a = p3.sub(p1);\n const an = a.perp();\n const b = p2.sub(p1);\n const ab = a.x * b.x + a.y * b.y;\n const cosAB = ab / Math.sqrt(((a.x * a.x + a.y * a.y) * (b.x * b.x + b.y * b.y)));\n const dotProductWithNormal = an.x * b.x + an.y * b.y;\n\n // Heuristics: don't shade concave angles above 150° (arccos(-0.866)).\n return cosAB > -0.866 && dotProductWithNormal < 0;\n}\n\nfunction encodeAOToEdgeDistance(edgeDistance: number, isConcaveCorner: boolean, edgeStart: boolean) {\n // Encode concavity and edge start/end using the least significant bits.\n // Second least significant bit 1 encodes concavity.\n // The least significant bit 1 marks the edge start, 0 for edge end.\n const encodedEdgeDistance = isConcaveCorner ? (edgeDistance | 2) : (edgeDistance & ~2);\n return edgeStart ? (encodedEdgeDistance | 1) : (encodedEdgeDistance & ~1);\n}\n\nexport function fillExtrusionHeightLift(): number {\n // A rectangle covering globe is subdivided into a grid of 32 cells\n // This information can be used to deduce a minimum lift value so that\n // fill extrusions with 0 height will never go below the ground.\n const angle = Math.PI / 32.0;\n const tanAngle = Math.tan(angle);\n const r = earthRadius;\n return r * Math.sqrt(1.0 + 2.0 * tanAngle * tanAngle) - r;\n}\n\n// Resamples fill extrusion polygons by subdividing them into 32x16 cells in mercator space.\n// The idea is to allow reprojection of large continuous planar shapes on the surface of the globe\nexport function resampleFillExtrusionPolygonsForGlobe(polygons: Point[][][], tileBounds: [Point, Point], tileID: CanonicalTileID): ClippedPolygon[] {\n const cellCount = 360.0 / 32.0;\n const tiles = 1 << tileID.z;\n const leftLng = lngFromMercatorX(tileID.x / tiles);\n const rightLng = lngFromMercatorX((tileID.x + 1) / tiles);\n const topLat = latFromMercatorY(tileID.y / tiles);\n const bottomLat = latFromMercatorY((tileID.y + 1) / tiles);\n const cellCountOnXAxis = Math.ceil((rightLng - leftLng) / cellCount);\n const cellCountOnYAxis = Math.ceil((topLat - bottomLat) / cellCount);\n\n const splitFn = (axis: number, min: number, max: number) => {\n if (axis === 0) {\n return 0.5 * (min + max);\n } else {\n const maxLat = latFromMercatorY((tileID.y + min / EXTENT) / tiles);\n const minLat = latFromMercatorY((tileID.y + max / EXTENT) / tiles);\n const midLat = 0.5 * (minLat + maxLat);\n return (mercatorYfromLat(midLat) * tiles - tileID.y) * EXTENT;\n }\n };\n\n return subdividePolygons(polygons, tileBounds, cellCountOnXAxis, cellCountOnYAxis, 1.0, splitFn);\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"fill-extrusion-edge-radius\": DataConstantProperty,\n|};\n\nconst layout: Properties = new Properties({\n \"fill-extrusion-edge-radius\": new DataConstantProperty(styleSpec[\"layout_fill-extrusion\"][\"fill-extrusion-edge-radius\"]),\n});\n\nexport type PaintProps = {|\n \"fill-extrusion-opacity\": DataConstantProperty,\n \"fill-extrusion-color\": DataDrivenProperty,\n \"fill-extrusion-translate\": DataConstantProperty<[number, number]>,\n \"fill-extrusion-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"fill-extrusion-pattern\": DataDrivenProperty,\n \"fill-extrusion-height\": DataDrivenProperty,\n \"fill-extrusion-base\": DataDrivenProperty,\n \"fill-extrusion-vertical-gradient\": DataConstantProperty,\n \"fill-extrusion-ambient-occlusion-intensity\": DataConstantProperty,\n \"fill-extrusion-ambient-occlusion-radius\": DataConstantProperty,\n \"fill-extrusion-rounded-roof\": DataConstantProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"fill-extrusion-opacity\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\n \"fill-extrusion-color\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\n \"fill-extrusion-translate\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\n \"fill-extrusion-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\n \"fill-extrusion-pattern\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\n \"fill-extrusion-height\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\n \"fill-extrusion-base\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\n \"fill-extrusion-vertical-gradient\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"]),\n \"fill-extrusion-ambient-occlusion-intensity\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-ambient-occlusion-intensity\"]),\n \"fill-extrusion-ambient-occlusion-radius\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-ambient-occlusion-radius\"]),\n \"fill-extrusion-rounded-roof\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-rounded-roof\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties, layout: Properties\n}>);\n","export { getURL, getTileBBox, getMercCoords };\n\n\n/**\n * getURL\n *\n * @param {String} baseUrl Base url of the WMS server\n * @param {String} layer Layer name\n * @param {Number} x Tile coordinate x\n * @param {Number} y Tile coordinate y\n * @param {Number} z Tile zoom\n * @param {Object} [options]\n * @param {String} [options.format='image/png']\n * @param {String} [options.service='WMS']\n * @param {String} [options.version='1.1.1']\n * @param {String} [options.request='GetMap']\n * @param {String} [options.srs='EPSG:3857']\n * @param {Number} [options.width='256']\n * @param {Number} [options.height='256']\n * @returns {String} url\n * @example\n * var baseUrl = 'http://geodata.state.nj.us/imagerywms/Natural2015';\n * var layer = 'Natural2015';\n * var url = whoots.getURL(baseUrl, layer, 154308, 197167, 19);\n */\nfunction getURL(baseUrl, layer, x, y, z, options) {\n options = options || {};\n\n var url = baseUrl + '?' + [\n 'bbox=' + getTileBBox(x, y, z),\n 'format=' + (options.format || 'image/png'),\n 'service=' + (options.service || 'WMS'),\n 'version=' + (options.version || '1.1.1'),\n 'request=' + (options.request || 'GetMap'),\n 'srs=' + (options.srs || 'EPSG:3857'),\n 'width=' + (options.width || 256),\n 'height=' + (options.height || 256),\n 'layers=' + layer\n ].join('&');\n\n return url;\n}\n\n\n/**\n * getTileBBox\n *\n * @param {Number} x Tile coordinate x\n * @param {Number} y Tile coordinate y\n * @param {Number} z Tile zoom\n * @returns {String} String of the bounding box\n */\nfunction getTileBBox(x, y, z) {\n // for Google/OSM tile scheme we need to alter the y\n y = (Math.pow(2, z) - y - 1);\n\n var min = getMercCoords(x * 256, y * 256, z),\n max = getMercCoords((x + 1) * 256, (y + 1) * 256, z);\n\n return min[0] + ',' + min[1] + ',' + max[0] + ',' + max[1];\n}\n\n\n/**\n * getMercCoords\n *\n * @param {Number} x Pixel coordinate x\n * @param {Number} y Pixel coordinate y\n * @param {Number} z Tile zoom\n * @returns {Array} [x, y]\n */\nfunction getMercCoords(x, y, z) {\n var resolution = (2 * Math.PI * 6378137 / 256) / Math.pow(2, z),\n merc_x = (x * resolution - 2 * Math.PI * 6378137 / 2.0),\n merc_y = (y * resolution - 2 * Math.PI * 6378137 / 2.0);\n\n return [merc_x, merc_y];\n}\n","// @flow\n\nimport {getTileBBox} from '@mapbox/whoots-js';\nimport assert from 'assert';\nimport {register} from '../util/web_worker_transfer.js';\n\nexport class CanonicalTileID {\n z: number;\n x: number;\n y: number;\n key: number;\n\n constructor(z: number, x: number, y: number) {\n assert(z >= 0 && z <= 25);\n assert(x >= 0 && x < Math.pow(2, z));\n assert(y >= 0 && y < Math.pow(2, z));\n this.z = z;\n this.x = x;\n this.y = y;\n this.key = calculateKey(0, z, z, x, y);\n }\n\n equals(id: CanonicalTileID): boolean {\n return this.z === id.z && this.x === id.x && this.y === id.y;\n }\n\n // given a list of urls, choose a url template and return a tile URL\n url(urls: Array, scheme: ?string): string {\n const bbox = getTileBBox(this.x, this.y, this.z);\n const quadkey = getQuadkey(this.z, this.x, this.y);\n\n return urls[(this.x + this.y) % urls.length]\n .replace('{prefix}', (this.x % 16).toString(16) + (this.y % 16).toString(16))\n .replace(/{z}/g, String(this.z))\n .replace(/{x}/g, String(this.x))\n .replace(/{y}/g, String(scheme === 'tms' ? (Math.pow(2, this.z) - this.y - 1) : this.y))\n .replace('{quadkey}', quadkey)\n .replace('{bbox-epsg-3857}', bbox);\n }\n\n toString(): string {\n return `${this.z}/${this.x}/${this.y}`;\n }\n}\n\nexport class UnwrappedTileID {\n wrap: number;\n canonical: CanonicalTileID;\n key: number;\n\n constructor(wrap: number, canonical: CanonicalTileID) {\n this.wrap = wrap;\n this.canonical = canonical;\n this.key = calculateKey(wrap, canonical.z, canonical.z, canonical.x, canonical.y);\n }\n}\n\nexport class OverscaledTileID {\n overscaledZ: number;\n wrap: number;\n canonical: CanonicalTileID;\n key: number;\n projMatrix: Float32Array;\n\n constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number) {\n assert(overscaledZ >= z);\n this.overscaledZ = overscaledZ;\n this.wrap = wrap;\n this.canonical = new CanonicalTileID(z, +x, +y);\n this.key = wrap === 0 && overscaledZ === z ? this.canonical.key : calculateKey(wrap, overscaledZ, z, x, y);\n }\n\n equals(id: OverscaledTileID): boolean {\n return this.overscaledZ === id.overscaledZ && this.wrap === id.wrap && this.canonical.equals(id.canonical);\n }\n\n scaledTo(targetZ: number): OverscaledTileID {\n assert(targetZ <= this.overscaledZ);\n const zDifference = this.canonical.z - targetZ;\n if (targetZ > this.canonical.z) {\n return new OverscaledTileID(targetZ, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y);\n } else {\n return new OverscaledTileID(targetZ, this.wrap, targetZ, this.canonical.x >> zDifference, this.canonical.y >> zDifference);\n }\n }\n\n /*\n * calculateScaledKey is an optimization:\n * when withWrap == true, implements the same as this.scaledTo(z).key,\n * when withWrap == false, implements the same as this.scaledTo(z).wrapped().key.\n */\n calculateScaledKey(targetZ: number, withWrap: boolean = true): number {\n if (this.overscaledZ === targetZ && withWrap) return this.key;\n if (targetZ > this.canonical.z) {\n return calculateKey(this.wrap * +withWrap, targetZ, this.canonical.z, this.canonical.x, this.canonical.y);\n } else {\n const zDifference = this.canonical.z - targetZ;\n return calculateKey(this.wrap * +withWrap, targetZ, targetZ, this.canonical.x >> zDifference, this.canonical.y >> zDifference);\n }\n }\n\n isChildOf(parent: OverscaledTileID): boolean {\n if (parent.wrap !== this.wrap) {\n // We can't be a child if we're in a different world copy\n return false;\n }\n const zDifference = this.canonical.z - parent.canonical.z;\n // We're first testing for z == 0, to avoid a 32 bit shift, which is undefined.\n return parent.overscaledZ === 0 || (\n parent.overscaledZ < this.overscaledZ &&\n parent.canonical.x === (this.canonical.x >> zDifference) &&\n parent.canonical.y === (this.canonical.y >> zDifference));\n }\n\n children(sourceMaxZoom: number): Array {\n if (this.overscaledZ >= sourceMaxZoom) {\n // return a single tile coord representing a an overscaled tile\n return [new OverscaledTileID(this.overscaledZ + 1, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y)];\n }\n\n const z = this.canonical.z + 1;\n const x = this.canonical.x * 2;\n const y = this.canonical.y * 2;\n return [\n new OverscaledTileID(z, this.wrap, z, x, y),\n new OverscaledTileID(z, this.wrap, z, x + 1, y),\n new OverscaledTileID(z, this.wrap, z, x, y + 1),\n new OverscaledTileID(z, this.wrap, z, x + 1, y + 1)\n ];\n }\n\n isLessThan(rhs: OverscaledTileID): boolean {\n if (this.wrap < rhs.wrap) return true;\n if (this.wrap > rhs.wrap) return false;\n\n if (this.overscaledZ < rhs.overscaledZ) return true;\n if (this.overscaledZ > rhs.overscaledZ) return false;\n\n if (this.canonical.x < rhs.canonical.x) return true;\n if (this.canonical.x > rhs.canonical.x) return false;\n\n if (this.canonical.y < rhs.canonical.y) return true;\n return false;\n }\n\n wrapped(): OverscaledTileID {\n return new OverscaledTileID(this.overscaledZ, 0, this.canonical.z, this.canonical.x, this.canonical.y);\n }\n\n unwrapTo(wrap: number): OverscaledTileID {\n return new OverscaledTileID(this.overscaledZ, wrap, this.canonical.z, this.canonical.x, this.canonical.y);\n }\n\n overscaleFactor(): number {\n return Math.pow(2, this.overscaledZ - this.canonical.z);\n }\n\n toUnwrapped(): UnwrappedTileID {\n return new UnwrappedTileID(this.wrap, this.canonical);\n }\n\n toString(): string {\n return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`;\n }\n}\n\nfunction calculateKey(wrap: number, overscaledZ: number, z: number, x: number, y: number): number {\n // only use 22 bits for x & y so that the key fits into MAX_SAFE_INTEGER\n const dim = 1 << Math.min(z, 22);\n let xy = dim * (y % dim) + (x % dim);\n\n // zigzag-encode wrap if we have the room for it\n if (wrap && z < 22) {\n const bitsAvailable = 2 * (22 - z);\n xy += dim * dim * ((wrap < 0 ? -2 * wrap - 1 : 2 * wrap) % (1 << bitsAvailable));\n }\n\n // encode z into 5 bits (24 max) and overscaledZ into 4 bits (10 max)\n const key = ((xy * 32) + z) * 16 + (overscaledZ - z);\n assert(key >= 0 && key <= Number.MAX_SAFE_INTEGER);\n\n return key;\n}\n\nfunction getQuadkey(z: number, x: number, y: number) {\n let quadkey = '', mask;\n for (let i = z; i > 0; i--) {\n mask = 1 << (i - 1);\n quadkey += ((x & mask ? 1 : 0) + (y & mask ? 2 : 0));\n }\n return quadkey;\n}\n\nregister(CanonicalTileID, 'CanonicalTileID');\nregister(OverscaledTileID, 'OverscaledTileID', {omit: ['projMatrix']});\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\nimport FillExtrusionBucket, {ELEVATION_SCALE, ELEVATION_OFFSET, fillExtrusionHeightLift, resampleFillExtrusionPolygonsForGlobe} from '../../data/bucket/fill_extrusion_bucket.js';\nimport {polygonIntersectsPolygon, polygonIntersectsMultiPolygon} from '../../util/intersection_tests.js';\nimport {translateDistance, tilespaceTranslate} from '../query_utils.js';\nimport properties from './fill_extrusion_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\nimport Point from '@mapbox/point-geometry';\nimport ProgramConfiguration from '../../data/program_configuration.js';\nimport {vec3, vec4} from 'gl-matrix';\nimport EXTENT from '../../data/extent.js';\nimport {CanonicalTileID} from '../../source/tile_id.js';\n\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type {BucketParameters} from '../../data/bucket.js';\nimport type {PaintProps, LayoutProps} from './fill_extrusion_style_layer_properties.js';\nimport type Transform from '../../geo/transform.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {DEMSampler} from '../../terrain/elevation.js';\nimport type {Vec2, Vec4} from 'gl-matrix';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\nclass Point3D extends Point {\n z: number;\n\n constructor(x: number, y: number, z: number) {\n super(x, y);\n this.z = z;\n }\n}\n\nclass FillExtrusionStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n layout: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n createBucket(parameters: BucketParameters): FillExtrusionBucket {\n return new FillExtrusionBucket(parameters);\n }\n\n // $FlowFixMe[method-unbinding]\n queryRadius(): number {\n return translateDistance(this.paint.get('fill-extrusion-translate'));\n }\n\n is3D(): boolean {\n return true;\n }\n\n getProgramIds(): string[] {\n const patternProperty = this.paint.get('fill-extrusion-pattern');\n const image = patternProperty.constantOr((1: any));\n return [image ? 'fillExtrusionPattern' : 'fillExtrusion'];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n\n // $FlowFixMe[method-unbinding]\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: IVectorTileFeature,\n featureState: FeatureState,\n geometry: Array>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler,\n layoutVertexArrayOffset: number): boolean | number {\n\n const translation = tilespaceTranslate(this.paint.get('fill-extrusion-translate'),\n this.paint.get('fill-extrusion-translate-anchor'),\n transform.angle,\n queryGeometry.pixelToTileUnitsFactor);\n const height = this.paint.get('fill-extrusion-height').evaluate(feature, featureState);\n const base = this.paint.get('fill-extrusion-base').evaluate(feature, featureState);\n\n const centroid = [0, 0];\n const terrainVisible = elevationHelper && transform.elevation;\n const exaggeration = transform.elevation ? transform.elevation.exaggeration() : 1;\n const bucket = queryGeometry.tile.getBucket(this);\n if (terrainVisible && bucket instanceof FillExtrusionBucket) {\n const centroidVertexArray = bucket.centroidVertexArray;\n\n // See FillExtrusionBucket#encodeCentroid(), centroid is inserted at vertexOffset + 1\n const centroidOffset = layoutVertexArrayOffset + 1;\n if (centroidOffset < centroidVertexArray.length) {\n centroid[0] = centroidVertexArray.geta_centroid_pos0(centroidOffset);\n centroid[1] = centroidVertexArray.geta_centroid_pos1(centroidOffset);\n }\n }\n\n // Early exit if fill extrusion is still hidden while waiting for backfill\n const isHidden = centroid[0] === 0 && centroid[1] === 1;\n if (isHidden) return false;\n\n if (transform.projection.name === 'globe') {\n // Fill extrusion geometry has to be resampled so that large planar polygons\n // can be rendered on the curved surface\n const bounds = [new Point(0, 0), new Point(EXTENT, EXTENT)];\n const resampledGeometry = resampleFillExtrusionPolygonsForGlobe([geometry], bounds, queryGeometry.tileID.canonical);\n geometry = resampledGeometry.map(clipped => clipped.polygon).flat();\n }\n\n const demSampler = terrainVisible ? elevationHelper : null;\n const [projectedBase, projectedTop] = projectExtrusion(transform, geometry, base, height, translation, pixelPosMatrix, demSampler, centroid, exaggeration, transform.center.lat, queryGeometry.tileID.canonical);\n\n const screenQuery = queryGeometry.queryGeometry;\n const projectedQueryGeometry = screenQuery.isPointQuery() ? screenQuery.screenBounds : screenQuery.screenGeometry;\n return checkIntersection(projectedBase, projectedTop, projectedQueryGeometry);\n }\n}\n\nfunction dot(a: Point, b: Point) {\n return a.x * b.x + a.y * b.y;\n}\n\nexport function getIntersectionDistance(projectedQueryGeometry: Array, projectedFace: Array): number {\n\n if (projectedQueryGeometry.length === 1) {\n // For point queries calculate the z at which the point intersects the face\n // using barycentric coordinates.\n\n // Find the barycentric coordinates of the projected point within the first\n // triangle of the face, using only the xy plane. It doesn't matter if the\n // point is outside the first triangle because all the triangles in the face\n // are in the same plane.\n //\n // Check whether points are coincident and use other points if they are.\n let i = 0;\n const a = projectedFace[i++];\n let b;\n while (!b || a.equals(b)) {\n b = projectedFace[i++];\n if (!b) return Infinity;\n }\n\n // Loop until point `c` is not colinear with points `a` and `b`.\n for (; i < projectedFace.length; i++) {\n const c = projectedFace[i];\n\n const p = projectedQueryGeometry[0];\n\n const ab = b.sub(a);\n const ac = c.sub(a);\n const ap = p.sub(a);\n\n const dotABAB = dot(ab, ab);\n const dotABAC = dot(ab, ac);\n const dotACAC = dot(ac, ac);\n const dotAPAB = dot(ap, ab);\n const dotAPAC = dot(ap, ac);\n const denom = dotABAB * dotACAC - dotABAC * dotABAC;\n\n const v = (dotACAC * dotAPAB - dotABAC * dotAPAC) / denom;\n const w = (dotABAB * dotAPAC - dotABAC * dotAPAB) / denom;\n const u = 1 - v - w;\n\n // Use the barycentric weighting along with the original triangle z coordinates to get the point of intersection.\n const distance = a.z * u + b.z * v + c.z * w;\n\n if (isFinite(distance)) return distance;\n }\n\n return Infinity;\n\n } else {\n // The counts as closest is less clear when the query is a box. This\n // returns the distance to the nearest point on the face, whether it is\n // within the query or not. It could be more correct to return the\n // distance to the closest point within the query box but this would be\n // more complicated and expensive to calculate with little benefit.\n let closestDistance = Infinity;\n for (const p of projectedFace) {\n closestDistance = Math.min(closestDistance, p.z);\n }\n return closestDistance;\n }\n}\n\nfunction checkIntersection(projectedBase: Array>, projectedTop: Array>, projectedQueryGeometry: Array) {\n let closestDistance = Infinity;\n\n if (polygonIntersectsMultiPolygon(projectedQueryGeometry, projectedTop)) {\n closestDistance = getIntersectionDistance(projectedQueryGeometry, projectedTop[0]);\n }\n\n for (let r = 0; r < projectedTop.length; r++) {\n const ringTop = projectedTop[r];\n const ringBase = projectedBase[r];\n for (let p = 0; p < ringTop.length - 1; p++) {\n const topA = ringTop[p];\n const topB = ringTop[p + 1];\n const baseA = ringBase[p];\n const baseB = ringBase[p + 1];\n const face = [topA, topB, baseB, baseA, topA];\n if (polygonIntersectsPolygon(projectedQueryGeometry, face)) {\n closestDistance = Math.min(closestDistance, getIntersectionDistance(projectedQueryGeometry, face));\n }\n }\n }\n\n return closestDistance === Infinity ? false : closestDistance;\n}\n\nfunction projectExtrusion(tr: Transform, geometry: Array>, zBase: number, zTop: number, translation: Point, m: Float32Array, demSampler: ?DEMSampler, centroid: Vec2, exaggeration: number, lat: number, tileID: CanonicalTileID) {\n if (tr.projection.name === 'globe') {\n return projectExtrusionGlobe(tr, geometry, zBase, zTop, translation, m, demSampler, centroid, exaggeration, lat, tileID);\n } else {\n if (demSampler) {\n return projectExtrusion3D(geometry, zBase, zTop, translation, m, demSampler, centroid, exaggeration, lat);\n } else {\n return projectExtrusion2D(geometry, zBase, zTop, translation, m);\n }\n }\n}\n\nfunction projectExtrusionGlobe(tr: Transform, geometry: Array>, zBase: number, zTop: number, translation: Point, m: Float32Array, demSampler: ?DEMSampler, centroid: Vec2, exaggeration: number, lat: number, tileID: CanonicalTileID) {\n const projectedBase = [];\n const projectedTop = [];\n const elevationScale = tr.projection.upVectorScale(tileID, tr.center.lat, tr.worldSize).metersToTile;\n const basePoint = [0, 0, 0, 1];\n const topPoint = [0, 0, 0, 1];\n\n const setPoint = (point: Array, x: number, y: number, z: number) => {\n point[0] = x;\n point[1] = y;\n point[2] = z;\n point[3] = 1;\n };\n\n // Fixed \"lift\" value is added to height so that 0-height fill extrusions wont clip with globe's surface\n const lift = fillExtrusionHeightLift();\n\n if (zBase > 0) {\n zBase += lift;\n }\n zTop += lift;\n\n for (const r of geometry) {\n const ringBase = [];\n const ringTop = [];\n for (const p of r) {\n const x = p.x + translation.x;\n const y = p.y + translation.y;\n\n // Reproject tile coordinate into ecef and apply elevation to correct direction\n const reproj = tr.projection.projectTilePoint(x, y, tileID);\n const dir = tr.projection.upVector(tileID, p.x, p.y);\n\n let zBasePoint = zBase;\n let zTopPoint = zTop;\n\n if (demSampler) {\n const offset = getTerrainHeightOffset(x, y, zBase, zTop, demSampler, centroid, exaggeration, lat);\n\n zBasePoint += offset.base;\n zTopPoint += offset.top;\n }\n\n if (zBase !== 0) {\n setPoint(\n basePoint,\n reproj.x + dir[0] * elevationScale * zBasePoint,\n reproj.y + dir[1] * elevationScale * zBasePoint,\n reproj.z + dir[2] * elevationScale * zBasePoint);\n } else {\n setPoint(basePoint, reproj.x, reproj.y, reproj.z);\n }\n\n setPoint(\n topPoint,\n reproj.x + dir[0] * elevationScale * zTopPoint,\n reproj.y + dir[1] * elevationScale * zTopPoint,\n reproj.z + dir[2] * elevationScale * zTopPoint);\n\n vec3.transformMat4(basePoint, basePoint, m);\n vec3.transformMat4(topPoint, topPoint, m);\n\n ringBase.push(new Point3D(basePoint[0], basePoint[1], basePoint[2]));\n ringTop.push(new Point3D(topPoint[0], topPoint[1], topPoint[2]));\n }\n projectedBase.push(ringBase);\n projectedTop.push(ringTop);\n }\n\n return [projectedBase, projectedTop];\n}\n\n/*\n * Project the geometry using matrix `m`. This is essentially doing\n * `vec4.transformMat4([], [p.x, p.y, z, 1], m)` but the multiplication\n * is inlined so that parts of the projection that are the same across\n * different points can only be done once. This produced a measurable\n * performance improvement.\n */\nfunction projectExtrusion2D(geometry: Array>, zBase: number, zTop: number, translation: Point, m: Float32Array) {\n const projectedBase = [];\n const projectedTop = [];\n\n const baseXZ = m[8] * zBase;\n const baseYZ = m[9] * zBase;\n const baseZZ = m[10] * zBase;\n const baseWZ = m[11] * zBase;\n const topXZ = m[8] * zTop;\n const topYZ = m[9] * zTop;\n const topZZ = m[10] * zTop;\n const topWZ = m[11] * zTop;\n\n for (const r of geometry) {\n const ringBase = [];\n const ringTop = [];\n for (const p of r) {\n const x = p.x + translation.x;\n const y = p.y + translation.y;\n\n const sX = m[0] * x + m[4] * y + m[12];\n const sY = m[1] * x + m[5] * y + m[13];\n const sZ = m[2] * x + m[6] * y + m[14];\n const sW = m[3] * x + m[7] * y + m[15];\n\n const baseX = sX + baseXZ;\n const baseY = sY + baseYZ;\n const baseZ = sZ + baseZZ;\n const baseW = Math.max(sW + baseWZ, 0.00001);\n\n const topX = sX + topXZ;\n const topY = sY + topYZ;\n const topZ = sZ + topZZ;\n const topW = Math.max(sW + topWZ, 0.00001);\n\n ringBase.push(new Point3D(baseX / baseW, baseY / baseW, baseZ / baseW));\n ringTop.push(new Point3D(topX / topW, topY / topW, topZ / topW));\n }\n projectedBase.push(ringBase);\n projectedTop.push(ringTop);\n }\n return [projectedBase, projectedTop];\n}\n\n/*\n * Projects a fill extrusion vertices to screen while accounting for terrain.\n * This and its dependent functions are ported directly from `fill_extrusion.vertex.glsl`\n * with a few co-ordinate space differences.\n *\n * - Matrix `m` projects to screen-pixel space instead of to gl-coordinates (NDC)\n * - Texture querying is performed in texture pixel coordinates instead of normalized uv coordinates.\n * - Height offset calculation for fill-extrusion-base is offset with -1 instead of -5 to prevent underground picking.\n */\nfunction projectExtrusion3D(geometry: Array>, zBase: number, zTop: number, translation: Point, m: Float32Array, demSampler: DEMSampler, centroid: Vec2, exaggeration: number, lat: number) {\n const projectedBase = [];\n const projectedTop = [];\n const v = [0, 0, 0, 1];\n\n for (const r of geometry) {\n const ringBase = [];\n const ringTop = [];\n for (const p of r) {\n const x = p.x + translation.x;\n const y = p.y + translation.y;\n const heightOffset = getTerrainHeightOffset(x, y, zBase, zTop, demSampler, centroid, exaggeration, lat);\n\n v[0] = x;\n v[1] = y;\n v[2] = heightOffset.base;\n v[3] = 1;\n vec4.transformMat4(v, v, m);\n v[3] = Math.max(v[3], 0.00001);\n const base = new Point3D(v[0] / v[3], v[1] / v[3], v[2] / v[3]);\n\n v[0] = x;\n v[1] = y;\n v[2] = heightOffset.top;\n v[3] = 1;\n vec4.transformMat4(v, v, m);\n v[3] = Math.max(v[3], 0.00001);\n const top = new Point3D(v[0] / v[3], v[1] / v[3], v[2] / v[3]);\n\n ringBase.push(base);\n ringTop.push(top);\n }\n projectedBase.push(ringBase);\n projectedTop.push(ringTop);\n }\n return [projectedBase, projectedTop];\n}\n\nfunction getTerrainHeightOffset(x: number, y: number, zBase: number, zTop: number, demSampler: DEMSampler, centroid: Vec2, exaggeration: number, lat: number): { base: number, top: number} {\n const ele = exaggeration * demSampler.getElevationAt(x, y, true, true);\n const flatRoof = centroid[0] !== 0;\n const centroidElevation = flatRoof ? centroid[1] === 0 ? exaggeration * elevationFromUint16(centroid[0]) : exaggeration * flatElevation(demSampler, centroid, lat) : ele;\n return {\n base: ele + (zBase === 0) ? -1 : zBase, // Use -1 instead of -5 in shader to prevent picking underground\n top: flatRoof ? Math.max(centroidElevation + zTop, ele + zBase + 2) : ele + zTop\n };\n}\n\n// Elevation is encoded into unit16 in fill_extrusion_bucket.js FillExtrusionBucket#encodeCentroid\nfunction elevationFromUint16(n: number): number {\n return n / ELEVATION_SCALE - ELEVATION_OFFSET;\n}\n\n// Equivalent GPU side function is in _prelude_terrain.vertex.glsl\nfunction flatElevation(demSampler: DEMSampler, centroid: Vec2, lat: number): number {\n // Span and pos are packed two 16 bit uint16 values in fill_extrusion_bucket.js FillExtrusionBucket#encodeCentroid\n // pos is encoded by << by 3 bits thus dividing by 8 performs equivalent of right shifting it back.\n const posX = Math.floor(centroid[0] / 8);\n const posY = Math.floor(centroid[1] / 8);\n\n // Span is stored in the lower three bits in multiples of 10\n const spanX = 10 * (centroid[0] - posX * 8);\n const spanY = 10 * (centroid[1] - posY * 8);\n\n // Get height at centroid\n const z = demSampler.getElevationAt(posX, posY, true, true);\n const meterToDEM = demSampler.getMeterToDEM(lat);\n\n const wX = Math.floor(0.5 * (spanX * meterToDEM - 1));\n const wY = Math.floor(0.5 * (spanY * meterToDEM - 1));\n\n const posPx = demSampler.tileCoordToPixel(posX, posY);\n\n const offsetX = 2 * wX + 1;\n const offsetY = 2 * wY + 1;\n const corners = fourSample(demSampler, posPx.x - wX, posPx.y - wY, offsetX, offsetY);\n\n const diffX = Math.abs(corners[0] - corners[1]);\n const diffY = Math.abs(corners[2] - corners[3]);\n const diffZ = Math.abs(corners[0] - corners[2]);\n const diffW = Math.abs(corners[1] - corners[3]);\n\n const diffSumX = diffX + diffY;\n const diffSumY = diffZ + diffW;\n\n const slopeX = Math.min(0.25, meterToDEM * 0.5 * diffSumX / offsetX);\n const slopeY = Math.min(0.25, meterToDEM * 0.5 * diffSumY / offsetY);\n\n return z + Math.max(slopeX * spanX, slopeY * spanY);\n}\n\nfunction fourSample(demSampler: DEMSampler, posX: number, posY: number, offsetX: number, offsetY: number): Vec4 {\n return [\n demSampler.getElevationAtPixel(posX, posY, true),\n demSampler.getElevationAtPixel(posX + offsetY, posY, true),\n demSampler.getElevationAtPixel(posX, posY + offsetY, true),\n demSampler.getElevationAtPixel(posX + offsetX, posY + offsetY, true)\n ];\n}\n\nexport default FillExtrusionStyleLayer;\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst lineLayoutAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_normal', components: 2, type: 'Int16'},\n {name: 'a_data', components: 4, type: 'Uint8'},\n {name: 'a_linesofar', components: 1, type: 'Float32'}\n], 4);\n\nexport default lineLayoutAttributes;\nexport const {members, size, alignment} = lineLayoutAttributes;\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst lineLayoutAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_packed', components: 4, type: 'Float32'}\n]);\n\nexport default lineLayoutAttributesExt;\nexport const {members, size, alignment} = lineLayoutAttributesExt;\n","// @flow\n\nimport {LineLayoutArray, LineExtLayoutArray} from '../array_types.js';\n\nimport {members as layoutAttributes} from './line_attributes.js';\nimport {members as layoutAttributesExt} from './line_attributes_ext.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray} from '../index_array_type.js';\nimport EXTENT from '../extent.js';\nimport {VectorTileFeature} from '@mapbox/vector-tile';\nconst vectorTileFeatureTypes = VectorTileFeature.types;\nimport {register} from '../../util/web_worker_transfer.js';\nimport {hasPattern, addPatternDependencies} from './pattern_bucket_features.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type LineStyleLayer from '../../style/style_layer/line_style_layer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {Segment} from '../segment.js';\nimport type {RGBAImage, SpritePositions} from '../../util/image.js';\nimport type Context from '../../gl/context.js';\nimport type Texture from '../../render/texture.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type LineAtlas from '../../render/line_atlas.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nimport type {IVectorTileLayer} from '@mapbox/vector-tile';\n\n// NOTE ON EXTRUDE SCALE:\n// scale the extrusion vector so that the normal length is this value.\n// contains the \"texture\" normals (-1..1). this is distinct from the extrude\n// normals for line joins, because the x-value remains 0 for the texture\n// normal array, while the extrude normal actually moves the vertex to create\n// the acute/bevelled line join.\nconst EXTRUDE_SCALE = 63;\n\n/*\n * Sharp corners cause dashed lines to tilt because the distance along the line\n * is the same at both the inner and outer corners. To improve the appearance of\n * dashed lines we add extra points near sharp corners so that a smaller part\n * of the line is tilted.\n *\n * COS_HALF_SHARP_CORNER controls how sharp a corner has to be for us to add an\n * extra vertex. The default is 75 degrees.\n *\n * The newly created vertices are placed SHARP_CORNER_OFFSET pixels from the corner.\n */\nconst COS_HALF_SHARP_CORNER = Math.cos(75 / 2 * (Math.PI / 180));\nconst SHARP_CORNER_OFFSET = 15;\n\n// Angle per triangle for approximating round line joins.\nconst DEG_PER_TRIANGLE = 20;\n\ntype LineClips = {\n start: number;\n end: number;\n}\n\ntype GradientTexture = {\n texture: Texture;\n gradient: ?RGBAImage;\n version: number;\n}\n\n/**\n * @private\n */\nclass LineBucket implements Bucket {\n distance: number;\n totalDistance: number;\n maxLineLength: number;\n scaledDistance: number;\n lineSoFar: number;\n lineClips: ?LineClips;\n\n e1: number;\n e2: number;\n\n index: number;\n zoom: number;\n overscaling: number;\n layers: Array;\n layerIds: Array;\n gradients: {[string]: GradientTexture};\n stateDependentLayers: Array;\n stateDependentLayerIds: Array;\n patternFeatures: Array;\n lineClipsArray: Array;\n\n layoutVertexArray: LineLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n layoutVertexArray2: LineExtLayoutArray;\n layoutVertexBuffer2: VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet;\n segments: SegmentVector;\n uploaded: boolean;\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters) {\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.projection = options.projection;\n this.hasPattern = false;\n this.patternFeatures = [];\n this.lineClipsArray = [];\n this.gradients = {};\n this.layers.forEach(layer => {\n this.gradients[layer.id] = {};\n });\n\n this.layoutVertexArray = new LineLayoutArray();\n this.layoutVertexArray2 = new LineExtLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.segments = new SegmentVector();\n this.maxLineLength = 0;\n\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n }\n\n populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n this.hasPattern = hasPattern('line', this.layers, options);\n const lineSortKey = this.layers[0].layout.get('line-sort-key');\n const bucketFeatures = [];\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n // $FlowFixMe[method-unbinding]\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const sortKey = lineSortKey ?\n lineSortKey.evaluate(evaluationFeature, {}, canonical) :\n undefined;\n\n const bucketFeature: BucketFeature = {\n id,\n properties: feature.properties,\n type: feature.type,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n patterns: {},\n sortKey\n };\n\n bucketFeatures.push(bucketFeature);\n }\n\n if (lineSortKey) {\n bucketFeatures.sort((a, b) => {\n // a.sortKey is always a number when in use\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n\n const {lineAtlas, featureIndex} = options;\n const hasFeatureDashes = this.addConstantDashes(lineAtlas);\n\n for (const bucketFeature of bucketFeatures) {\n const {geometry, index, sourceLayerIndex} = bucketFeature;\n\n if (hasFeatureDashes) {\n this.addFeatureDashes(bucketFeature, lineAtlas);\n }\n\n if (this.hasPattern) {\n const patternBucketFeature = addPatternDependencies('line', this.layers, bucketFeature, this.zoom, options);\n // pattern features are added only once the pattern is loaded into the image atlas\n // so are stored during populate until later updated with positions by tile worker in addFeatures\n this.patternFeatures.push(patternBucketFeature);\n\n } else {\n this.addFeature(bucketFeature, geometry, index, canonical, lineAtlas.positions, options.availableImages);\n }\n\n const feature = features[index].feature;\n featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);\n }\n }\n\n addConstantDashes(lineAtlas: LineAtlas): boolean {\n let hasFeatureDashes = false;\n\n for (const layer of this.layers) {\n const dashPropertyValue = layer.paint.get('line-dasharray').value;\n const capPropertyValue = layer.layout.get('line-cap').value;\n\n if (dashPropertyValue.kind !== 'constant' || capPropertyValue.kind !== 'constant') {\n hasFeatureDashes = true;\n\n } else {\n const constCap = capPropertyValue.value;\n const constDash = dashPropertyValue.value;\n if (!constDash) continue;\n lineAtlas.addDash(constDash, constCap);\n }\n }\n\n return hasFeatureDashes;\n }\n\n addFeatureDashes(feature: BucketFeature, lineAtlas: LineAtlas) {\n\n const zoom = this.zoom;\n\n for (const layer of this.layers) {\n const dashPropertyValue = layer.paint.get('line-dasharray').value;\n const capPropertyValue = layer.layout.get('line-cap').value;\n\n if (dashPropertyValue.kind === 'constant' && capPropertyValue.kind === 'constant') continue;\n\n let dashArray, cap;\n\n if (dashPropertyValue.kind === 'constant') {\n dashArray = dashPropertyValue.value;\n if (!dashArray) continue;\n\n } else {\n dashArray = dashPropertyValue.evaluate({zoom}, feature);\n }\n\n if (capPropertyValue.kind === 'constant') {\n cap = capPropertyValue.value;\n\n } else {\n cap = capPropertyValue.evaluate({zoom}, feature);\n }\n\n lineAtlas.addDash(dashArray, cap);\n\n // save positions for paint array\n feature.patterns[layer.id] = lineAtlas.getKey(dashArray, cap);\n }\n\n }\n\n update(states: FeatureStates, vtLayer: IVectorTileLayer, availableImages: Array, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array, _: TileTransform) {\n for (const feature of this.patternFeatures) {\n this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions, availableImages);\n }\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded) {\n if (this.layoutVertexArray2.length !== 0) {\n this.layoutVertexBuffer2 = context.createVertexBuffer(this.layoutVertexArray2, layoutAttributesExt);\n }\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n }\n\n lineFeatureClips(feature: BucketFeature): ?LineClips {\n if (!!feature.properties && feature.properties.hasOwnProperty('mapbox_clip_start') && feature.properties.hasOwnProperty('mapbox_clip_end')) {\n const start = +feature.properties['mapbox_clip_start'];\n const end = +feature.properties['mapbox_clip_end'];\n return {start, end};\n }\n }\n\n addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array) {\n const layout = this.layers[0].layout;\n const join = layout.get('line-join').evaluate(feature, {});\n const cap = layout.get('line-cap').evaluate(feature, {});\n const miterLimit = layout.get('line-miter-limit');\n const roundLimit = layout.get('line-round-limit');\n this.lineClips = this.lineFeatureClips(feature);\n\n for (const line of geometry) {\n this.addLine(line, feature, join, cap, miterLimit, roundLimit);\n }\n\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, availableImages, canonical);\n }\n\n addLine(vertices: Array, feature: BucketFeature, join: string, cap: string, miterLimit: number, roundLimit: number) {\n this.distance = 0;\n this.scaledDistance = 0;\n this.totalDistance = 0;\n this.lineSoFar = 0;\n\n if (this.lineClips) {\n this.lineClipsArray.push(this.lineClips);\n // Calculate the total distance, in tile units, of this tiled line feature\n for (let i = 0; i < vertices.length - 1; i++) {\n this.totalDistance += vertices[i].dist(vertices[i + 1]);\n }\n this.updateScaledDistance();\n this.maxLineLength = Math.max(this.maxLineLength, this.totalDistance);\n }\n\n const isPolygon = vectorTileFeatureTypes[feature.type] === 'Polygon';\n\n // If the line has duplicate vertices at the ends, adjust start/length to remove them.\n let len = vertices.length;\n while (len >= 2 && vertices[len - 1].equals(vertices[len - 2])) {\n len--;\n }\n let first = 0;\n while (first < len - 1 && vertices[first].equals(vertices[first + 1])) {\n first++;\n }\n\n // Ignore invalid geometry.\n if (len < (isPolygon ? 3 : 2)) return;\n\n if (join === 'bevel') miterLimit = 1.05;\n\n const sharpCornerOffset = this.overscaling <= 16 ?\n SHARP_CORNER_OFFSET * EXTENT / (512 * this.overscaling) :\n 0;\n\n // we could be more precise, but it would only save a negligible amount of space\n const segment = this.segments.prepareSegment(len * 10, this.layoutVertexArray, this.indexArray);\n\n let currentVertex;\n let prevVertex = ((undefined: any): Point);\n let nextVertex = ((undefined: any): Point);\n let prevNormal = ((undefined: any): Point);\n let nextNormal = ((undefined: any): Point);\n\n // the last two vertices added\n this.e1 = this.e2 = -1;\n\n if (isPolygon) {\n currentVertex = vertices[len - 2];\n nextNormal = vertices[first].sub(currentVertex)._unit()._perp();\n }\n\n for (let i = first; i < len; i++) {\n\n nextVertex = i === len - 1 ?\n (isPolygon ? vertices[first + 1] : (undefined: any)) : // if it's a polygon, treat the last vertex like the first\n vertices[i + 1]; // just the next vertex\n\n // if two consecutive vertices exist, skip the current one\n if (nextVertex && vertices[i].equals(nextVertex)) continue;\n\n if (nextNormal) prevNormal = nextNormal;\n if (currentVertex) prevVertex = currentVertex;\n\n currentVertex = vertices[i];\n\n // Calculate the normal towards the next vertex in this line. In case\n // there is no next vertex, pretend that the line is continuing straight,\n // meaning that we are just using the previous normal.\n nextNormal = nextVertex ? nextVertex.sub(currentVertex)._unit()._perp() : prevNormal;\n\n // If we still don't have a previous normal, this is the beginning of a\n // non-closed line, so we're doing a straight \"join\".\n prevNormal = prevNormal || nextNormal;\n\n // Determine the normal of the join extrusion. It is the angle bisector\n // of the segments between the previous line and the next line.\n // In the case of 180° angles, the prev and next normals cancel each other out:\n // prevNormal + nextNormal = (0, 0), its magnitude is 0, so the unit vector would be\n // undefined. In that case, we're keeping the joinNormal at (0, 0), so that the cosHalfAngle\n // below will also become 0 and miterLength will become Infinity.\n let joinNormal = prevNormal.add(nextNormal);\n if (joinNormal.x !== 0 || joinNormal.y !== 0) {\n joinNormal._unit();\n }\n /* joinNormal prevNormal\n * ↖ ↑\n * .________. prevVertex\n * |\n * nextNormal ← | currentVertex\n * |\n * nextVertex !\n *\n */\n\n // calculate cosines of the angle (and its half) using dot product\n const cosAngle = prevNormal.x * nextNormal.x + prevNormal.y * nextNormal.y;\n const cosHalfAngle = joinNormal.x * nextNormal.x + joinNormal.y * nextNormal.y;\n\n // Calculate the length of the miter (the ratio of the miter to the width)\n // as the inverse of cosine of the angle between next and join normals\n const miterLength = cosHalfAngle !== 0 ? 1 / cosHalfAngle : Infinity;\n\n // approximate angle from cosine\n const approxAngle = 2 * Math.sqrt(2 - 2 * cosHalfAngle);\n\n const isSharpCorner = cosHalfAngle < COS_HALF_SHARP_CORNER && prevVertex && nextVertex;\n const lineTurnsLeft = prevNormal.x * nextNormal.y - prevNormal.y * nextNormal.x > 0;\n\n if (isSharpCorner && i > first) {\n const prevSegmentLength = currentVertex.dist(prevVertex);\n if (prevSegmentLength > 2 * sharpCornerOffset) {\n const newPrevVertex = currentVertex.sub(currentVertex.sub(prevVertex)._mult(sharpCornerOffset / prevSegmentLength)._round());\n this.updateDistance(prevVertex, newPrevVertex);\n this.addCurrentVertex(newPrevVertex, prevNormal, 0, 0, segment);\n prevVertex = newPrevVertex;\n }\n }\n\n // The join if a middle vertex, otherwise the cap.\n const middleVertex = prevVertex && nextVertex;\n let currentJoin = middleVertex ? join : isPolygon ? 'butt' : cap;\n\n if (middleVertex && currentJoin === 'round') {\n if (miterLength < roundLimit) {\n currentJoin = 'miter';\n } else if (miterLength <= 2) {\n currentJoin = 'fakeround';\n }\n }\n\n if (currentJoin === 'miter' && miterLength > miterLimit) {\n currentJoin = 'bevel';\n }\n\n if (currentJoin === 'bevel') {\n // The maximum extrude length is 128 / 63 = 2 times the width of the line\n // so if miterLength >= 2 we need to draw a different type of bevel here.\n if (miterLength > 2) currentJoin = 'flipbevel';\n\n // If the miterLength is really small and the line bevel wouldn't be visible,\n // just draw a miter join to save a triangle.\n if (miterLength < miterLimit) currentJoin = 'miter';\n }\n\n // Calculate how far along the line the currentVertex is\n if (prevVertex) this.updateDistance(prevVertex, currentVertex);\n\n if (currentJoin === 'miter') {\n\n joinNormal._mult(miterLength);\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n\n } else if (currentJoin === 'flipbevel') {\n // miter is too big, flip the direction to make a beveled join\n\n if (miterLength > 100) {\n // Almost parallel lines\n joinNormal = nextNormal.mult(-1);\n\n } else {\n const bevelLength = miterLength * prevNormal.add(nextNormal).mag() / prevNormal.sub(nextNormal).mag();\n joinNormal._perp()._mult(bevelLength * (lineTurnsLeft ? -1 : 1));\n }\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n this.addCurrentVertex(currentVertex, joinNormal.mult(-1), 0, 0, segment);\n\n } else if (currentJoin === 'bevel' || currentJoin === 'fakeround') {\n const offset = -Math.sqrt(miterLength * miterLength - 1);\n const offsetA = lineTurnsLeft ? offset : 0;\n const offsetB = lineTurnsLeft ? 0 : offset;\n\n // Close previous segment with a bevel\n if (prevVertex) {\n this.addCurrentVertex(currentVertex, prevNormal, offsetA, offsetB, segment);\n }\n\n if (currentJoin === 'fakeround') {\n // The join angle is sharp enough that a round join would be visible.\n // Bevel joins fill the gap between segments with a single pie slice triangle.\n // Create a round join by adding multiple pie slices. The join isn't actually round, but\n // it looks like it is at the sizes we render lines at.\n\n // pick the number of triangles for approximating round join by based on the angle between normals\n const n = Math.round((approxAngle * 180 / Math.PI) / DEG_PER_TRIANGLE);\n\n for (let m = 1; m < n; m++) {\n let t = m / n;\n if (t !== 0.5) {\n // approximate spherical interpolation https://observablehq.com/@mourner/approximating-geometric-slerp\n const t2 = t - 0.5;\n const A = 1.0904 + cosAngle * (-3.2452 + cosAngle * (3.55645 - cosAngle * 1.43519));\n const B = 0.848013 + cosAngle * (-1.06021 + cosAngle * 0.215638);\n t = t + t * t2 * (t - 1) * (A * t2 * t2 + B);\n }\n const extrude = nextNormal.sub(prevNormal)._mult(t)._add(prevNormal)._unit()._mult(lineTurnsLeft ? -1 : 1);\n this.addHalfVertex(currentVertex, extrude.x, extrude.y, false, lineTurnsLeft, 0, segment);\n }\n }\n\n if (nextVertex) {\n // Start next segment\n this.addCurrentVertex(currentVertex, nextNormal, -offsetA, -offsetB, segment);\n }\n\n } else if (currentJoin === 'butt') {\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment); // butt cap\n\n } else if (currentJoin === 'square') {\n const offset = prevVertex ? 1 : -1; // closing or starting square cap\n\n if (!prevVertex) {\n this.addCurrentVertex(currentVertex, joinNormal, offset, offset, segment);\n }\n\n // make the cap it's own quad to avoid the cap affecting the line distance\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n\n if (prevVertex) {\n this.addCurrentVertex(currentVertex, joinNormal, offset, offset, segment);\n }\n\n } else if (currentJoin === 'round') {\n\n if (prevVertex) {\n // Close previous segment with butt\n this.addCurrentVertex(currentVertex, prevNormal, 0, 0, segment);\n\n // Add round cap or linejoin at end of segment\n this.addCurrentVertex(currentVertex, prevNormal, 1, 1, segment, true);\n }\n if (nextVertex) {\n // Add round cap before first segment\n this.addCurrentVertex(currentVertex, nextNormal, -1, -1, segment, true);\n\n // Start next segment with a butt\n this.addCurrentVertex(currentVertex, nextNormal, 0, 0, segment);\n }\n }\n\n if (isSharpCorner && i < len - 1) {\n const nextSegmentLength = currentVertex.dist(nextVertex);\n if (nextSegmentLength > 2 * sharpCornerOffset) {\n const newCurrentVertex = currentVertex.add(nextVertex.sub(currentVertex)._mult(sharpCornerOffset / nextSegmentLength)._round());\n this.updateDistance(currentVertex, newCurrentVertex);\n this.addCurrentVertex(newCurrentVertex, nextNormal, 0, 0, segment);\n currentVertex = newCurrentVertex;\n }\n }\n }\n }\n\n /**\n * Add two vertices to the buffers.\n *\n * @param p the line vertex to add buffer vertices for\n * @param normal vertex normal\n * @param endLeft extrude to shift the left vertex along the line\n * @param endRight extrude to shift the left vertex along the line\n * @param segment the segment object to add the vertex to\n * @param round whether this is a round cap\n * @private\n */\n addCurrentVertex(p: Point, normal: Point, endLeft: number, endRight: number, segment: Segment, round: boolean = false) {\n // left and right extrude vectors, perpendicularly shifted by endLeft/endRight\n const leftX = normal.x + normal.y * endLeft;\n const leftY = normal.y - normal.x * endLeft;\n const rightX = -normal.x + normal.y * endRight;\n const rightY = -normal.y - normal.x * endRight;\n\n this.addHalfVertex(p, leftX, leftY, round, false, endLeft, segment);\n this.addHalfVertex(p, rightX, rightY, round, true, -endRight, segment);\n }\n\n addHalfVertex({x, y}: Point, extrudeX: number, extrudeY: number, round: boolean, up: boolean, dir: number, segment: Segment) {\n this.layoutVertexArray.emplaceBack(\n // a_pos_normal\n // Encode round/up the least significant bits\n (x << 1) + (round ? 1 : 0),\n (y << 1) + (up ? 1 : 0),\n // a_data\n // add 128 to store a byte in an unsigned byte\n Math.round(EXTRUDE_SCALE * extrudeX) + 128,\n Math.round(EXTRUDE_SCALE * extrudeY) + 128,\n ((dir === 0 ? 0 : (dir < 0 ? -1 : 1)) + 1),\n 0, // unused\n // a_linesofar\n this.lineSoFar);\n\n // Constructs a second vertex buffer with higher precision line progress\n if (this.lineClips) {\n this.layoutVertexArray2.emplaceBack(this.scaledDistance, this.lineClipsArray.length, this.lineClips.start, this.lineClips.end);\n }\n\n const e = segment.vertexLength++;\n if (this.e1 >= 0 && this.e2 >= 0) {\n this.indexArray.emplaceBack(this.e1, this.e2, e);\n segment.primitiveLength++;\n }\n if (up) {\n this.e2 = e;\n } else {\n this.e1 = e;\n }\n }\n\n updateScaledDistance() {\n // Knowing the ratio of the full linestring covered by this tiled feature, as well\n // as the total distance (in tile units) of this tiled feature, and the distance\n // (in tile units) of the current vertex, we can determine the relative distance\n // of this vertex along the full linestring feature.\n if (this.lineClips) {\n const featureShare = this.lineClips.end - this.lineClips.start;\n const totalFeatureLength = this.totalDistance / featureShare;\n this.scaledDistance = this.distance / this.totalDistance;\n this.lineSoFar = totalFeatureLength * this.lineClips.start + this.distance;\n } else {\n this.lineSoFar = this.distance;\n }\n }\n\n updateDistance(prev: Point, next: Point) {\n this.distance += prev.dist(next);\n this.updateScaledDistance();\n }\n}\n\nregister(LineBucket, 'LineBucket', {omit: ['layers', 'patternFeatures']});\n\nexport default LineBucket;\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"line-cap\": DataDrivenProperty<\"butt\" | \"round\" | \"square\">,\n \"line-join\": DataDrivenProperty<\"bevel\" | \"round\" | \"miter\">,\n \"line-miter-limit\": DataConstantProperty,\n \"line-round-limit\": DataConstantProperty,\n \"line-sort-key\": DataDrivenProperty,\n|};\n\nconst layout: Properties = new Properties({\n \"line-cap\": new DataDrivenProperty(styleSpec[\"layout_line\"][\"line-cap\"]),\n \"line-join\": new DataDrivenProperty(styleSpec[\"layout_line\"][\"line-join\"]),\n \"line-miter-limit\": new DataConstantProperty(styleSpec[\"layout_line\"][\"line-miter-limit\"]),\n \"line-round-limit\": new DataConstantProperty(styleSpec[\"layout_line\"][\"line-round-limit\"]),\n \"line-sort-key\": new DataDrivenProperty(styleSpec[\"layout_line\"][\"line-sort-key\"]),\n});\n\nexport type PaintProps = {|\n \"line-opacity\": DataDrivenProperty,\n \"line-color\": DataDrivenProperty,\n \"line-translate\": DataConstantProperty<[number, number]>,\n \"line-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"line-width\": DataDrivenProperty,\n \"line-gap-width\": DataDrivenProperty,\n \"line-offset\": DataDrivenProperty,\n \"line-blur\": DataDrivenProperty,\n \"line-dasharray\": DataDrivenProperty>,\n \"line-pattern\": DataDrivenProperty,\n \"line-gradient\": ColorRampProperty,\n \"line-trim-offset\": DataConstantProperty<[number, number]>,\n|};\n\nconst paint: Properties = new Properties({\n \"line-opacity\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-opacity\"]),\n \"line-color\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-color\"]),\n \"line-translate\": new DataConstantProperty(styleSpec[\"paint_line\"][\"line-translate\"]),\n \"line-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_line\"][\"line-translate-anchor\"]),\n \"line-width\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-width\"]),\n \"line-gap-width\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-gap-width\"]),\n \"line-offset\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-offset\"]),\n \"line-blur\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-blur\"]),\n \"line-dasharray\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-dasharray\"]),\n \"line-pattern\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-pattern\"]),\n \"line-gradient\": new ColorRampProperty(styleSpec[\"paint_line\"][\"line-gradient\"]),\n \"line-trim-offset\": new DataConstantProperty(styleSpec[\"paint_line\"][\"line-trim-offset\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties, layout: Properties\n}>);\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport StyleLayer from '../style_layer.js';\nimport LineBucket from '../../data/bucket/line_bucket.js';\nimport {polygonIntersectsBufferedMultiLine} from '../../util/intersection_tests.js';\nimport {getMaximumPaintValue, translateDistance, translate} from '../query_utils.js';\nimport properties from './line_style_layer_properties.js';\nimport {extend} from '../../util/util.js';\nimport EvaluationParameters from '../evaluation_parameters.js';\nimport {Transitionable, Transitioning, Layout, PossiblyEvaluated, DataDrivenProperty} from '../properties.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\n\nimport Step from '../../style-spec/expression/definitions/step.js';\nimport type {PossiblyEvaluatedValue, PropertyValue, PossiblyEvaluatedPropertyValue} from '../properties.js';\nimport type {Feature, FeatureState, ZoomConstantExpression, StylePropertyExpression} from '../../style-spec/expression/index.js';\nimport type {Bucket, BucketParameters} from '../../data/bucket.js';\nimport type {LayoutProps, PaintProps} from './line_style_layer_properties.js';\nimport type Transform from '../../geo/transform.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\nclass LineFloorwidthProperty extends DataDrivenProperty {\n useIntegerZoom: ?boolean;\n\n possiblyEvaluate(value: PropertyValue>, parameters: EvaluationParameters): PossiblyEvaluatedPropertyValue {\n parameters = new EvaluationParameters(Math.floor(parameters.zoom), {\n now: parameters.now,\n fadeDuration: parameters.fadeDuration,\n transition: parameters.transition\n });\n return super.possiblyEvaluate(value, parameters);\n }\n\n evaluate(value: PossiblyEvaluatedValue, globals: EvaluationParameters, feature: Feature, featureState: FeatureState): number {\n globals = extend({}, globals, {zoom: Math.floor(globals.zoom)});\n return super.evaluate(value, globals, feature, featureState);\n }\n}\n\nconst lineFloorwidthProperty = new LineFloorwidthProperty(properties.paint.properties['line-width'].specification);\nlineFloorwidthProperty.useIntegerZoom = true;\n\nclass LineStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout;\n layout: PossiblyEvaluated;\n\n gradientVersion: number;\n stepInterpolant: boolean;\n\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n this.gradientVersion = 0;\n }\n\n _handleSpecialPaintPropertyUpdate(name: string) {\n if (name === 'line-gradient') {\n const expression: ZoomConstantExpression<'source'> = ((this._transitionablePaint._values['line-gradient'].value.expression): any);\n this.stepInterpolant = expression._styleExpression && expression._styleExpression.expression instanceof Step;\n this.gradientVersion = (this.gradientVersion + 1) % Number.MAX_SAFE_INTEGER;\n }\n }\n\n gradientExpression(): StylePropertyExpression {\n return this._transitionablePaint._values['line-gradient'].value.expression;\n }\n\n widthExpression(): StylePropertyExpression {\n return this._transitionablePaint._values['line-width'].value.expression;\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array) {\n super.recalculate(parameters, availableImages);\n\n (this.paint._values: any)['line-floorwidth'] =\n lineFloorwidthProperty.possiblyEvaluate(this._transitioningPaint._values['line-width'].value, parameters);\n }\n\n createBucket(parameters: BucketParameters): LineBucket {\n return new LineBucket(parameters);\n }\n\n getProgramIds(): string[] {\n const patternProperty = this.paint.get('line-pattern');\n const image = patternProperty.constantOr((1: any));\n const programId = image ? 'linePattern' : 'line';\n return [programId];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n\n // $FlowFixMe[method-unbinding]\n queryRadius(bucket: Bucket): number {\n const lineBucket: LineBucket = (bucket: any);\n const width = getLineWidth(\n getMaximumPaintValue('line-width', this, lineBucket),\n getMaximumPaintValue('line-gap-width', this, lineBucket));\n const offset = getMaximumPaintValue('line-offset', this, lineBucket);\n return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate'));\n }\n\n // $FlowFixMe[method-unbinding]\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: IVectorTileFeature,\n featureState: FeatureState,\n geometry: Array>,\n zoom: number,\n transform: Transform): boolean {\n if (queryGeometry.queryGeometry.isAboveHorizon) return false;\n\n const translatedPolygon = translate(queryGeometry.tilespaceGeometry,\n this.paint.get('line-translate'),\n this.paint.get('line-translate-anchor'),\n transform.angle, queryGeometry.pixelToTileUnitsFactor);\n const halfWidth = queryGeometry.pixelToTileUnitsFactor / 2 * getLineWidth(\n this.paint.get('line-width').evaluate(feature, featureState),\n this.paint.get('line-gap-width').evaluate(feature, featureState));\n const lineOffset = this.paint.get('line-offset').evaluate(feature, featureState);\n if (lineOffset) {\n geometry = offsetLine(geometry, lineOffset * queryGeometry.pixelToTileUnitsFactor);\n }\n\n return polygonIntersectsBufferedMultiLine(translatedPolygon, geometry, halfWidth);\n }\n\n isTileClipped(): boolean {\n return true;\n }\n}\n\nexport default LineStyleLayer;\n\nfunction getLineWidth(lineWidth: number, lineGapWidth: number) {\n if (lineGapWidth > 0) {\n return lineGapWidth + 2 * lineWidth;\n } else {\n return lineWidth;\n }\n}\n\nfunction offsetLine(rings: Array>, offset: number) {\n const newRings = [];\n const zero = new Point(0, 0);\n for (let k = 0; k < rings.length; k++) {\n const ring = rings[k];\n const newRing = [];\n for (let i = 0; i < ring.length; i++) {\n const a = ring[i - 1];\n const b = ring[i];\n const c = ring[i + 1];\n const aToB = i === 0 ? zero : b.sub(a)._unit()._perp();\n const bToC = i === ring.length - 1 ? zero : c.sub(b)._unit()._perp();\n const extrude = aToB._add(bToC)._unit();\n\n const cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y;\n extrude._mult(1 / cosHalfAngle);\n\n newRing.push(extrude._mult(offset)._add(b));\n }\n newRings.push(newRing);\n }\n return newRings;\n}\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nexport const symbolLayoutAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_offset', components: 4, type: 'Int16'},\n {name: 'a_tex_size', components: 4, type: 'Uint16'},\n {name: 'a_pixeloffset', components: 4, type: 'Int16'}\n], 4);\n\nexport const symbolGlobeExtAttributes: StructArrayLayout = createLayout([\n {name: 'a_globe_anchor', components: 3, type: 'Int16'},\n {name: 'a_globe_normal', components: 3, type: 'Float32'},\n], 4);\n\nexport const dynamicLayoutAttributes: StructArrayLayout = createLayout([\n {name: 'a_projected_pos', components: 4, type: 'Float32'}\n], 4);\n\nexport const placementOpacityAttributes: StructArrayLayout = createLayout([\n {name: 'a_fade_opacity', components: 1, type: 'Uint32'}\n], 4);\n\nexport const collisionVertexAttributes: StructArrayLayout = createLayout([\n {name: 'a_placed', components: 2, type: 'Uint8'},\n {name: 'a_shift', components: 2, type: 'Float32'},\n]);\n\nexport const collisionVertexAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_size_scale', components: 1, type: 'Float32'},\n {name: 'a_padding', components: 2, type: 'Float32'},\n]);\n\nexport const collisionBox: StructArrayLayout = createLayout([\n // the box is centered around the anchor point\n {type: 'Int16', name: 'projectedAnchorX'},\n {type: 'Int16', name: 'projectedAnchorY'},\n {type: 'Int16', name: 'projectedAnchorZ'},\n\n {type: 'Int16', name: 'tileAnchorX'},\n {type: 'Int16', name: 'tileAnchorY'},\n\n // distances to the edges from the anchor\n {type: 'Float32', name: 'x1'},\n {type: 'Float32', name: 'y1'},\n {type: 'Float32', name: 'x2'},\n {type: 'Float32', name: 'y2'},\n\n {type: 'Int16', name: 'padding'},\n\n // the index of the feature in the original vectortile\n {type: 'Uint32', name: 'featureIndex'},\n // the source layer the feature appears in\n {type: 'Uint16', name: 'sourceLayerIndex'},\n // the bucket the feature appears in\n {type: 'Uint16', name: 'bucketIndex'},\n]);\n\nexport const collisionBoxLayout: StructArrayLayout = createLayout([ // used to render collision boxes for debugging purposes\n {name: 'a_pos', components: 3, type: 'Int16'},\n {name: 'a_anchor_pos', components: 2, type: 'Int16'},\n {name: 'a_extrude', components: 2, type: 'Int16'}\n], 4);\n\nexport const collisionCircleLayout: StructArrayLayout = createLayout([ // used to render collision circles for debugging purposes\n {name: 'a_pos_2f', components: 2, type: 'Float32'},\n {name: 'a_radius', components: 1, type: 'Float32'},\n {name: 'a_flags', components: 2, type: 'Int16'}\n], 4);\n\nexport const quadTriangle: StructArrayLayout = createLayout([\n {name: 'triangle', components: 3, type: 'Uint16'},\n]);\n\nexport const placement: StructArrayLayout = createLayout([\n {type: 'Int16', name: 'projectedAnchorX'},\n {type: 'Int16', name: 'projectedAnchorY'},\n {type: 'Int16', name: 'projectedAnchorZ'},\n {type: 'Float32', name: 'tileAnchorX'},\n {type: 'Float32', name: 'tileAnchorY'},\n {type: 'Uint16', name: 'glyphStartIndex'},\n {type: 'Uint16', name: 'numGlyphs'},\n {type: 'Uint32', name: 'vertexStartIndex'},\n {type: 'Uint32', name: 'lineStartIndex'},\n {type: 'Uint32', name: 'lineLength'},\n {type: 'Uint16', name: 'segment'},\n {type: 'Uint16', name: 'lowerSize'},\n {type: 'Uint16', name: 'upperSize'},\n {type: 'Float32', name: 'lineOffsetX'},\n {type: 'Float32', name: 'lineOffsetY'},\n {type: 'Uint8', name: 'writingMode'},\n {type: 'Uint8', name: 'placedOrientation'},\n {type: 'Uint8', name: 'hidden'},\n {type: 'Uint32', name: 'crossTileID'},\n {type: 'Int16', name: 'associatedIconIndex'},\n {type: 'Uint8', name: 'flipState'}\n]);\n\nexport const symbolInstance: StructArrayLayout = createLayout([\n {type: 'Int16', name: 'projectedAnchorX'},\n {type: 'Int16', name: 'projectedAnchorY'},\n {type: 'Int16', name: 'projectedAnchorZ'},\n {type: 'Float32', name: 'tileAnchorX'},\n {type: 'Float32', name: 'tileAnchorY'},\n {type: 'Int16', name: 'rightJustifiedTextSymbolIndex'},\n {type: 'Int16', name: 'centerJustifiedTextSymbolIndex'},\n {type: 'Int16', name: 'leftJustifiedTextSymbolIndex'},\n {type: 'Int16', name: 'verticalPlacedTextSymbolIndex'},\n {type: 'Int16', name: 'placedIconSymbolIndex'},\n {type: 'Int16', name: 'verticalPlacedIconSymbolIndex'},\n {type: 'Uint16', name: 'key'},\n {type: 'Uint16', name: 'textBoxStartIndex'},\n {type: 'Uint16', name: 'textBoxEndIndex'},\n {type: 'Uint16', name: 'verticalTextBoxStartIndex'},\n {type: 'Uint16', name: 'verticalTextBoxEndIndex'},\n {type: 'Uint16', name: 'iconBoxStartIndex'},\n {type: 'Uint16', name: 'iconBoxEndIndex'},\n {type: 'Uint16', name: 'verticalIconBoxStartIndex'},\n {type: 'Uint16', name: 'verticalIconBoxEndIndex'},\n {type: 'Uint16', name: 'featureIndex'},\n {type: 'Uint16', name: 'numHorizontalGlyphVertices'},\n {type: 'Uint16', name: 'numVerticalGlyphVertices'},\n {type: 'Uint16', name: 'numIconVertices'},\n {type: 'Uint16', name: 'numVerticalIconVertices'},\n {type: 'Uint16', name: 'useRuntimeCollisionCircles'},\n {type: 'Uint32', name: 'crossTileID'},\n {type: 'Float32', components: 2, name: 'textOffset'},\n {type: 'Float32', name: 'collisionCircleDiameter'},\n]);\n\nexport const glyphOffset: StructArrayLayout = createLayout([\n {type: 'Float32', name: 'offsetX'}\n]);\n\nexport const lineVertex: StructArrayLayout = createLayout([\n {type: 'Int16', name: 'x'},\n {type: 'Int16', name: 'y'}\n]);\n","// @flow\n// ONE_EM constant used to go between \"em\" units used in style spec and \"points\" used internally for layout\n\nexport default 24;\n","// @flow\n\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport Interpolate from '../style-spec/expression/definitions/interpolate.js';\nimport {clamp} from '../util/util.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\n\nimport type {PropertyValue, PossiblyEvaluatedPropertyValue} from '../style/properties.js';\nimport type {InterpolationType} from '../style-spec/expression/definitions/interpolate.js';\n\nconst SIZE_PACK_FACTOR = 128;\n\nexport {getSizeData, evaluateSizeForFeature, evaluateSizeForZoom, SIZE_PACK_FACTOR};\n\nexport type SizeData = {\n kind: 'constant',\n layoutSize: number\n} | {\n kind: 'source'\n} | {\n kind: 'camera',\n minZoom: number,\n maxZoom: number,\n minSize: number,\n maxSize: number,\n interpolationType: ?InterpolationType\n} | {\n kind: 'composite',\n minZoom: number,\n maxZoom: number,\n interpolationType: ?InterpolationType\n};\n\nexport type InterpolatedSize = {|\n uSize: number,\n uSizeT: number\n|};\n\n// For {text,icon}-size, get the bucket-level data that will be needed by\n// the painter to set symbol-size-related uniforms\nfunction getSizeData(tileZoom: number, value: PropertyValue>): SizeData {\n const {expression} = value;\n\n if (expression.kind === 'constant') {\n // $FlowFixMe[method-unbinding]\n const layoutSize = expression.evaluate(new EvaluationParameters(tileZoom + 1));\n return {kind: 'constant', layoutSize};\n\n } else if (expression.kind === 'source') {\n return {kind: 'source'};\n\n } else {\n const {zoomStops, interpolationType} = expression;\n\n // calculate covering zoom stops for zoom-dependent values\n let lower = 0;\n while (lower < zoomStops.length && zoomStops[lower] <= tileZoom) lower++;\n lower = Math.max(0, lower - 1);\n let upper = lower;\n while (upper < zoomStops.length && zoomStops[upper] < tileZoom + 1) upper++;\n upper = Math.min(zoomStops.length - 1, upper);\n\n const minZoom = zoomStops[lower];\n const maxZoom = zoomStops[upper];\n\n // We'd like to be able to use CameraExpression or CompositeExpression in these\n // return types rather than ExpressionSpecification, but the former are not\n // transferrable across Web Worker boundaries.\n if (expression.kind === 'composite') {\n return {kind: 'composite', minZoom, maxZoom, interpolationType};\n }\n\n // for camera functions, also save off the function values\n // evaluated at the covering zoom levels\n // $FlowFixMe[method-unbinding]\n const minSize = expression.evaluate(new EvaluationParameters(minZoom));\n // $FlowFixMe[method-unbinding]\n const maxSize = expression.evaluate(new EvaluationParameters(maxZoom));\n\n return {kind: 'camera', minZoom, maxZoom, minSize, maxSize, interpolationType};\n }\n}\n\nfunction evaluateSizeForFeature(sizeData: SizeData,\n {uSize, uSizeT}: InterpolatedSize,\n {lowerSize, upperSize}: interface {+lowerSize: number, +upperSize: number}): number {\n if (sizeData.kind === 'source') {\n return lowerSize / SIZE_PACK_FACTOR;\n } else if (sizeData.kind === 'composite') {\n return interpolate(lowerSize / SIZE_PACK_FACTOR, upperSize / SIZE_PACK_FACTOR, uSizeT);\n }\n return uSize;\n}\n\nfunction evaluateSizeForZoom(sizeData: SizeData, zoom: number): InterpolatedSize {\n let uSizeT = 0;\n let uSize = 0;\n\n if (sizeData.kind === 'constant') {\n uSize = sizeData.layoutSize;\n\n } else if (sizeData.kind !== 'source') {\n const {interpolationType, minZoom, maxZoom} = sizeData;\n\n // Even though we could get the exact value of the camera function\n // at z = tr.zoom, we intentionally do not: instead, we interpolate\n // between the camera function values at a pair of zoom stops covering\n // [tileZoom, tileZoom + 1] in order to be consistent with this\n // restriction on composite functions\n const t = !interpolationType ? 0 : clamp(\n Interpolate.interpolationFactor(interpolationType, zoom, minZoom, maxZoom), 0, 1);\n\n if (sizeData.kind === 'camera') {\n uSize = interpolate(sizeData.minSize, sizeData.maxSize, t);\n } else {\n uSizeT = t;\n }\n }\n\n return {uSizeT, uSize};\n}\n","// @flow\n\nimport {plugin as rtlTextPlugin} from '../source/rtl_text_plugin.js';\n\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type {Feature} from '../style-spec/expression/index.js';\nimport Formatted from '../style-spec/expression/types/formatted.js';\n\nfunction transformText(text: string, layer: SymbolStyleLayer, feature: Feature) {\n const transform = layer.layout.get('text-transform').evaluate(feature, {});\n if (transform === 'uppercase') {\n text = text.toLocaleUpperCase();\n } else if (transform === 'lowercase') {\n text = text.toLocaleLowerCase();\n }\n\n if (rtlTextPlugin.applyArabicShaping) {\n text = rtlTextPlugin.applyArabicShaping(text);\n }\n\n return text;\n}\n\nexport default function(text: Formatted, layer: SymbolStyleLayer, feature: Feature): Formatted {\n text.sections.forEach(section => {\n section.text = transformText(section.text, layer, feature);\n });\n return text;\n}\n","// @flow\n\nimport {charHasRotatedVerticalOrientation} from './script_detection.js';\n\nexport const verticalizedCharacterMap = {\n '!': '︕',\n '#': '#',\n '$': '$',\n '%': '%',\n '&': '&',\n '(': '︵',\n ')': '︶',\n '*': '*',\n '+': '+',\n ',': '︐',\n '-': '︲',\n '.': '・',\n '/': '/',\n ':': '︓',\n ';': '︔',\n '<': '︿',\n '=': '=',\n '>': '﹀',\n '?': '︖',\n '@': '@',\n '[': '﹇',\n '\\\\': '\',\n ']': '﹈',\n '^': '^',\n '_': '︳',\n '`': '`',\n '{': '︷',\n '|': '―',\n '}': '︸',\n '~': '~',\n '¢': '¢',\n '£': '£',\n '¥': '¥',\n '¦': '¦',\n '¬': '¬',\n '¯': ' ̄',\n '–': '︲',\n '—': '︱',\n '‘': '﹃',\n '’': '﹄',\n '“': '﹁',\n '”': '﹂',\n '…': '︙',\n '‧': '・',\n '₩': '₩',\n '、': '︑',\n '。': '︒',\n '〈': '︿',\n '〉': '﹀',\n '《': '︽',\n '》': '︾',\n '「': '﹁',\n '」': '﹂',\n '『': '﹃',\n '』': '﹄',\n '【': '︻',\n '】': '︼',\n '〔': '︹',\n '〕': '︺',\n '〖': '︗',\n '〗': '︘',\n '!': '︕',\n '(': '︵',\n ')': '︶',\n ',': '︐',\n '-': '︲',\n '.': '・',\n ':': '︓',\n ';': '︔',\n '<': '︿',\n '>': '﹀',\n '?': '︖',\n '[': '﹇',\n ']': '﹈',\n '_': '︳',\n '{': '︷',\n '|': '―',\n '}': '︸',\n '⦅': '︵',\n '⦆': '︶',\n '。': '︒',\n '「': '﹁',\n '」': '﹂',\n '←': '↑',\n '→': '↓'\n};\n\nexport default function verticalizePunctuation(input: string, skipContextChecking: boolean): string {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const nextCharCode = input.charCodeAt(i + 1) || null;\n const prevCharCode = input.charCodeAt(i - 1) || null;\n\n const canReplacePunctuation = skipContextChecking || (\n (!nextCharCode || !charHasRotatedVerticalOrientation(nextCharCode) || verticalizedCharacterMap[input[i + 1]]) &&\n (!prevCharCode || !charHasRotatedVerticalOrientation(prevCharCode) || verticalizedCharacterMap[input[i - 1]])\n );\n\n if (canReplacePunctuation && verticalizedCharacterMap[input[i]]) {\n output += verticalizedCharacterMap[input[i]];\n } else {\n output += input[i];\n }\n }\n\n return output;\n}\n\nexport function isVerticalClosePunctuation(chr: string): boolean {\n return chr === '︶' || chr === '﹈' || chr === '︸' || chr === '﹄' || chr === '﹂' || chr === '︾' ||\n chr === '︼' || chr === '︺' || chr === '︘' || chr === '﹀' || chr === '︐' || chr === '︓' ||\n chr === '︔' || chr === '`' || chr === ' ̄' || chr === '︑' || chr === '︒';\n}\n\nexport function isVerticalOpenPunctuation(chr: string): boolean {\n return chr === '︵' || chr === '﹇' || chr === '︷' || chr === '﹃' || chr === '﹁' || chr === '︽' ||\n chr === '︻' || chr === '︹' || chr === '︗' || chr === '︿';\n}\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// @flow\n\nimport {AlphaImage} from '../util/image.js';\n\nimport Protobuf from 'pbf';\nconst border = 3;\n\nimport type {StyleGlyph} from './style_glyph.js';\n\nfunction readFontstacks(tag: number, glyphData: {glyphs: Array, ascender?: number, descender?: number}, pbf: Protobuf) {\n glyphData.glyphs = [];\n if (tag === 1) {\n pbf.readMessage(readFontstack, glyphData);\n }\n}\n\nfunction readFontstack(tag: number, glyphData: {glyphs: Array, ascender?: number, descender?: number}, pbf: Protobuf) {\n if (tag === 3) {\n const {id, bitmap, width, height, left, top, advance} = pbf.readMessage(readGlyph, {});\n glyphData.glyphs.push({\n id,\n bitmap: new AlphaImage({\n width: width + 2 * border,\n height: height + 2 * border\n }, bitmap),\n metrics: {width, height, left, top, advance}\n });\n } else if (tag === 4) {\n glyphData.ascender = pbf.readSVarint();\n } else if (tag === 5) {\n glyphData.descender = pbf.readSVarint();\n }\n}\n\nfunction readGlyph(tag: number, glyph: Object, pbf: Protobuf) {\n if (tag === 1) glyph.id = pbf.readVarint();\n else if (tag === 2) glyph.bitmap = pbf.readBytes();\n else if (tag === 3) glyph.width = pbf.readVarint();\n else if (tag === 4) glyph.height = pbf.readVarint();\n else if (tag === 5) glyph.left = pbf.readSVarint();\n else if (tag === 6) glyph.top = pbf.readSVarint();\n else if (tag === 7) glyph.advance = pbf.readVarint();\n}\n\nexport default function (data: ArrayBuffer | Uint8Array): {glyphs: Array, ascender?: number, descender?: number} {\n return new Protobuf(data).readFields(readFontstacks, {});\n}\n\nexport const GLYPH_PBF_BORDER = border;\n","\nexport default function potpack(boxes) {\n\n // calculate total box area and maximum box width\n let area = 0;\n let maxWidth = 0;\n\n for (const box of boxes) {\n area += box.w * box.h;\n maxWidth = Math.max(maxWidth, box.w);\n }\n\n // sort the boxes for insertion by height, descending\n boxes.sort((a, b) => b.h - a.h);\n\n // aim for a squarish resulting container,\n // slightly adjusted for sub-100% space utilization\n const startWidth = Math.max(Math.ceil(Math.sqrt(area / 0.95)), maxWidth);\n\n // start with a single empty space, unbounded at the bottom\n const spaces = [{x: 0, y: 0, w: startWidth, h: Infinity}];\n\n let width = 0;\n let height = 0;\n\n for (const box of boxes) {\n // look through spaces backwards so that we check smaller spaces first\n for (let i = spaces.length - 1; i >= 0; i--) {\n const space = spaces[i];\n\n // look for empty spaces that can accommodate the current box\n if (box.w > space.w || box.h > space.h) continue;\n\n // found the space; add the box to its top-left corner\n // |-------|-------|\n // | box | |\n // |_______| |\n // | space |\n // |_______________|\n box.x = space.x;\n box.y = space.y;\n\n height = Math.max(height, box.y + box.h);\n width = Math.max(width, box.x + box.w);\n\n if (box.w === space.w && box.h === space.h) {\n // space matches the box exactly; remove it\n const last = spaces.pop();\n if (i < spaces.length) spaces[i] = last;\n\n } else if (box.h === space.h) {\n // space matches the box height; update it accordingly\n // |-------|---------------|\n // | box | updated space |\n // |_______|_______________|\n space.x += box.w;\n space.w -= box.w;\n\n } else if (box.w === space.w) {\n // space matches the box width; update it accordingly\n // |---------------|\n // | box |\n // |_______________|\n // | updated space |\n // |_______________|\n space.y += box.h;\n space.h -= box.h;\n\n } else {\n // otherwise the box splits the space into two spaces\n // |-------|-----------|\n // | box | new space |\n // |_______|___________|\n // | updated space |\n // |___________________|\n spaces.push({\n x: space.x + box.w,\n y: space.y,\n w: space.w - box.w,\n h: box.h\n });\n space.y += box.h;\n space.h -= box.h;\n }\n break;\n }\n }\n\n return {\n w: width, // container width\n h: height, // container height\n fill: (area / (width * height)) || 0 // space utilization\n };\n}\n","// @flow\n\nimport {RGBAImage} from '../util/image.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport potpack from 'potpack';\n\nimport type {StyleImage} from '../style/style_image.js';\nimport type ImageManager from './image_manager.js';\nimport type Texture from './texture.js';\nimport type {SpritePosition} from '../util/image.js';\n\nconst IMAGE_PADDING: number = 1;\nexport {IMAGE_PADDING};\n\ntype Rect = {\n x: number,\n y: number,\n w: number,\n h: number\n};\n\nexport class ImagePosition implements SpritePosition {\n paddedRect: Rect;\n pixelRatio: number;\n version: number;\n stretchY: ?Array<[number, number]>;\n stretchX: ?Array<[number, number]>;\n content: ?[number, number, number, number];\n\n constructor(paddedRect: Rect, {pixelRatio, version, stretchX, stretchY, content}: StyleImage) {\n this.paddedRect = paddedRect;\n this.pixelRatio = pixelRatio;\n this.stretchX = stretchX;\n this.stretchY = stretchY;\n this.content = content;\n this.version = version;\n }\n\n get tl(): [number, number] {\n return [\n this.paddedRect.x + IMAGE_PADDING,\n this.paddedRect.y + IMAGE_PADDING\n ];\n }\n\n get br(): [number, number] {\n return [\n this.paddedRect.x + this.paddedRect.w - IMAGE_PADDING,\n this.paddedRect.y + this.paddedRect.h - IMAGE_PADDING\n ];\n }\n\n get displaySize(): [number, number] {\n return [\n (this.paddedRect.w - IMAGE_PADDING * 2) / this.pixelRatio,\n (this.paddedRect.h - IMAGE_PADDING * 2) / this.pixelRatio\n ];\n }\n}\n\nexport default class ImageAtlas {\n image: RGBAImage;\n iconPositions: {[_: string]: ImagePosition};\n patternPositions: {[_: string]: ImagePosition};\n haveRenderCallbacks: Array;\n uploaded: ?boolean;\n\n constructor(icons: {[_: string]: StyleImage}, patterns: {[_: string]: StyleImage}) {\n const iconPositions = {}, patternPositions = {};\n this.haveRenderCallbacks = [];\n\n const bins = [];\n\n this.addImages(icons, iconPositions, bins);\n this.addImages(patterns, patternPositions, bins);\n\n const {w, h} = potpack(bins);\n const image = new RGBAImage({width: w || 1, height: h || 1});\n\n for (const id in icons) {\n const src = icons[id];\n const bin = iconPositions[id].paddedRect;\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x: bin.x + IMAGE_PADDING, y: bin.y + IMAGE_PADDING}, src.data);\n }\n\n for (const id in patterns) {\n const src = patterns[id];\n const bin = patternPositions[id].paddedRect;\n const x = bin.x + IMAGE_PADDING,\n y = bin.y + IMAGE_PADDING,\n w = src.data.width,\n h = src.data.height;\n\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x, y}, src.data);\n // Add 1 pixel wrapped padding on each side of the image.\n RGBAImage.copy(src.data, image, {x: 0, y: h - 1}, {x, y: y - 1}, {width: w, height: 1}); // T\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x, y: y + h}, {width: w, height: 1}); // B\n RGBAImage.copy(src.data, image, {x: w - 1, y: 0}, {x: x - 1, y}, {width: 1, height: h}); // L\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x: x + w, y}, {width: 1, height: h}); // R\n }\n\n this.image = image;\n this.iconPositions = iconPositions;\n this.patternPositions = patternPositions;\n }\n\n addImages(images: {[_: string]: StyleImage}, positions: {[_: string]: ImagePosition}, bins: Array) {\n for (const id in images) {\n const src = images[id];\n const bin = {\n x: 0,\n y: 0,\n w: src.data.width + 2 * IMAGE_PADDING,\n h: src.data.height + 2 * IMAGE_PADDING,\n };\n bins.push(bin);\n positions[id] = new ImagePosition(bin, src);\n\n if (src.hasRenderCallback) {\n this.haveRenderCallbacks.push(id);\n }\n }\n }\n\n patchUpdatedImages(imageManager: ImageManager, texture: Texture) {\n this.haveRenderCallbacks = this.haveRenderCallbacks.filter(id => imageManager.hasImage(id));\n imageManager.dispatchRenderCallbacks(this.haveRenderCallbacks);\n for (const name in imageManager.updatedImages) {\n this.patchUpdatedImage(this.iconPositions[name], imageManager.getImage(name), texture);\n this.patchUpdatedImage(this.patternPositions[name], imageManager.getImage(name), texture);\n }\n }\n\n patchUpdatedImage(position: ?ImagePosition, image: ?StyleImage, texture: Texture) {\n if (!position || !image) return;\n\n if (position.version === image.version) return;\n\n position.version = image.version;\n const [x, y] = position.tl;\n texture.update(image.data, undefined, {x, y});\n }\n\n}\n\nregister(ImagePosition, 'ImagePosition');\nregister(ImageAtlas, 'ImageAtlas');\n","// @flow\n\nimport assert from 'assert';\nimport {\n charHasUprightVerticalOrientation,\n charAllowsIdeographicBreaking,\n charInComplexShapingScript\n} from '../util/script_detection.js';\nimport verticalizePunctuation from '../util/verticalize_punctuation.js';\nimport {plugin as rtlTextPlugin} from '../source/rtl_text_plugin.js';\nimport ONE_EM from './one_em.js';\nimport {warnOnce} from '../util/util.js';\n\nimport type {StyleGlyph, GlyphMetrics} from '../style/style_glyph.js';\nimport {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf.js';\nimport type {ImagePosition} from '../render/image_atlas.js';\nimport {IMAGE_PADDING} from '../render/image_atlas.js';\nimport type {GlyphRect, GlyphPositions} from '../render/glyph_atlas.js';\nimport Formatted, {FormattedSection} from '../style-spec/expression/types/formatted.js';\n\nconst WritingMode = {\n horizontal: 1,\n vertical: 2,\n horizontalOnly: 3\n};\n\nconst SHAPING_DEFAULT_OFFSET = -17;\nexport {shapeText, shapeIcon, fitIconToText, getAnchorAlignment, WritingMode, SHAPING_DEFAULT_OFFSET};\n\n// The position of a glyph relative to the text's anchor point.\nexport type PositionedGlyph = {\n glyph: number,\n imageName: string | null,\n x: number,\n y: number,\n vertical: boolean,\n scale: number,\n fontStack: string,\n sectionIndex: number,\n metrics: GlyphMetrics,\n rect: GlyphRect | null,\n localGlyph?: boolean\n};\n\nexport type PositionedLine = {\n positionedGlyphs: Array,\n lineOffset: number\n};\n\n// A collection of positioned glyphs and some metadata\nexport type Shaping = {\n positionedLines: Array,\n top: number,\n bottom: number,\n left: number,\n right: number,\n writingMode: 1 | 2,\n text: string,\n iconsInText: boolean,\n verticalizable: boolean,\n hasBaseline: boolean\n};\n\ntype AnchorAlignment = {|\n horizontalAlign: number,\n verticalAlign: number\n|};\n\nfunction isEmpty(positionedLines: Array) {\n for (const line of positionedLines) {\n if (line.positionedGlyphs.length !== 0) {\n return false;\n }\n }\n return true;\n}\n\nexport type SymbolAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\nexport type TextJustify = 'left' | 'center' | 'right';\n\n// Max number of images in label is 6401 U+E000–U+F8FF that covers\n// Basic Multilingual Plane Unicode Private Use Area (PUA).\nconst PUAbegin = 0xE000;\nconst PUAend = 0xF8FF;\n\nclass SectionOptions {\n // Text options\n scale: number;\n fontStack: string;\n // Image options\n imageName: string | null;\n\n constructor() {\n this.scale = 1.0;\n this.fontStack = \"\";\n this.imageName = null;\n }\n\n static forText(scale: ?number, fontStack: string): SectionOptions {\n const textOptions = new SectionOptions();\n textOptions.scale = scale || 1;\n textOptions.fontStack = fontStack;\n return textOptions;\n }\n\n static forImage(imageName: string): SectionOptions {\n const imageOptions = new SectionOptions();\n imageOptions.imageName = imageName;\n return imageOptions;\n }\n\n}\n\nclass TaggedString {\n text: string;\n sectionIndex: Array // maps each character in 'text' to its corresponding entry in 'sections'\n sections: Array\n imageSectionID: number | null;\n\n constructor() {\n this.text = \"\";\n this.sectionIndex = [];\n this.sections = [];\n this.imageSectionID = null;\n }\n\n static fromFeature(text: Formatted, defaultFontStack: string): TaggedString {\n const result = new TaggedString();\n for (let i = 0; i < text.sections.length; i++) {\n const section = text.sections[i];\n if (!section.image) {\n result.addTextSection(section, defaultFontStack);\n } else {\n result.addImageSection(section);\n }\n }\n return result;\n }\n\n length(): number {\n return this.text.length;\n }\n\n getSection(index: number): SectionOptions {\n return this.sections[this.sectionIndex[index]];\n }\n\n getSections(): Array {\n return this.sections;\n }\n\n getSectionIndex(index: number): number {\n return this.sectionIndex[index];\n }\n\n getCharCode(index: number): number {\n return this.text.charCodeAt(index);\n }\n\n verticalizePunctuation(skipContextChecking: boolean) {\n this.text = verticalizePunctuation(this.text, skipContextChecking);\n }\n\n trim() {\n let beginningWhitespace = 0;\n for (let i = 0;\n i < this.text.length && whitespace[this.text.charCodeAt(i)];\n i++) {\n beginningWhitespace++;\n }\n let trailingWhitespace = this.text.length;\n for (let i = this.text.length - 1;\n i >= 0 && i >= beginningWhitespace && whitespace[this.text.charCodeAt(i)];\n i--) {\n trailingWhitespace--;\n }\n this.text = this.text.substring(beginningWhitespace, trailingWhitespace);\n this.sectionIndex = this.sectionIndex.slice(beginningWhitespace, trailingWhitespace);\n }\n\n substring(start: number, end: number): TaggedString {\n const substring = new TaggedString();\n substring.text = this.text.substring(start, end);\n substring.sectionIndex = this.sectionIndex.slice(start, end);\n substring.sections = this.sections;\n return substring;\n }\n\n toString(): string {\n return this.text;\n }\n\n getMaxScale(): number {\n return this.sectionIndex.reduce((max, index) => Math.max(max, this.sections[index].scale), 0);\n }\n\n addTextSection(section: FormattedSection, defaultFontStack: string) {\n this.text += section.text;\n this.sections.push(SectionOptions.forText(section.scale, section.fontStack || defaultFontStack));\n const index = this.sections.length - 1;\n for (let i = 0; i < section.text.length; ++i) {\n this.sectionIndex.push(index);\n }\n }\n\n addImageSection(section: FormattedSection) {\n const imageName = section.image ? section.image.name : '';\n if (imageName.length === 0) {\n warnOnce(`Can't add FormattedSection with an empty image.`);\n return;\n }\n\n const nextImageSectionCharCode = this.getNextImageSectionCharCode();\n if (!nextImageSectionCharCode) {\n warnOnce(`Reached maximum number of images ${PUAend - PUAbegin + 2}`);\n return;\n }\n\n this.text += String.fromCharCode(nextImageSectionCharCode);\n this.sections.push(SectionOptions.forImage(imageName));\n this.sectionIndex.push(this.sections.length - 1);\n }\n\n getNextImageSectionCharCode(): number | null {\n if (!this.imageSectionID) {\n this.imageSectionID = PUAbegin;\n return this.imageSectionID;\n }\n\n if (this.imageSectionID >= PUAend) return null;\n return ++this.imageSectionID;\n }\n}\n\nfunction breakLines(input: TaggedString, lineBreakPoints: Array): Array {\n const lines = [];\n const text = input.text;\n let start = 0;\n for (const lineBreak of lineBreakPoints) {\n lines.push(input.substring(start, lineBreak));\n start = lineBreak;\n }\n\n if (start < text.length) {\n lines.push(input.substring(start, text.length));\n }\n return lines;\n}\n\nfunction shapeText(text: Formatted,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n glyphPositions: GlyphPositions,\n imagePositions: {[_: string]: ImagePosition},\n defaultFontStack: string,\n maxWidth: number,\n lineHeight: number,\n textAnchor: SymbolAnchor,\n textJustify: TextJustify,\n spacing: number,\n translate: [number, number],\n writingMode: 1 | 2,\n allowVerticalPlacement: boolean,\n layoutTextSize: number,\n layoutTextSizeThisZoom: number): Shaping | false {\n const logicalInput = TaggedString.fromFeature(text, defaultFontStack);\n\n if (writingMode === WritingMode.vertical) {\n logicalInput.verticalizePunctuation(allowVerticalPlacement);\n }\n\n let lines: Array = [];\n\n const lineBreaks = determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, layoutTextSize);\n\n const {processBidirectionalText, processStyledBidirectionalText} = rtlTextPlugin;\n if (processBidirectionalText && logicalInput.sections.length === 1) {\n // Bidi doesn't have to be style-aware\n const untaggedLines = processBidirectionalText(logicalInput.toString(), lineBreaks);\n for (const line of untaggedLines) {\n const taggedLine = new TaggedString();\n taggedLine.text = line;\n taggedLine.sections = logicalInput.sections;\n for (let i = 0; i < line.length; i++) {\n taggedLine.sectionIndex.push(0);\n }\n lines.push(taggedLine);\n }\n } else if (processStyledBidirectionalText) {\n // Need version of mapbox-gl-rtl-text with style support for combining RTL text with formatting\n const processedLines = processStyledBidirectionalText(logicalInput.text, logicalInput.sectionIndex, lineBreaks);\n for (const line of processedLines) {\n const taggedLine = new TaggedString();\n taggedLine.text = line[0];\n taggedLine.sectionIndex = line[1];\n taggedLine.sections = logicalInput.sections;\n lines.push(taggedLine);\n }\n } else {\n lines = breakLines(logicalInput, lineBreaks);\n }\n\n const positionedLines = [];\n const shaping = {\n positionedLines,\n text: logicalInput.toString(),\n top: translate[1],\n bottom: translate[1],\n left: translate[0],\n right: translate[0],\n writingMode,\n iconsInText: false,\n verticalizable: false,\n hasBaseline: false\n };\n\n shapeLines(shaping, glyphMap, glyphPositions, imagePositions, lines, lineHeight, textAnchor, textJustify, writingMode, spacing, allowVerticalPlacement, layoutTextSizeThisZoom);\n if (isEmpty(positionedLines)) return false;\n\n return shaping;\n}\n\n// using computed properties due to https://github.com/facebook/flow/issues/380\n/* eslint no-useless-computed-key: 0 */\n\nconst whitespace: {[_: number]: boolean} = {\n [0x09]: true, // tab\n [0x0a]: true, // newline\n [0x0b]: true, // vertical tab\n [0x0c]: true, // form feed\n [0x0d]: true, // carriage return\n [0x20]: true, // space\n};\n\nconst breakable: {[_: number]: boolean} = {\n [0x0a]: true, // newline\n [0x20]: true, // space\n [0x26]: true, // ampersand\n [0x28]: true, // left parenthesis\n [0x29]: true, // right parenthesis\n [0x2b]: true, // plus sign\n [0x2d]: true, // hyphen-minus\n [0x2f]: true, // solidus\n [0xad]: true, // soft hyphen\n [0xb7]: true, // middle dot\n [0x200b]: true, // zero-width space\n [0x2010]: true, // hyphen\n [0x2013]: true, // en dash\n [0x2027]: true // interpunct\n // Many other characters may be reasonable breakpoints\n // Consider \"neutral orientation\" characters at scriptDetection.charHasNeutralVerticalOrientation\n // See https://github.com/mapbox/mapbox-gl-js/issues/3658\n};\n\nfunction getGlyphAdvance(codePoint: number,\n section: SectionOptions,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n imagePositions: {[_: string]: ImagePosition},\n spacing: number,\n layoutTextSize: number): number {\n if (!section.imageName) {\n const positions = glyphMap[section.fontStack];\n const glyph = positions && positions.glyphs[codePoint];\n if (!glyph) return 0;\n return glyph.metrics.advance * section.scale + spacing;\n } else {\n const imagePosition = imagePositions[section.imageName];\n if (!imagePosition) return 0;\n return imagePosition.displaySize[0] * section.scale * ONE_EM / layoutTextSize + spacing;\n }\n}\n\nfunction determineAverageLineWidth(logicalInput: TaggedString,\n spacing: number,\n maxWidth: number,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n imagePositions: {[_: string]: ImagePosition},\n layoutTextSize: number) {\n let totalWidth = 0;\n\n for (let index = 0; index < logicalInput.length(); index++) {\n const section = logicalInput.getSection(index);\n totalWidth += getGlyphAdvance(logicalInput.getCharCode(index), section, glyphMap, imagePositions, spacing, layoutTextSize);\n }\n\n const lineCount = Math.max(1, Math.ceil(totalWidth / maxWidth));\n return totalWidth / lineCount;\n}\n\nfunction calculateBadness(lineWidth: number,\n targetWidth: number,\n penalty: number,\n isLastBreak: boolean) {\n const raggedness = Math.pow(lineWidth - targetWidth, 2);\n if (isLastBreak) {\n // Favor finals lines shorter than average over longer than average\n if (lineWidth < targetWidth) {\n return raggedness / 2;\n } else {\n return raggedness * 2;\n }\n }\n\n return raggedness + Math.abs(penalty) * penalty;\n}\n\nfunction calculatePenalty(codePoint: number, nextCodePoint: number, penalizableIdeographicBreak: boolean) {\n let penalty = 0;\n // Force break on newline\n if (codePoint === 0x0a) {\n penalty -= 10000;\n }\n // Penalize breaks between characters that allow ideographic breaking because\n // they are less preferable than breaks at spaces (or zero width spaces).\n if (penalizableIdeographicBreak) {\n penalty += 150;\n }\n\n // Penalize open parenthesis at end of line\n if (codePoint === 0x28 || codePoint === 0xff08) {\n penalty += 50;\n }\n\n // Penalize close parenthesis at beginning of line\n if (nextCodePoint === 0x29 || nextCodePoint === 0xff09) {\n penalty += 50;\n }\n return penalty;\n}\n\ntype Break = {\n index: number,\n x: number,\n priorBreak: ?Break,\n badness: number\n};\n\nfunction evaluateBreak(breakIndex: number,\n breakX: number,\n targetWidth: number,\n potentialBreaks: Array,\n penalty: number,\n isLastBreak: boolean): Break {\n // We could skip evaluating breaks where the line length (breakX - priorBreak.x) > maxWidth\n // ...but in fact we allow lines longer than maxWidth (if there's no break points)\n // ...and when targetWidth and maxWidth are close, strictly enforcing maxWidth can give\n // more lopsided results.\n\n let bestPriorBreak: ?Break = null;\n let bestBreakBadness = calculateBadness(breakX, targetWidth, penalty, isLastBreak);\n\n for (const potentialBreak of potentialBreaks) {\n const lineWidth = breakX - potentialBreak.x;\n const breakBadness =\n calculateBadness(lineWidth, targetWidth, penalty, isLastBreak) + potentialBreak.badness;\n if (breakBadness <= bestBreakBadness) {\n bestPriorBreak = potentialBreak;\n bestBreakBadness = breakBadness;\n }\n }\n\n return {\n index: breakIndex,\n x: breakX,\n priorBreak: bestPriorBreak,\n badness: bestBreakBadness\n };\n}\n\nfunction leastBadBreaks(lastLineBreak: ?Break): Array {\n if (!lastLineBreak) {\n return [];\n }\n return leastBadBreaks(lastLineBreak.priorBreak).concat(lastLineBreak.index);\n}\n\nfunction determineLineBreaks(logicalInput: TaggedString,\n spacing: number,\n maxWidth: number,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n imagePositions: {[_: string]: ImagePosition},\n layoutTextSize: number): Array {\n if (!logicalInput)\n return [];\n\n const potentialLineBreaks = [];\n const targetWidth = determineAverageLineWidth(logicalInput, spacing, maxWidth, glyphMap, imagePositions, layoutTextSize);\n\n const hasServerSuggestedBreakpoints = logicalInput.text.indexOf(\"\\u200b\") >= 0;\n\n let currentX = 0;\n\n for (let i = 0; i < logicalInput.length(); i++) {\n const section = logicalInput.getSection(i);\n const codePoint = logicalInput.getCharCode(i);\n if (!whitespace[codePoint]) currentX += getGlyphAdvance(codePoint, section, glyphMap, imagePositions, spacing, layoutTextSize);\n\n // Ideographic characters, spaces, and word-breaking punctuation that often appear without\n // surrounding spaces.\n if ((i < logicalInput.length() - 1)) {\n const ideographicBreak = charAllowsIdeographicBreaking(codePoint);\n if (breakable[codePoint] || ideographicBreak || section.imageName) {\n\n potentialLineBreaks.push(\n evaluateBreak(\n i + 1,\n currentX,\n targetWidth,\n potentialLineBreaks,\n calculatePenalty(codePoint, logicalInput.getCharCode(i + 1), ideographicBreak && hasServerSuggestedBreakpoints),\n false));\n }\n }\n }\n\n return leastBadBreaks(\n evaluateBreak(\n logicalInput.length(),\n currentX,\n targetWidth,\n potentialLineBreaks,\n 0,\n true));\n}\n\nfunction getAnchorAlignment(anchor: SymbolAnchor): AnchorAlignment {\n let horizontalAlign = 0.5, verticalAlign = 0.5;\n\n switch (anchor) {\n case 'right':\n case 'top-right':\n case 'bottom-right':\n horizontalAlign = 1;\n break;\n case 'left':\n case 'top-left':\n case 'bottom-left':\n horizontalAlign = 0;\n break;\n }\n\n switch (anchor) {\n case 'bottom':\n case 'bottom-right':\n case 'bottom-left':\n verticalAlign = 1;\n break;\n case 'top':\n case 'top-right':\n case 'top-left':\n verticalAlign = 0;\n break;\n }\n\n return {horizontalAlign, verticalAlign};\n}\n\nfunction shapeLines(shaping: Shaping,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n glyphPositions: GlyphPositions,\n imagePositions: {[_: string]: ImagePosition},\n lines: Array,\n lineHeight: number,\n textAnchor: SymbolAnchor,\n textJustify: TextJustify,\n writingMode: 1 | 2,\n spacing: number,\n allowVerticalPlacement: boolean,\n layoutTextSizeThisZoom: number) {\n\n let x = 0;\n let y = 0;\n\n let maxLineLength = 0;\n let maxLineHeight = 0;\n\n const justify =\n textJustify === 'right' ? 1 :\n textJustify === 'left' ? 0 : 0.5;\n\n let hasBaseline = false;\n for (const line of lines) {\n const sections = line.getSections();\n for (const section of sections) {\n if (section.imageName) continue;\n\n const glyphData = glyphMap[section.fontStack];\n if (!glyphData) continue;\n\n hasBaseline = glyphData.ascender !== undefined && glyphData.descender !== undefined;\n if (!hasBaseline) break;\n }\n if (!hasBaseline) break;\n }\n\n let lineIndex = 0;\n for (const line of lines) {\n line.trim();\n\n const lineMaxScale = line.getMaxScale();\n const maxLineOffset = (lineMaxScale - 1) * ONE_EM;\n const positionedLine = {positionedGlyphs: [], lineOffset: 0};\n shaping.positionedLines[lineIndex] = positionedLine;\n const positionedGlyphs = positionedLine.positionedGlyphs;\n let lineOffset = 0.0;\n\n if (!line.length()) {\n y += lineHeight; // Still need a line feed after empty line\n ++lineIndex;\n continue;\n }\n\n let biggestHeight = 0;\n let baselineOffset = 0;\n for (let i = 0; i < line.length(); i++) {\n const section = line.getSection(i);\n const sectionIndex = line.getSectionIndex(i);\n const codePoint = line.getCharCode(i);\n\n let sectionScale = section.scale;\n let metrics = null;\n let rect = null;\n let imageName = null;\n let verticalAdvance = ONE_EM;\n let glyphOffset = 0;\n\n const vertical = !(writingMode === WritingMode.horizontal ||\n // Don't verticalize glyphs that have no upright orientation if vertical placement is disabled.\n (!allowVerticalPlacement && !charHasUprightVerticalOrientation(codePoint)) ||\n // If vertical placement is enabled, don't verticalize glyphs that\n // are from complex text layout script, or whitespaces.\n (allowVerticalPlacement && (whitespace[codePoint] || charInComplexShapingScript(codePoint))));\n\n if (!section.imageName) {\n // Find glyph position in the glyph atlas, if bitmap is null,\n // glyphPosition will not exit in the glyphPosition map\n const glyphPositionData = glyphPositions[section.fontStack];\n if (!glyphPositionData) continue;\n if (glyphPositionData[codePoint]) {\n rect = glyphPositionData[codePoint];\n }\n const glyphData = glyphMap[section.fontStack];\n if (!glyphData) continue;\n const glyph = glyphData.glyphs[codePoint];\n if (!glyph) continue;\n\n metrics = glyph.metrics;\n verticalAdvance = codePoint !== 0x200b ? ONE_EM : 0;\n\n // In order to make different fonts aligned, they must share a general baseline that aligns with every\n // font's real baseline. Glyph's offset is counted from the top left corner, where the ascender line\n // starts.\n // First of all, each glyph's baseline lies on the center line of the shaping line. Since ascender\n // is above the baseline, the glyphOffset is the negative shift. Then, in order to make glyphs fit in\n // the shaping box, for each line, we shift the glyph with biggest height(with scale) to make its center\n // lie on the center line of the line, which will lead to a baseline shift. Then adjust the whole line\n // with the baseline offset we calculated from the shift.\n if (hasBaseline) {\n const ascender = glyphData.ascender !== undefined ? Math.abs(glyphData.ascender) : 0;\n const descender = glyphData.descender !== undefined ? Math.abs(glyphData.descender) : 0;\n const value = (ascender + descender) * sectionScale;\n if (biggestHeight < value) {\n biggestHeight = value;\n baselineOffset = (ascender - descender) / 2 * sectionScale;\n }\n glyphOffset = -ascender * sectionScale;\n } else {\n // If font's baseline is not applicable, fall back to use a default baseline offset, see\n // Shaping::yOffset. Since we're laying out at 24 points, we need also calculate how much it will\n // move when we scale up or down.\n glyphOffset = SHAPING_DEFAULT_OFFSET + (lineMaxScale - sectionScale) * ONE_EM;\n }\n } else {\n const imagePosition = imagePositions[section.imageName];\n if (!imagePosition) continue;\n imageName = section.imageName;\n shaping.iconsInText = shaping.iconsInText || true;\n rect = imagePosition.paddedRect;\n const size = imagePosition.displaySize;\n // If needed, allow to set scale factor for an image using\n // alias \"image-scale\" that could be alias for \"font-scale\"\n // when FormattedSection is an image section.\n sectionScale = sectionScale * ONE_EM / layoutTextSizeThisZoom;\n\n metrics = {width: size[0],\n height: size[1],\n left: IMAGE_PADDING,\n top: -GLYPH_PBF_BORDER,\n advance: vertical ? size[1] : size[0],\n localGlyph: false};\n\n if (!hasBaseline) {\n glyphOffset = SHAPING_DEFAULT_OFFSET + lineMaxScale * ONE_EM - size[1] * sectionScale;\n } else {\n // Based on node-fontnik: 'top = heightAboveBaseline - Ascender'(it is not valid for locally\n // generated glyph). Since the top is a constant: glyph's borderSize. So if we set image glyph with\n // 'ascender = height', it means we pull down the glyph under baseline with a distance of glyph's borderSize.\n const imageAscender = metrics.height;\n glyphOffset = -imageAscender * sectionScale;\n\n }\n verticalAdvance = metrics.advance;\n\n // Difference between height of an image and one EM at max line scale.\n // Pushes current line down if an image size is over 1 EM at max line scale.\n const offset = (vertical ? size[0] : size[1]) * sectionScale - ONE_EM * lineMaxScale;\n if (offset > 0 && offset > lineOffset) {\n lineOffset = offset;\n }\n }\n\n if (!vertical) {\n positionedGlyphs.push({glyph: codePoint, imageName, x, y: y + glyphOffset, vertical, scale: sectionScale, localGlyph: metrics.localGlyph, fontStack: section.fontStack, sectionIndex, metrics, rect});\n x += metrics.advance * sectionScale + spacing;\n } else {\n shaping.verticalizable = true;\n positionedGlyphs.push({glyph: codePoint, imageName, x, y: y + glyphOffset, vertical, scale: sectionScale, localGlyph: metrics.localGlyph, fontStack: section.fontStack, sectionIndex, metrics, rect});\n x += verticalAdvance * sectionScale + spacing;\n }\n }\n\n // Only justify if we placed at least one glyph\n if (positionedGlyphs.length !== 0) {\n const lineLength = x - spacing;\n maxLineLength = Math.max(lineLength, maxLineLength);\n // Justify the line so that its top is aligned with the current height of y, and its horizontal coordinates\n // are justified according to the TextJustifyType\n if (hasBaseline) {\n justifyLine(positionedGlyphs, justify, lineOffset, baselineOffset, lineHeight * lineMaxScale / 2);\n } else {\n // Scaled line height offset is counted in glyphOffset, so here just use an unscaled line height\n justifyLine(positionedGlyphs, justify, lineOffset, 0, lineHeight / 2);\n }\n }\n\n x = 0;\n const currentLineHeight = lineHeight * lineMaxScale + lineOffset;\n positionedLine.lineOffset = Math.max(lineOffset, maxLineOffset);\n y += currentLineHeight;\n maxLineHeight = Math.max(currentLineHeight, maxLineHeight);\n ++lineIndex;\n }\n\n const height = y;\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(textAnchor);\n align(shaping.positionedLines, justify, horizontalAlign, verticalAlign, maxLineLength, height);\n // Calculate the bounding box\n shaping.top += -verticalAlign * height;\n shaping.bottom = shaping.top + height;\n shaping.left += -horizontalAlign * maxLineLength;\n shaping.right = shaping.left + maxLineLength;\n shaping.hasBaseline = hasBaseline;\n}\n\n// justify right = 1, left = 0, center = 0.5\nfunction justifyLine(positionedGlyphs: Array,\n justify: 1 | 0 | 0.5,\n lineOffset: number,\n baselineOffset: number,\n halfLineHeight: number) {\n if (!justify && !lineOffset && !baselineOffset && !halfLineHeight) {\n return;\n }\n const end = positionedGlyphs.length - 1;\n const lastGlyph = positionedGlyphs[end];\n const lastAdvance = lastGlyph.metrics.advance * lastGlyph.scale;\n const lineIndent = (lastGlyph.x + lastAdvance) * justify;\n\n for (let j = 0; j <= end; j++) {\n positionedGlyphs[j].x -= lineIndent;\n positionedGlyphs[j].y += lineOffset + baselineOffset + halfLineHeight;\n }\n}\n\nfunction align(positionedLines: Array,\n justify: number,\n horizontalAlign: number,\n verticalAlign: number,\n maxLineLength: number,\n blockHeight: number) {\n const shiftX = (justify - horizontalAlign) * maxLineLength;\n\n const shiftY = -blockHeight * verticalAlign;\n for (const line of positionedLines) {\n for (const positionedGlyph of line.positionedGlyphs) {\n positionedGlyph.x += shiftX;\n positionedGlyph.y += shiftY;\n }\n }\n}\n\nexport type PositionedIcon = {\n image: ImagePosition,\n top: number,\n bottom: number,\n left: number,\n right: number,\n collisionPadding?: [number, number, number, number]\n};\n\nfunction shapeIcon(image: ImagePosition, iconOffset: [number, number], iconAnchor: SymbolAnchor): PositionedIcon {\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(iconAnchor);\n const dx = iconOffset[0];\n const dy = iconOffset[1];\n const x1 = dx - image.displaySize[0] * horizontalAlign;\n const x2 = x1 + image.displaySize[0];\n const y1 = dy - image.displaySize[1] * verticalAlign;\n const y2 = y1 + image.displaySize[1];\n return {image, top: y1, bottom: y2, left: x1, right: x2};\n}\n\nfunction fitIconToText(shapedIcon: PositionedIcon, shapedText: Shaping,\n textFit: string,\n padding: [ number, number, number, number ],\n iconOffset: [ number, number ], fontScale: number): PositionedIcon {\n assert(textFit !== 'none');\n assert(Array.isArray(padding) && padding.length === 4);\n assert(Array.isArray(iconOffset) && iconOffset.length === 2);\n\n const image = shapedIcon.image;\n\n let collisionPadding;\n if (image.content) {\n const content = image.content;\n const pixelRatio = image.pixelRatio || 1;\n collisionPadding = [\n content[0] / pixelRatio,\n content[1] / pixelRatio,\n image.displaySize[0] - content[2] / pixelRatio,\n image.displaySize[1] - content[3] / pixelRatio\n ];\n }\n\n // We don't respect the icon-anchor, because icon-text-fit is set. Instead,\n // the icon will be centered on the text, then stretched in the given\n // dimensions.\n\n const textLeft = shapedText.left * fontScale;\n const textRight = shapedText.right * fontScale;\n\n let top, right, bottom, left;\n if (textFit === 'width' || textFit === 'both') {\n // Stretched horizontally to the text width\n left = iconOffset[0] + textLeft - padding[3];\n right = iconOffset[0] + textRight + padding[1];\n } else {\n // Centered on the text\n left = iconOffset[0] + (textLeft + textRight - image.displaySize[0]) / 2;\n right = left + image.displaySize[0];\n }\n\n const textTop = shapedText.top * fontScale;\n const textBottom = shapedText.bottom * fontScale;\n if (textFit === 'height' || textFit === 'both') {\n // Stretched vertically to the text height\n top = iconOffset[1] + textTop - padding[0];\n bottom = iconOffset[1] + textBottom + padding[2];\n } else {\n // Centered on the text\n top = iconOffset[1] + (textTop + textBottom - image.displaySize[1]) / 2;\n bottom = top + image.displaySize[1];\n }\n\n return {image, top, right, bottom, left, collisionPadding};\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {register} from '../util/web_worker_transfer.js';\n\nclass Anchor extends Point {\n angle: any;\n z: number;\n segment: number | void;\n\n constructor(x: number, y: number, z: number, angle: number, segment?: number) {\n super(x, y);\n this.angle = angle;\n this.z = z;\n if (segment !== undefined) {\n this.segment = segment;\n }\n }\n\n clone(): Anchor {\n return new Anchor(this.x, this.y, this.z, this.angle, this.segment);\n }\n}\n\nregister(Anchor, 'Anchor');\n\nexport default Anchor;\n","// @flow\n\nexport default checkMaxAngle;\n\nimport type Point from '@mapbox/point-geometry';\nimport type Anchor from './anchor.js';\n\n/**\n * Labels placed around really sharp angles aren't readable. Check if any\n * part of the potential label has a combined angle that is too big.\n *\n * @param line\n * @param anchor The point on the line around which the label is anchored.\n * @param labelLength The length of the label in geometry units.\n * @param windowSize The check fails if the combined angles within a part of the line that is `windowSize` long is too big.\n * @param maxAngle The maximum combined angle that any window along the label is allowed to have.\n *\n * @returns {boolean} whether the label should be placed\n * @private\n */\nfunction checkMaxAngle(line: Array, anchor: Anchor, labelLength: number, windowSize: number, maxAngle: number): boolean {\n\n // horizontal labels always pass\n if (anchor.segment === undefined) return true;\n\n let p: Point = anchor;\n let index = anchor.segment + 1;\n let anchorDistance = 0;\n\n // move backwards along the line to the first segment the label appears on\n while (anchorDistance > -labelLength / 2) {\n index--;\n\n // there isn't enough room for the label after the beginning of the line\n if (index < 0) return false;\n\n anchorDistance -= line[index].dist(p);\n p = line[index];\n }\n\n anchorDistance += line[index].dist(line[index + 1]);\n index++;\n\n // store recent corners and their total angle difference\n const recentCorners = [];\n let recentAngleDelta = 0;\n\n // move forwards by the length of the label and check angles along the way\n while (anchorDistance < labelLength / 2) {\n const prev = line[index - 1];\n const current = line[index];\n const next = line[index + 1];\n\n // there isn't enough room for the label before the end of the line\n if (!next) return false;\n\n let angleDelta = prev.angleTo(current) - current.angleTo(next);\n // restrict angle to -pi..pi range\n angleDelta = Math.abs(((angleDelta + 3 * Math.PI) % (Math.PI * 2)) - Math.PI);\n\n recentCorners.push({\n distance: anchorDistance,\n angleDelta\n });\n recentAngleDelta += angleDelta;\n\n // remove corners that are far enough away from the list of recent anchors\n while (anchorDistance - recentCorners[0].distance > windowSize) {\n recentAngleDelta -= recentCorners.shift().angleDelta;\n }\n\n // the sum of angles within the window area exceeds the maximum allowed value. check fails.\n if (recentAngleDelta > maxAngle) return false;\n\n index++;\n anchorDistance += current.dist(next);\n }\n\n // no part of the line had an angle greater than the maximum allowed. check passes.\n return true;\n}\n","// @flow\n\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\n\nimport Anchor from '../symbol/anchor.js';\nimport checkMaxAngle from './check_max_angle.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {Shaping, PositionedIcon} from './shaping.js';\n\nexport {getAnchors, getCenterAnchor};\n\nfunction getLineLength(line: Array): number {\n let lineLength = 0;\n for (let k = 0; k < line.length - 1; k++) {\n lineLength += line[k].dist(line[k + 1]);\n }\n return lineLength;\n}\n\nfunction getAngleWindowSize(shapedText: ?Shaping,\n glyphSize: number,\n boxScale: number): number {\n return shapedText ?\n 3 / 5 * glyphSize * boxScale :\n 0;\n}\n\nfunction getShapedLabelLength(shapedText: ?Shaping, shapedIcon: ?PositionedIcon): number {\n return Math.max(\n shapedText ? shapedText.right - shapedText.left : 0,\n shapedIcon ? shapedIcon.right - shapedIcon.left : 0);\n}\n\nfunction getCenterAnchor(line: Array,\n maxAngle: number,\n shapedText: ?Shaping,\n shapedIcon: ?PositionedIcon,\n glyphSize: number,\n boxScale: number): ?Anchor {\n const angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale);\n const labelLength = getShapedLabelLength(shapedText, shapedIcon) * boxScale;\n\n let prevDistance = 0;\n const centerDistance = getLineLength(line) / 2;\n\n for (let i = 0; i < line.length - 1; i++) {\n\n const a = line[i],\n b = line[i + 1];\n\n const segmentDistance = a.dist(b);\n\n if (prevDistance + segmentDistance > centerDistance) {\n // The center is on this segment\n const t = (centerDistance - prevDistance) / segmentDistance,\n x = interpolate(a.x, b.x, t),\n y = interpolate(a.y, b.y, t);\n\n const anchor = new Anchor(x, y, 0, b.angleTo(a), i);\n if (!angleWindowSize || checkMaxAngle(line, anchor, labelLength, angleWindowSize, maxAngle)) {\n return anchor;\n } else {\n return;\n }\n }\n\n prevDistance += segmentDistance;\n }\n}\n\nfunction getAnchors(line: Array,\n spacing: number,\n maxAngle: number,\n shapedText: ?Shaping,\n shapedIcon: ?PositionedIcon,\n glyphSize: number,\n boxScale: number,\n overscaling: number,\n tileExtent: number): Array {\n\n // Resample a line to get anchor points for labels and check that each\n // potential label passes text-max-angle check and has enough froom to fit\n // on the line.\n\n const angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale);\n const shapedLabelLength = getShapedLabelLength(shapedText, shapedIcon);\n const labelLength = shapedLabelLength * boxScale;\n\n // Is the line continued from outside the tile boundary?\n const isLineContinued = line[0].x === 0 || line[0].x === tileExtent || line[0].y === 0 || line[0].y === tileExtent;\n\n // Is the label long, relative to the spacing?\n // If so, adjust the spacing so there is always a minimum space of `spacing / 4` between label edges.\n if (spacing - labelLength < spacing / 4) {\n spacing = labelLength + spacing / 4;\n }\n\n // Offset the first anchor by:\n // Either half the label length plus a fixed extra offset if the line is not continued\n // Or half the spacing if the line is continued.\n\n // For non-continued lines, add a bit of fixed extra offset to avoid collisions at T intersections.\n const fixedExtraOffset = glyphSize * 2;\n\n const offset = !isLineContinued ?\n ((shapedLabelLength / 2 + fixedExtraOffset) * boxScale * overscaling) % spacing :\n (spacing / 2 * overscaling) % spacing;\n\n return resample(line, offset, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, false, tileExtent);\n}\n\nfunction resample(line: Array, offset: number, spacing: number, angleWindowSize: number, maxAngle: number, labelLength: number, isLineContinued: boolean, placeAtMiddle: boolean, tileExtent: number) {\n\n const halfLabelLength = labelLength / 2;\n const lineLength = getLineLength(line);\n\n let distance = 0,\n markedDistance = offset - spacing;\n\n let anchors = [];\n\n for (let i = 0; i < line.length - 1; i++) {\n\n const a = line[i],\n b = line[i + 1];\n\n const segmentDist = a.dist(b),\n angle = b.angleTo(a);\n\n while (markedDistance + spacing < distance + segmentDist) {\n markedDistance += spacing;\n\n const t = (markedDistance - distance) / segmentDist,\n x = interpolate(a.x, b.x, t),\n y = interpolate(a.y, b.y, t);\n\n // Check that the point is within the tile boundaries and that\n // the label would fit before the beginning and end of the line\n // if placed at this point.\n if (x >= 0 && x < tileExtent && y >= 0 && y < tileExtent &&\n markedDistance - halfLabelLength >= 0 &&\n markedDistance + halfLabelLength <= lineLength) {\n const anchor = new Anchor(x, y, 0, angle, i);\n anchor._round();\n\n if (!angleWindowSize || checkMaxAngle(line, anchor, labelLength, angleWindowSize, maxAngle)) {\n anchors.push(anchor);\n }\n }\n }\n\n distance += segmentDist;\n }\n\n if (!placeAtMiddle && !anchors.length && !isLineContinued) {\n // The first attempt at finding anchors at which labels can be placed failed.\n // Try again, but this time just try placing one anchor at the middle of the line.\n // This has the most effect for short lines in overscaled tiles, since the\n // initial offset used in overscaled tiles is calculated to align labels with positions in\n // parent tiles instead of placing the label as close to the beginning as possible.\n anchors = resample(line, distance / 2, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, true, tileExtent);\n }\n\n return anchors;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nexport default clipLine;\n\n/**\n * Returns the part of a multiline that intersects with the provided rectangular box.\n *\n * @param lines\n * @param x1 the left edge of the box\n * @param y1 the top edge of the box\n * @param x2 the right edge of the box\n * @param y2 the bottom edge of the box\n * @returns lines\n * @private\n */\nfunction clipLine(lines: Array>, x1: number, y1: number, x2: number, y2: number): Array> {\n const clippedLines = [];\n\n for (let l = 0; l < lines.length; l++) {\n const line = lines[l];\n let clippedLine;\n\n for (let i = 0; i < line.length - 1; i++) {\n let p0 = line[i];\n let p1 = line[i + 1];\n\n if (p0.x < x1 && p1.x < x1) {\n continue;\n } else if (p0.x < x1) {\n p0 = new Point(x1, p0.y + (p1.y - p0.y) * ((x1 - p0.x) / (p1.x - p0.x)))._round();\n } else if (p1.x < x1) {\n p1 = new Point(x1, p0.y + (p1.y - p0.y) * ((x1 - p0.x) / (p1.x - p0.x)))._round();\n }\n\n if (p0.y < y1 && p1.y < y1) {\n continue;\n } else if (p0.y < y1) {\n p0 = new Point(p0.x + (p1.x - p0.x) * ((y1 - p0.y) / (p1.y - p0.y)), y1)._round();\n } else if (p1.y < y1) {\n p1 = new Point(p0.x + (p1.x - p0.x) * ((y1 - p0.y) / (p1.y - p0.y)), y1)._round();\n }\n\n if (p0.x >= x2 && p1.x >= x2) {\n continue;\n } else if (p0.x >= x2) {\n p0 = new Point(x2, p0.y + (p1.y - p0.y) * ((x2 - p0.x) / (p1.x - p0.x)))._round();\n } else if (p1.x >= x2) {\n p1 = new Point(x2, p0.y + (p1.y - p0.y) * ((x2 - p0.x) / (p1.x - p0.x)))._round();\n }\n\n if (p0.y >= y2 && p1.y >= y2) {\n continue;\n } else if (p0.y >= y2) {\n p0 = new Point(p0.x + (p1.x - p0.x) * ((y2 - p0.y) / (p1.y - p0.y)), y2)._round();\n } else if (p1.y >= y2) {\n p1 = new Point(p0.x + (p1.x - p0.x) * ((y2 - p0.y) / (p1.y - p0.y)), y2)._round();\n }\n\n if (!clippedLine || !p0.equals(clippedLine[clippedLine.length - 1])) {\n clippedLine = [p0];\n clippedLines.push(clippedLine);\n }\n\n clippedLine.push(p1);\n }\n }\n\n return clippedLines;\n}\n","const INF = 1e20;\n\nexport default class TinySDF {\n constructor({\n fontSize = 24,\n buffer = 3,\n radius = 8,\n cutoff = 0.25,\n fontFamily = 'sans-serif',\n fontWeight = 'normal',\n fontStyle = 'normal'\n } = {}) {\n this.buffer = buffer;\n this.cutoff = cutoff;\n this.radius = radius;\n\n // make the canvas size big enough to both have the specified buffer around the glyph\n // for \"halo\", and account for some glyphs possibly being larger than their font size\n const size = this.size = fontSize + buffer * 4;\n\n const canvas = this._createCanvas(size);\n const ctx = this.ctx = canvas.getContext('2d', {willReadFrequently: true});\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n ctx.fillStyle = 'black';\n\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Uint16Array(size);\n }\n\n _createCanvas(size) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = size;\n return canvas;\n }\n\n draw(char) {\n const {\n width: glyphAdvance,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n actualBoundingBoxLeft,\n actualBoundingBoxRight\n } = this.ctx.measureText(char);\n\n // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n // The remainder is implicitly encoded in the rasterization\n const glyphTop = Math.ceil(actualBoundingBoxAscent);\n const glyphLeft = 0;\n\n // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n const glyphWidth = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft)));\n const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n\n const width = glyphWidth + 2 * this.buffer;\n const height = glyphHeight + 2 * this.buffer;\n\n const len = Math.max(width * height, 0);\n const data = new Uint8ClampedArray(len);\n const glyph = {data, width, height, glyphWidth, glyphHeight, glyphTop, glyphLeft, glyphAdvance};\n if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n\n const {ctx, buffer, gridInner, gridOuter} = this;\n ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n ctx.fillText(char, buffer, buffer + glyphTop);\n const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n\n // Initialize grids outside the glyph range to alpha 0\n gridOuter.fill(INF, 0, len);\n gridInner.fill(0, 0, len);\n\n for (let y = 0; y < glyphHeight; y++) {\n for (let x = 0; x < glyphWidth; x++) {\n const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n if (a === 0) continue; // empty pixels\n\n const j = (y + buffer) * width + x + buffer;\n\n if (a === 1) { // fully drawn pixels\n gridOuter[j] = 0;\n gridInner[j] = INF;\n\n } else { // aliased pixels\n const d = 0.5 - a;\n gridOuter[j] = d > 0 ? d * d : 0;\n gridInner[j] = d < 0 ? d * d : 0;\n }\n }\n }\n\n edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n\n for (let i = 0; i < len; i++) {\n const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n }\n\n return glyph;\n }\n}\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, x0, y0, width, height, gridSize, f, v, z) {\n for (let x = x0; x < x0 + width; x++) edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n for (let y = y0; y < y0 + height; y++) edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = INF;\n f[0] = grid[offset];\n\n for (let q = 1, k = 0, s = 0; q < length; q++) {\n f[q] = grid[offset + q * stride];\n const q2 = q * q;\n do {\n const r = v[k];\n s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n } while (s <= z[k] && --k > -1);\n\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = INF;\n }\n\n for (let q = 0, k = 0; q < length; q++) {\n while (z[k + 1] < q) k++;\n const r = v[k];\n const qr = q - r;\n grid[offset + q * stride] = f[r] + qr * qr;\n }\n}\n","// @flow\n\nimport loadGlyphRange from '../style/load_glyph_range.js';\n\nimport TinySDF from '@mapbox/tiny-sdf';\nimport isChar from '../util/is_char_in_unicode_block.js';\nimport {asyncAll} from '../util/util.js';\nimport {AlphaImage} from '../util/image.js';\n\nimport type {StyleGlyph} from '../style/style_glyph.js';\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\n\n/*\n SDF_SCALE controls the pixel density of locally generated glyphs relative\n to \"normal\" SDFs which are generated at 24pt font and a \"pixel ratio\" of 1.\n The GlyphManager will generate glyphs SDF_SCALE times as large,\n but with the same glyph metrics, and the quad generation code will scale them\n back down so they display at the same size.\n\n The choice of SDF_SCALE is a trade-off between performance and quality.\n Glyph generation time grows quadratically with the the scale, while quality\n improvements drop off rapidly when the scale is higher than the pixel ratio\n of the device. The scale of 2 buys noticeable improvements on HDPI screens\n at acceptable cost.\n\n The scale can be any value, but in order to avoid small distortions, these\n pixel-based values must come out to integers:\n - \"localGlyphPadding\" in GlyphAtlas\n - Font/Canvas/Buffer size for TinySDF\n localGlyphPadding + buffer should equal 4 * SDF_SCALE. So if you wanted to\n use an SDF_SCALE of 1.75, you could manually set localGlyphAdding to 2 and\n buffer to 5.\n*/\nexport const SDF_SCALE = 2;\n\ntype Entry = {\n // null means we've requested the range, but the glyph wasn't included in the result.\n glyphs: {[id: number]: StyleGlyph | null},\n requests: {[range: number]: Array>},\n ranges: {[range: number]: boolean | null},\n tinySDF?: TinySDF,\n ascender?: number,\n descender?: number\n};\n\nexport const LocalGlyphMode = {\n none: 0,\n ideographs: 1,\n all: 2\n};\n\nclass GlyphManager {\n requestManager: RequestManager;\n localFontFamily: ?string;\n localGlyphMode: number;\n entries: {[_: string]: Entry};\n // Multiple fontstacks may share the same local glyphs, so keep an index\n // into the glyphs based soley on font weight\n localGlyphs: {[_: string]: {glyphs: {[id: number]: StyleGlyph | null}, ascender: ?number, descender: ?number}};\n url: ?string;\n\n // exposed as statics to enable stubbing in unit tests\n static loadGlyphRange: typeof loadGlyphRange;\n static TinySDF: Class;\n\n constructor(requestManager: RequestManager, localGlyphMode: number, localFontFamily: ?string) {\n this.requestManager = requestManager;\n this.localGlyphMode = localGlyphMode;\n this.localFontFamily = localFontFamily;\n this.entries = {};\n this.localGlyphs = {\n // Only these four font weights are supported\n '200': {},\n '400': {},\n '500': {},\n '900': {}\n };\n }\n\n setURL(url: ?string) {\n this.url = url;\n }\n\n getGlyphs(glyphs: {[stack: string]: Array}, callback: Callback<{[stack: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}}>) {\n const all = [];\n\n for (const stack in glyphs) {\n for (const id of glyphs[stack]) {\n all.push({stack, id});\n }\n }\n\n asyncAll(all, ({stack, id}, fnCallback: Callback<{stack: string, id: number, glyph: ?StyleGlyph}>) => {\n let entry = this.entries[stack];\n if (!entry) {\n entry = this.entries[stack] = {\n glyphs: {},\n requests: {},\n ranges: {},\n ascender: undefined,\n descender: undefined\n };\n }\n\n let glyph = entry.glyphs[id];\n if (glyph !== undefined) {\n fnCallback(null, {stack, id, glyph});\n return;\n }\n\n glyph = this._tinySDF(entry, stack, id);\n if (glyph) {\n entry.glyphs[id] = glyph;\n fnCallback(null, {stack, id, glyph});\n return;\n }\n\n const range = Math.floor(id / 256);\n if (range * 256 > 65535) {\n fnCallback(new Error('glyphs > 65535 not supported'));\n return;\n }\n\n if (entry.ranges[range]) {\n fnCallback(null, {stack, id, glyph});\n return;\n }\n\n let requests = entry.requests[range];\n if (!requests) {\n requests = entry.requests[range] = [];\n GlyphManager.loadGlyphRange(stack, range, (this.url: any), this.requestManager,\n (err, response: ?{glyphs: {[_: number]: StyleGlyph | null}, ascender?: number, descender?: number}) => {\n if (response) {\n entry.ascender = response.ascender;\n entry.descender = response.descender;\n for (const id in response.glyphs) {\n if (!this._doesCharSupportLocalGlyph(+id)) {\n entry.glyphs[+id] = response.glyphs[+id];\n }\n }\n entry.ranges[range] = true;\n }\n for (const cb of requests) {\n cb(err, response);\n }\n delete entry.requests[range];\n });\n }\n\n requests.push((err, result: ?{glyphs: {[_: number]: StyleGlyph | null}, ascender?: number, descender?: number}) => {\n if (err) {\n fnCallback(err);\n } else if (result) {\n fnCallback(null, {stack, id, glyph: result.glyphs[id] || null});\n }\n });\n }, (err, glyphs: ?Array<{stack: string, id: number, glyph: ?StyleGlyph}>) => {\n if (err) {\n callback(err);\n } else if (glyphs) {\n const result = {};\n\n for (const {stack, id, glyph} of glyphs) {\n // Clone the glyph so that our own copy of its ArrayBuffer doesn't get transferred.\n if (result[stack] === undefined) result[stack] = {};\n if (result[stack].glyphs === undefined) result[stack].glyphs = {};\n result[stack].glyphs[id] = glyph && {\n id: glyph.id,\n bitmap: glyph.bitmap.clone(),\n metrics: glyph.metrics\n };\n result[stack].ascender = this.entries[stack].ascender;\n result[stack].descender = this.entries[stack].descender;\n }\n\n callback(null, result);\n }\n });\n }\n\n _doesCharSupportLocalGlyph(id: number): boolean {\n if (this.localGlyphMode === LocalGlyphMode.none) {\n return false;\n } else if (this.localGlyphMode === LocalGlyphMode.all) {\n return !!this.localFontFamily;\n } else {\n /* eslint-disable new-cap */\n return !!this.localFontFamily &&\n ((isChar['CJK Unified Ideographs'](id) ||\n isChar['Hangul Syllables'](id) ||\n isChar['Hiragana'](id) ||\n isChar['Katakana'](id)) ||\n // gl-native parity: Extend Ideographs rasterization range to include CJK symbols and punctuations\n isChar['CJK Symbols and Punctuation'](id));\n /* eslint-enable new-cap */\n }\n }\n\n _tinySDF(entry: Entry, stack: string, id: number): ?StyleGlyph {\n const fontFamily = this.localFontFamily;\n if (!fontFamily || !this._doesCharSupportLocalGlyph(id)) return;\n\n let tinySDF = entry.tinySDF;\n if (!tinySDF) {\n let fontWeight = '400';\n if (/bold/i.test(stack)) {\n fontWeight = '900';\n } else if (/medium/i.test(stack)) {\n fontWeight = '500';\n } else if (/light/i.test(stack)) {\n fontWeight = '200';\n }\n\n const fontSize = 24 * SDF_SCALE;\n const buffer = 3 * SDF_SCALE;\n const radius = 8 * SDF_SCALE;\n tinySDF = entry.tinySDF = new GlyphManager.TinySDF({fontFamily, fontWeight, fontSize, buffer, radius});\n tinySDF.fontWeight = fontWeight;\n }\n\n if (this.localGlyphs[tinySDF.fontWeight][id]) {\n return this.localGlyphs[tinySDF.fontWeight][id];\n }\n\n const char = String.fromCharCode(id);\n const {data, width, height, glyphWidth, glyphHeight, glyphLeft, glyphTop, glyphAdvance} = tinySDF.draw(char);\n /*\n TinySDF's \"top\" is the distance from the alphabetic baseline to the\n top of the glyph.\n\n Server-generated fonts specify \"top\" relative to an origin above the\n em box (the origin comes from FreeType, but I'm unclear on exactly\n how it's derived)\n ref: https://github.com/mapbox/sdf-glyph-foundry\n\n Server fonts don't yet include baseline information, so we can't line\n up exactly with them (and they don't line up with each other)\n ref: https://github.com/mapbox/node-fontnik/pull/160\n\n To approximately align TinySDF glyphs with server-provided glyphs, we\n use this baseline adjustment factor calibrated to be in between DIN Pro\n and Arial Unicode (but closer to Arial Unicode)\n */\n const baselineAdjustment = 27;\n\n const glyph = this.localGlyphs[tinySDF.fontWeight][id] = {\n id,\n bitmap: new AlphaImage({width, height}, data),\n metrics: {\n width: glyphWidth / SDF_SCALE,\n height: glyphHeight / SDF_SCALE,\n left: glyphLeft / SDF_SCALE,\n top: glyphTop / SDF_SCALE - baselineAdjustment,\n advance: glyphAdvance / SDF_SCALE,\n localGlyph: true\n }\n };\n return glyph;\n }\n}\n\nGlyphManager.loadGlyphRange = loadGlyphRange;\nGlyphManager.TinySDF = TinySDF;\n\nexport default GlyphManager;\n","// @flow\n\nimport {getArrayBuffer, ResourceType} from '../util/ajax.js';\n\nimport parseGlyphPBF from './parse_glyph_pbf.js';\n\nimport type {StyleGlyph} from './style_glyph.js';\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\n\nexport default function (fontstack: string,\n range: number,\n urlTemplate: string,\n requestManager: RequestManager,\n callback: Callback<{glyphs: {[number]: StyleGlyph | null}, ascender?: number, descender?: number}>) {\n const begin = range * 256;\n const end = begin + 255;\n\n const request = requestManager.transformRequest(\n requestManager.normalizeGlyphsURL(urlTemplate)\n .replace('{fontstack}', fontstack)\n .replace('{range}', `${begin}-${end}`),\n ResourceType.Glyphs);\n\n getArrayBuffer(request, (err: ?Error, data: ?ArrayBuffer) => {\n if (err) {\n callback(err);\n } else if (data) {\n const glyphs = {};\n const glyphData = parseGlyphPBF(data);\n for (const glyph of glyphData.glyphs) {\n glyphs[glyph.id] = glyph;\n }\n callback(null, {glyphs, ascender: glyphData.ascender, descender: glyphData.descender});\n }\n });\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf.js';\n\nimport type Anchor from './anchor.js';\nimport type {PositionedIcon, Shaping} from './shaping.js';\nimport {IMAGE_PADDING} from '../render/image_atlas.js';\nimport {SDF_SCALE} from '../render/glyph_manager.js';\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type {Feature} from '../style-spec/expression/index.js';\nimport type {StyleImage} from '../style/style_image.js';\nimport {isVerticalClosePunctuation, isVerticalOpenPunctuation} from '../util/verticalize_punctuation.js';\nimport ONE_EM from './one_em.js';\nimport {warnOnce} from '../util/util.js';\n\ntype Size = {| fixed: number, stretch: number |};\n\n/**\n * A textured quad for rendering a single icon or glyph.\n *\n * The zoom range the glyph can be shown is defined by minScale and maxScale.\n *\n * @param tl The offset of the top left corner from the anchor.\n * @param tr The offset of the top right corner from the anchor.\n * @param bl The offset of the bottom left corner from the anchor.\n * @param br The offset of the bottom right corner from the anchor.\n * @param tex The texture coordinates.\n *\n * @private\n */\nexport type SymbolQuad = {\n tl: Point,\n tr: Point,\n bl: Point,\n br: Point,\n tex: {\n x: number,\n y: number,\n w: number,\n h: number\n },\n pixelOffsetTL: Point,\n pixelOffsetBR: Point,\n writingMode: any | void,\n glyphOffset: [number, number],\n sectionIndex: number,\n isSDF: boolean,\n minFontScaleX: number,\n minFontScaleY: number\n};\n\n// If you have a 10px icon that isn't perfectly aligned to the pixel grid it will cover 11 actual\n// pixels. The quad needs to be padded to account for this, otherwise they'll look slightly clipped\n// on one edge in some cases.\nconst border = IMAGE_PADDING;\n\n/**\n * Create the quads used for rendering an icon.\n * @private\n */\nexport function getIconQuads(\n shapedIcon: PositionedIcon,\n iconRotate: number,\n isSDFIcon: boolean,\n hasIconTextFit: boolean): Array {\n const quads = [];\n\n const image = shapedIcon.image;\n const pixelRatio = image.pixelRatio;\n const imageWidth = image.paddedRect.w - 2 * border;\n const imageHeight = image.paddedRect.h - 2 * border;\n\n const iconWidth = shapedIcon.right - shapedIcon.left;\n const iconHeight = shapedIcon.bottom - shapedIcon.top;\n\n const stretchX = image.stretchX || [[0, imageWidth]];\n const stretchY = image.stretchY || [[0, imageHeight]];\n\n const reduceRanges = (sum: number, range: [number, number]) => sum + range[1] - range[0];\n const stretchWidth = stretchX.reduce(reduceRanges, 0);\n const stretchHeight = stretchY.reduce(reduceRanges, 0);\n const fixedWidth = imageWidth - stretchWidth;\n const fixedHeight = imageHeight - stretchHeight;\n\n let stretchOffsetX = 0;\n let stretchContentWidth = stretchWidth;\n let stretchOffsetY = 0;\n let stretchContentHeight = stretchHeight;\n let fixedOffsetX = 0;\n let fixedContentWidth = fixedWidth;\n let fixedOffsetY = 0;\n let fixedContentHeight = fixedHeight;\n\n if (image.content && hasIconTextFit) {\n const content = image.content;\n stretchOffsetX = sumWithinRange(stretchX, 0, content[0]);\n stretchOffsetY = sumWithinRange(stretchY, 0, content[1]);\n stretchContentWidth = sumWithinRange(stretchX, content[0], content[2]);\n stretchContentHeight = sumWithinRange(stretchY, content[1], content[3]);\n fixedOffsetX = content[0] - stretchOffsetX;\n fixedOffsetY = content[1] - stretchOffsetY;\n fixedContentWidth = content[2] - content[0] - stretchContentWidth;\n fixedContentHeight = content[3] - content[1] - stretchContentHeight;\n }\n\n const makeBox = (left: Size, top: Size, right: Size, bottom: Size) => {\n\n const leftEm = getEmOffset(left.stretch - stretchOffsetX, stretchContentWidth, iconWidth, shapedIcon.left);\n const leftPx = getPxOffset(left.fixed - fixedOffsetX, fixedContentWidth, left.stretch, stretchWidth);\n\n const topEm = getEmOffset(top.stretch - stretchOffsetY, stretchContentHeight, iconHeight, shapedIcon.top);\n const topPx = getPxOffset(top.fixed - fixedOffsetY, fixedContentHeight, top.stretch, stretchHeight);\n\n const rightEm = getEmOffset(right.stretch - stretchOffsetX, stretchContentWidth, iconWidth, shapedIcon.left);\n const rightPx = getPxOffset(right.fixed - fixedOffsetX, fixedContentWidth, right.stretch, stretchWidth);\n\n const bottomEm = getEmOffset(bottom.stretch - stretchOffsetY, stretchContentHeight, iconHeight, shapedIcon.top);\n const bottomPx = getPxOffset(bottom.fixed - fixedOffsetY, fixedContentHeight, bottom.stretch, stretchHeight);\n\n const tl = new Point(leftEm, topEm);\n const tr = new Point(rightEm, topEm);\n const br = new Point(rightEm, bottomEm);\n const bl = new Point(leftEm, bottomEm);\n const pixelOffsetTL = new Point(leftPx / pixelRatio, topPx / pixelRatio);\n const pixelOffsetBR = new Point(rightPx / pixelRatio, bottomPx / pixelRatio);\n\n const angle = iconRotate * Math.PI / 180;\n\n if (angle) {\n const sin = Math.sin(angle),\n cos = Math.cos(angle),\n matrix = [cos, -sin, sin, cos];\n\n tl._matMult(matrix);\n tr._matMult(matrix);\n bl._matMult(matrix);\n br._matMult(matrix);\n }\n\n const x1 = left.stretch + left.fixed;\n const x2 = right.stretch + right.fixed;\n const y1 = top.stretch + top.fixed;\n const y2 = bottom.stretch + bottom.fixed;\n\n const subRect = {\n x: image.paddedRect.x + border + x1,\n y: image.paddedRect.y + border + y1,\n w: x2 - x1,\n h: y2 - y1\n };\n\n const minFontScaleX = fixedContentWidth / pixelRatio / iconWidth;\n const minFontScaleY = fixedContentHeight / pixelRatio / iconHeight;\n\n // Icon quad is padded, so texture coordinates also need to be padded.\n return {tl, tr, bl, br, tex: subRect, writingMode: undefined, glyphOffset: [0, 0], sectionIndex: 0, pixelOffsetTL, pixelOffsetBR, minFontScaleX, minFontScaleY, isSDF: isSDFIcon};\n };\n\n if (!hasIconTextFit || (!image.stretchX && !image.stretchY)) {\n quads.push(makeBox(\n {fixed: 0, stretch: -1},\n {fixed: 0, stretch: -1},\n {fixed: 0, stretch: imageWidth + 1},\n {fixed: 0, stretch: imageHeight + 1}));\n } else {\n const xCuts = stretchZonesToCuts(stretchX, fixedWidth, stretchWidth);\n const yCuts = stretchZonesToCuts(stretchY, fixedHeight, stretchHeight);\n\n for (let xi = 0; xi < xCuts.length - 1; xi++) {\n const x1 = xCuts[xi];\n const x2 = xCuts[xi + 1];\n for (let yi = 0; yi < yCuts.length - 1; yi++) {\n const y1 = yCuts[yi];\n const y2 = yCuts[yi + 1];\n quads.push(makeBox(x1, y1, x2, y2));\n }\n }\n }\n\n return quads;\n}\n\nfunction sumWithinRange(ranges: Array<[number, number]>, min: number, max: number) {\n let sum = 0;\n for (const range of ranges) {\n sum += Math.max(min, Math.min(max, range[1])) - Math.max(min, Math.min(max, range[0]));\n }\n return sum;\n}\n\nfunction stretchZonesToCuts(stretchZones: Array<[number, number]>, fixedSize: number, stretchSize: number) {\n const cuts = [{fixed: -border, stretch: 0}];\n\n for (const [c1, c2] of stretchZones) {\n const last = cuts[cuts.length - 1];\n cuts.push({\n fixed: c1 - last.stretch,\n stretch: last.stretch\n });\n cuts.push({\n fixed: c1 - last.stretch,\n stretch: last.stretch + (c2 - c1)\n });\n }\n cuts.push({\n fixed: fixedSize + border,\n stretch: stretchSize\n });\n return cuts;\n}\n\nfunction getEmOffset(stretchOffset: number, stretchSize: number, iconSize: number, iconOffset: number) {\n return stretchOffset / stretchSize * iconSize + iconOffset;\n}\n\nfunction getPxOffset(fixedOffset: number, fixedSize: number, stretchOffset: number, stretchSize: number) {\n return fixedOffset - fixedSize * stretchOffset / stretchSize;\n}\n\nfunction getRotateOffset(textOffset: [number, number]) {\n const x = textOffset[0], y = textOffset[1];\n const product = x * y;\n if (product > 0) {\n return [x, -y];\n } else if (product < 0) {\n return [-x, y];\n } else if (x === 0) {\n return [y, x];\n } else {\n return [y, -x];\n }\n}\n\nfunction getMidlineOffset(shaping: Shaping, lineHeight: number, previousOffset: number, lineIndex: number) {\n const currentLineHeight = (lineHeight + shaping.positionedLines[lineIndex].lineOffset);\n if (lineIndex === 0) {\n return previousOffset + currentLineHeight / 2.0;\n }\n const aboveLineHeight = (lineHeight + shaping.positionedLines[lineIndex - 1].lineOffset);\n return previousOffset + (currentLineHeight + aboveLineHeight) / 2.0;\n}\n\n/**\n * Create the quads used for rendering a text label.\n * @private\n */\nexport function getGlyphQuads(anchor: Anchor,\n shaping: Shaping,\n textOffset: [number, number],\n layer: SymbolStyleLayer,\n alongLine: boolean,\n feature: Feature,\n imageMap: {[_: string]: StyleImage},\n allowVerticalPlacement: boolean): Array {\n const quads = [];\n if (shaping.positionedLines.length === 0) return quads;\n\n const textRotate = layer.layout.get('text-rotate').evaluate(feature, {}) * Math.PI / 180;\n const rotateOffset = getRotateOffset(textOffset);\n\n let shapingHeight = Math.abs(shaping.top - shaping.bottom);\n for (const line of shaping.positionedLines) {\n shapingHeight -= line.lineOffset;\n }\n const lineCounts = shaping.positionedLines.length;\n const lineHeight = shapingHeight / lineCounts;\n let currentOffset = shaping.top - textOffset[1];\n for (let lineIndex = 0; lineIndex < lineCounts; ++lineIndex) {\n const line = shaping.positionedLines[lineIndex];\n currentOffset = getMidlineOffset(shaping, lineHeight, currentOffset, lineIndex);\n for (const positionedGlyph of line.positionedGlyphs) {\n if (!positionedGlyph.rect) continue;\n const textureRect = positionedGlyph.rect || {};\n\n // The rects have an additional buffer that is not included in their size.\n const glyphPadding = 1.0;\n let rectBuffer = GLYPH_PBF_BORDER + glyphPadding;\n let isSDF = true;\n let pixelRatio = 1.0;\n let lineOffset = 0.0;\n if (positionedGlyph.imageName) {\n const image = imageMap[positionedGlyph.imageName];\n if (!image) continue;\n if (image.sdf) {\n warnOnce(\"SDF images are not supported in formatted text and will be ignored.\");\n continue;\n }\n isSDF = false;\n pixelRatio = image.pixelRatio;\n rectBuffer = IMAGE_PADDING / pixelRatio;\n }\n\n const rotateVerticalGlyph = (alongLine || allowVerticalPlacement) && positionedGlyph.vertical;\n const halfAdvance = positionedGlyph.metrics.advance * positionedGlyph.scale / 2;\n const metrics = positionedGlyph.metrics;\n const rect = positionedGlyph.rect;\n if (rect === null) continue;\n\n // Align images and scaled glyphs in the middle of a vertical line.\n if (allowVerticalPlacement && shaping.verticalizable) {\n // image's advance for vertical shaping is its height, so that we have to take the difference into\n // account after image glyph is rotated\n lineOffset = positionedGlyph.imageName ? halfAdvance - positionedGlyph.metrics.width * positionedGlyph.scale / 2.0 : 0;\n }\n\n const glyphOffset = alongLine ?\n [positionedGlyph.x + halfAdvance, positionedGlyph.y] :\n [0, 0];\n\n let builtInOffset = [0, 0];\n let verticalizedLabelOffset = [0, 0];\n let useRotateOffset = false;\n if (!alongLine) {\n if (rotateVerticalGlyph) {\n // Vertical POI labels that are rotated 90deg CW and whose glyphs must preserve upright orientation\n // need to be rotated 90deg CCW. After a quad is rotated, it is translated to the original built-in offset.\n verticalizedLabelOffset =\n [positionedGlyph.x + halfAdvance + rotateOffset[0], positionedGlyph.y + rotateOffset[1] - lineOffset];\n useRotateOffset = true;\n } else {\n builtInOffset = [positionedGlyph.x + halfAdvance + textOffset[0], positionedGlyph.y + textOffset[1] - lineOffset];\n }\n }\n\n const paddedWidth =\n rect.w * positionedGlyph.scale / (pixelRatio * (positionedGlyph.localGlyph ? SDF_SCALE : 1));\n const paddedHeight =\n rect.h * positionedGlyph.scale / (pixelRatio * (positionedGlyph.localGlyph ? SDF_SCALE : 1));\n\n let tl, tr, bl, br;\n if (!rotateVerticalGlyph) {\n const x1 = (metrics.left - rectBuffer) * positionedGlyph.scale - halfAdvance + builtInOffset[0];\n const y1 = (-metrics.top - rectBuffer) * positionedGlyph.scale + builtInOffset[1];\n const x2 = x1 + paddedWidth;\n const y2 = y1 + paddedHeight;\n\n tl = new Point(x1, y1);\n tr = new Point(x2, y1);\n bl = new Point(x1, y2);\n br = new Point(x2, y2);\n } else {\n // For vertical glyph placement, follow the steps to put the glyph bitmap in right coordinates:\n // 1. Rotate the glyph by using original glyph coordinates instead of padded coordinates, since the\n // rotation center and xOffsetCorrection are all based on original glyph's size.\n // 2. Do x offset correction so that 'tl' is shifted to the same x coordinate before rotation.\n // 3. Adjust glyph positon for 'tl' by applying vertial padding and horizontal shift, now 'tl' is the\n // coordinate where we draw the glyph bitmap.\n // 4. Calculate other three bitmap coordinates.\n\n // Vertical-supporting glyphs are laid out in 24x24 point boxes (1 square em)\n // In horizontal orientation, the \"yShift\" is the negative value of the height that\n // the glyph is above the horizontal midline.\n // By rotating counter-clockwise around the point at the center of the left\n // edge of a 24x24 layout box centered below the midline, we align the midline\n // of the rotated glyphs with the horizontal midline, so the yShift is no longer\n // necessary, but we also pull the glyph to the left along the x axis.\n const yShift = (positionedGlyph.y - currentOffset);\n const center = new Point(-halfAdvance, halfAdvance - yShift);\n const verticalRotation = -Math.PI / 2;\n const verticalOffsetCorrection = new Point(...verticalizedLabelOffset);\n // Relative position before rotation\n // tl ----- tr\n // | |\n // | |\n // bl ----- br\n tl = new Point(-halfAdvance + builtInOffset[0], builtInOffset[1]);\n tl._rotateAround(verticalRotation, center)._add(verticalOffsetCorrection);\n\n // Relative position after rotating\n // tr ----- br\n // | |\n // | |\n // tl ----- bl\n // After rotation, glyph lies on the horizontal midline.\n // Shift back to tl's original x coordinate before rotation by applying 'xOffsetCorrection'.\n tl.x += -yShift + halfAdvance;\n\n // Add padding for y coordinate's justification\n tl.y -= (metrics.left - rectBuffer) * positionedGlyph.scale;\n\n // Adjust x coordinate according to glyph bitmap's height and the vectical advance\n const verticalAdvance = positionedGlyph.imageName ? metrics.advance * positionedGlyph.scale :\n ONE_EM * positionedGlyph.scale;\n // Check wether the glyph is generated from server side or locally\n const chr = String.fromCharCode(positionedGlyph.glyph);\n if (isVerticalClosePunctuation(chr)) {\n // Place vertical punctuation in right place, pull down 1 pixel's space for close punctuations\n tl.x += (-rectBuffer + 1) * positionedGlyph.scale;\n } else if (isVerticalOpenPunctuation(chr)) {\n const xOffset = verticalAdvance - metrics.height * positionedGlyph.scale;\n // Place vertical punctuation in right place, pull up 1 pixel's space for open punctuations\n tl.x += xOffset + (-rectBuffer - 1) * positionedGlyph.scale;\n } else if (!positionedGlyph.imageName &&\n ((metrics.width + rectBuffer * 2) !== rect.w || metrics.height + rectBuffer * 2 !== rect.h)) {\n // Locally generated glyphs' bitmap do not have exact 'rectBuffer' padded around the glyphs,\n // but the original tl do have distance of rectBuffer padded to the top of the glyph.\n const perfectPaddedHeight = (metrics.height + rectBuffer * 2) * positionedGlyph.scale;\n const delta = verticalAdvance - perfectPaddedHeight;\n tl.x += delta / 2;\n } else {\n // Place the glyph bitmap right in the center of the 24x24 point boxes\n const delta = verticalAdvance - paddedHeight;\n tl.x += delta / 2;\n }\n // Calculate other three points\n tr = new Point(tl.x, tl.y - paddedWidth);\n bl = new Point(tl.x + paddedHeight, tl.y);\n br = new Point(tl.x + paddedHeight, tl.y - paddedWidth);\n }\n\n if (textRotate) {\n let center;\n if (!alongLine) {\n if (useRotateOffset) {\n center = new Point(rotateOffset[0], rotateOffset[1]);\n } else {\n center = new Point(textOffset[0], textOffset[1]);\n }\n } else {\n center = new Point(0, 0);\n }\n tl._rotateAround(textRotate, center);\n tr._rotateAround(textRotate, center);\n bl._rotateAround(textRotate, center);\n br._rotateAround(textRotate, center);\n }\n\n const pixelOffsetTL = new Point(0, 0);\n const pixelOffsetBR = new Point(0, 0);\n const minFontScaleX = 0;\n const minFontScaleY = 0;\n quads.push({tl, tr, bl, br, tex: textureRect, writingMode: shaping.writingMode, glyphOffset, sectionIndex: positionedGlyph.sectionIndex, isSDF, pixelOffsetTL, pixelOffsetBR, minFontScaleX, minFontScaleY});\n }\n }\n\n return quads;\n}\n","\nexport default class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","// @flow\n\nimport Queue from 'tinyqueue';\n\nimport Point from '@mapbox/point-geometry';\nimport {distToSegmentSquared} from './intersection_tests.js';\n\n/**\n * Finds an approximation of a polygon's Pole Of Inaccessibility https://en.wikipedia.org/wiki/Pole_of_inaccessibility\n * This is a copy of http://github.com/mapbox/polylabel adapted to use Points\n *\n * @param polygonRings first item in array is the outer ring followed optionally by the list of holes, should be an element of the result of util/classify_rings\n * @param precision Specified in input coordinate units. If 0 returns after first run, if > 0 repeatedly narrows the search space until the radius of the area searched for the best pole is less than precision\n * @param debug Print some statistics to the console during execution\n * @returns Pole of Inaccessibility.\n * @private\n */\nexport default function (polygonRings: Array>, precision?: number = 1, debug?: boolean = false): Point {\n // find the bounding box of the outer ring\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const outerRing = polygonRings[0];\n for (let i = 0; i < outerRing.length; i++) {\n const p = outerRing[i];\n if (!i || p.x < minX) minX = p.x;\n if (!i || p.y < minY) minY = p.y;\n if (!i || p.x > maxX) maxX = p.x;\n if (!i || p.y > maxY) maxY = p.y;\n }\n\n const width = maxX - minX;\n const height = maxY - minY;\n const cellSize = Math.min(width, height);\n let h = cellSize / 2;\n\n // a priority queue of cells in order of their \"potential\" (max distance to polygon)\n const cellQueue = new Queue([], compareMax);\n\n if (cellSize === 0) return new Point(minX, minY);\n\n // cover polygon with initial cells\n for (let x = minX; x < maxX; x += cellSize) {\n for (let y = minY; y < maxY; y += cellSize) {\n cellQueue.push(new Cell(x + h, y + h, h, polygonRings));\n }\n }\n\n // take centroid as the first best guess\n let bestCell = getCentroidCell(polygonRings);\n let numProbes = cellQueue.length;\n\n while (cellQueue.length) {\n // pick the most promising cell from the queue\n const cell = cellQueue.pop();\n\n // update the best cell if we found a better one\n if (cell.d > bestCell.d || !bestCell.d) {\n bestCell = cell;\n if (debug) console.log('found best %d after %d probes', Math.round(1e4 * cell.d) / 1e4, numProbes);\n }\n\n // do not drill down further if there's no chance of a better solution\n if (cell.max - bestCell.d <= precision) continue;\n\n // split the cell into four cells\n h = cell.h / 2;\n cellQueue.push(new Cell(cell.p.x - h, cell.p.y - h, h, polygonRings));\n cellQueue.push(new Cell(cell.p.x + h, cell.p.y - h, h, polygonRings));\n cellQueue.push(new Cell(cell.p.x - h, cell.p.y + h, h, polygonRings));\n cellQueue.push(new Cell(cell.p.x + h, cell.p.y + h, h, polygonRings));\n numProbes += 4;\n }\n\n if (debug) {\n console.log(`num probes: ${numProbes}`);\n console.log(`best distance: ${bestCell.d}`);\n }\n\n return bestCell.p;\n}\n\nfunction compareMax(a: Cell, b: Cell) {\n return b.max - a.max;\n}\n\nclass Cell {\n p: Point;\n h: number;\n d: number;\n max: number;\n\n constructor(x: number, y: number, h: number, polygon: Array>) {\n this.p = new Point(x, y);\n this.h = h; // half the cell size\n this.d = pointToPolygonDist(this.p, polygon); // distance from cell center to polygon\n this.max = this.d + this.h * Math.SQRT2; // max distance to polygon within a cell\n }\n}\n\n// signed distance from point to polygon outline (negative if point is outside)\nfunction pointToPolygonDist(p: Point, polygon: Array>) {\n let inside = false;\n let minDistSq = Infinity;\n\n for (let k = 0; k < polygon.length; k++) {\n const ring = polygon[k];\n\n for (let i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n const a = ring[i];\n const b = ring[j];\n\n if ((a.y > p.y !== b.y > p.y) &&\n (p.x < (b.x - a.x) * (p.y - a.y) / (b.y - a.y) + a.x)) inside = !inside;\n\n minDistSq = Math.min(minDistSq, distToSegmentSquared(p, a, b));\n }\n }\n\n return (inside ? 1 : -1) * Math.sqrt(minDistSq);\n}\n\n// get polygon centroid\nfunction getCentroidCell(polygon: Array>) {\n let area = 0;\n let x = 0;\n let y = 0;\n const points = polygon[0];\n for (let i = 0, len = points.length, j = len - 1; i < len; j = i++) {\n const a = points[i];\n const b = points[j];\n const f = a.x * b.y - b.x * a.y;\n x += (a.x + b.x) * f;\n y += (a.y + b.y) * f;\n area += f * 3;\n }\n return new Cell(x / area, y / area, 0, polygon);\n}\n","// @flow\n\nimport Anchor from './anchor.js';\n\nimport {getAnchors, getCenterAnchor} from './get_anchors.js';\nimport clipLine from './clip_line.js';\nimport {shapeText, shapeIcon, WritingMode, fitIconToText} from './shaping.js';\nimport {getGlyphQuads, getIconQuads} from './quads.js';\nimport {warnOnce, degToRad} from '../util/util.js';\nimport {\n allowsVerticalWritingMode,\n allowsLetterSpacing\n} from '../util/script_detection.js';\nimport findPoleOfInaccessibility from '../util/find_pole_of_inaccessibility.js';\nimport classifyRings from '../util/classify_rings.js';\nimport EXTENT from '../data/extent.js';\nimport SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport {SIZE_PACK_FACTOR} from './symbol_size.js';\nimport ONE_EM from './one_em.js';\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {Shaping, PositionedIcon, TextJustify} from './shaping.js';\nimport type {CollisionBoxArray} from '../data/array_types.js';\nimport type {SymbolFeature} from '../data/bucket/symbol_bucket.js';\nimport type {StyleImage} from '../style/style_image.js';\nimport type {StyleGlyph} from '../style/style_glyph.js';\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type {ImagePosition} from '../render/image_atlas.js';\nimport type {GlyphPositions} from '../render/glyph_atlas.js';\nimport type {PossiblyEvaluatedPropertyValue} from '../style/properties.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {Vec3} from 'gl-matrix';\n\nimport Point from '@mapbox/point-geometry';\nimport murmur3 from 'murmurhash-js';\n\n// The symbol layout process needs `text-size` evaluated at up to five different zoom levels, and\n// `icon-size` at up to three:\n//\n// 1. `text-size` at the zoom level of the bucket. Used to calculate a per-feature size for source `text-size`\n// expressions, and to calculate the box dimensions for icon-text-fit.\n// 2. `icon-size` at the zoom level of the bucket. Used to calculate a per-feature size for source `icon-size`\n// expressions.\n// 3. `text-size` and `icon-size` at the zoom level of the bucket, plus one. Used to calculate collision boxes.\n// 4. `text-size` at zoom level 18. Used for something line-symbol-placement-related.\n// 5. For composite `*-size` expressions: two zoom levels of curve stops that \"cover\" the zoom level of the\n// bucket. These go into a vertex buffer and are used by the shader to interpolate the size at render time.\n//\n// (1) and (2) are stored in `bucket.layers[0].layout`. The remainder are below.\n//\ntype Sizes = {\n layoutTextSize: PossiblyEvaluatedPropertyValue, // (3)\n layoutIconSize: PossiblyEvaluatedPropertyValue, // (3)\n textMaxSize: PossiblyEvaluatedPropertyValue, // (4)\n compositeTextSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue], // (5)\n compositeIconSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue], // (5)\n};\n\nexport type TextAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\n// The radial offset is to the edge of the text box\n// In the horizontal direction, the edge of the text box is where glyphs start\n// But in the vertical direction, the glyphs appear to \"start\" at the baseline\n// We don't actually load baseline data, but we assume an offset of ONE_EM - 17\n// (see \"yOffset\" in shaping.js)\nconst baselineOffset = 7;\nconst INVALID_TEXT_OFFSET = Number.POSITIVE_INFINITY;\nconst sqrt2 = Math.sqrt(2);\n\nexport function evaluateVariableOffset(anchor: TextAnchor, [offsetX, offsetY]: [number, number]): [number, number] {\n let x = 0, y = 0;\n\n if (offsetY === INVALID_TEXT_OFFSET) { // radial offset\n if (offsetX < 0) offsetX = 0; // Ignore negative offset.\n // solve for r where r^2 + r^2 = offsetX^2\n const hypotenuse = offsetX / sqrt2;\n switch (anchor) {\n case 'top-right':\n case 'top-left':\n y = hypotenuse - baselineOffset;\n break;\n case 'bottom-right':\n case 'bottom-left':\n y = -hypotenuse + baselineOffset;\n break;\n case 'bottom':\n y = -offsetX + baselineOffset;\n break;\n case 'top':\n y = offsetX - baselineOffset;\n break;\n }\n\n switch (anchor) {\n case 'top-right':\n case 'bottom-right':\n x = -hypotenuse;\n break;\n case 'top-left':\n case 'bottom-left':\n x = hypotenuse;\n break;\n case 'left':\n x = offsetX;\n break;\n case 'right':\n x = -offsetX;\n break;\n }\n\n } else { // text offset\n // Use absolute offset values.\n offsetX = Math.abs(offsetX);\n offsetY = Math.abs(offsetY);\n\n switch (anchor) {\n case 'top-right':\n case 'top-left':\n case 'top':\n y = offsetY - baselineOffset;\n break;\n case 'bottom-right':\n case 'bottom-left':\n case 'bottom':\n y = -offsetY + baselineOffset;\n break;\n }\n\n switch (anchor) {\n case 'top-right':\n case 'bottom-right':\n case 'right':\n x = -offsetX;\n break;\n case 'top-left':\n case 'bottom-left':\n case 'left':\n x = offsetX;\n break;\n }\n }\n\n return [x, y];\n}\n\nexport function performSymbolLayout(bucket: SymbolBucket,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n glyphPositions: GlyphPositions,\n imageMap: {[_: string]: StyleImage},\n imagePositions: {[_: string]: ImagePosition},\n showCollisionBoxes: boolean,\n availableImages: Array,\n canonical: CanonicalTileID,\n tileZoom: number,\n projection: Projection) {\n bucket.createArrays();\n\n const tileSize = 512 * bucket.overscaling;\n bucket.tilePixelRatio = EXTENT / tileSize;\n bucket.compareText = {};\n bucket.iconsNeedLinear = false;\n\n const layout = bucket.layers[0].layout;\n const unevaluatedLayoutValues = bucket.layers[0]._unevaluatedLayout._values;\n\n const sizes = {};\n\n if (bucket.textSizeData.kind === 'composite') {\n const {minZoom, maxZoom} = bucket.textSizeData;\n sizes.compositeTextSizes = [\n unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(minZoom), canonical),\n unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(maxZoom), canonical)\n ];\n }\n\n if (bucket.iconSizeData.kind === 'composite') {\n const {minZoom, maxZoom} = bucket.iconSizeData;\n sizes.compositeIconSizes = [\n unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(minZoom), canonical),\n unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(maxZoom), canonical)\n ];\n }\n\n sizes.layoutTextSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(tileZoom + 1), canonical);\n sizes.layoutIconSize = unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(tileZoom + 1), canonical);\n sizes.textMaxSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(18), canonical);\n\n const textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';\n const textSize = layout.get('text-size');\n\n for (const feature of bucket.features) {\n const fontstack = layout.get('text-font').evaluate(feature, {}, canonical).join(',');\n const layoutTextSizeThisZoom = textSize.evaluate(feature, {}, canonical);\n const layoutTextSize = sizes.layoutTextSize.evaluate(feature, {}, canonical);\n const layoutIconSize = sizes.layoutIconSize.evaluate(feature, {}, canonical);\n\n const shapedTextOrientations = {\n horizontal: {},\n vertical: undefined\n };\n const text = feature.text;\n let textOffset: [number, number] = [0, 0];\n if (text) {\n const unformattedText = text.toString();\n const spacing = layout.get('text-letter-spacing').evaluate(feature, {}, canonical) * ONE_EM;\n const lineHeight = layout.get('text-line-height').evaluate(feature, {}, canonical) * ONE_EM;\n const spacingIfAllowed = allowsLetterSpacing(unformattedText) ? spacing : 0;\n\n const textAnchor = layout.get('text-anchor').evaluate(feature, {}, canonical);\n const variableTextAnchor = layout.get('text-variable-anchor');\n\n if (!variableTextAnchor) {\n const radialOffset = layout.get('text-radial-offset').evaluate(feature, {}, canonical);\n // Layers with variable anchors use the `text-radial-offset` property and the [x, y] offset vector\n // is calculated at placement time instead of layout time\n if (radialOffset) {\n // The style spec says don't use `text-offset` and `text-radial-offset` together\n // but doesn't actually specify what happens if you use both. We go with the radial offset.\n textOffset = evaluateVariableOffset(textAnchor, [radialOffset * ONE_EM, INVALID_TEXT_OFFSET]);\n } else {\n textOffset = (layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM): any);\n }\n }\n\n let textJustify = textAlongLine ?\n \"center\" :\n layout.get('text-justify').evaluate(feature, {}, canonical);\n\n const isPointPlacement = layout.get('symbol-placement') === 'point';\n const maxWidth = isPointPlacement ?\n layout.get('text-max-width').evaluate(feature, {}, canonical) * ONE_EM :\n Infinity;\n\n const addVerticalShapingIfNeeded = (textJustify: TextJustify) => {\n if (bucket.allowVerticalPlacement && allowsVerticalWritingMode(unformattedText)) {\n // Vertical POI label placement is meant to be used for scripts that support vertical\n // writing mode, thus, default left justification is used. If Latin\n // scripts would need to be supported, this should take into account other justifications.\n shapedTextOrientations.vertical = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor,\n textJustify, spacingIfAllowed, textOffset, WritingMode.vertical, true, layoutTextSize, layoutTextSizeThisZoom);\n }\n };\n\n // If this layer uses text-variable-anchor, generate shapings for all justification possibilities.\n if (!textAlongLine && variableTextAnchor) {\n const justifications = textJustify === \"auto\" ?\n variableTextAnchor.map(a => getAnchorJustification(a)) :\n [textJustify];\n\n let singleLine = false;\n for (let i = 0; i < justifications.length; i++) {\n const justification: TextJustify = justifications[i];\n if (shapedTextOrientations.horizontal[justification]) continue;\n if (singleLine) {\n // If the shaping for the first justification was only a single line, we\n // can re-use it for the other justifications\n shapedTextOrientations.horizontal[justification] = shapedTextOrientations.horizontal[0];\n } else {\n // If using text-variable-anchor for the layer, we use a center anchor for all shapings and apply\n // the offsets for the anchor in the placement step.\n const shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, 'center',\n justification, spacingIfAllowed, textOffset, WritingMode.horizontal, false, layoutTextSize, layoutTextSizeThisZoom);\n if (shaping) {\n shapedTextOrientations.horizontal[justification] = shaping;\n singleLine = shaping.positionedLines.length === 1;\n }\n }\n }\n\n addVerticalShapingIfNeeded('left');\n } else {\n if (textJustify === \"auto\") {\n textJustify = getAnchorJustification(textAnchor);\n }\n // Add horizontal shaping for all point labels and line labels that need horizontal writing mode.\n if (isPointPlacement || ((layout.get(\"text-writing-mode\").indexOf('horizontal') >= 0) || !allowsVerticalWritingMode(unformattedText))) {\n const shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, textJustify, spacingIfAllowed,\n textOffset, WritingMode.horizontal, false, layoutTextSize, layoutTextSizeThisZoom);\n if (shaping) shapedTextOrientations.horizontal[textJustify] = shaping;\n }\n\n // Vertical point label (if allowVerticalPlacement is enabled).\n addVerticalShapingIfNeeded(isPointPlacement ? 'left' : textJustify);\n }\n }\n\n let shapedIcon;\n let isSDFIcon = false;\n if (feature.icon && feature.icon.name) {\n const image = imageMap[feature.icon.name];\n if (image) {\n shapedIcon = shapeIcon(\n imagePositions[feature.icon.name],\n layout.get('icon-offset').evaluate(feature, {}, canonical),\n layout.get('icon-anchor').evaluate(feature, {}, canonical));\n isSDFIcon = image.sdf;\n if (bucket.sdfIcons === undefined) {\n bucket.sdfIcons = image.sdf;\n } else if (bucket.sdfIcons !== image.sdf) {\n warnOnce('Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer');\n }\n if (image.pixelRatio !== bucket.pixelRatio) {\n bucket.iconsNeedLinear = true;\n } else if (layout.get('icon-rotate').constantOr(1) !== 0) {\n bucket.iconsNeedLinear = true;\n }\n }\n }\n\n const shapedText = getDefaultHorizontalShaping(shapedTextOrientations.horizontal) || shapedTextOrientations.vertical;\n if (!bucket.iconsInText) {\n bucket.iconsInText = shapedText ? shapedText.iconsInText : false;\n }\n if (shapedText || shapedIcon) {\n addFeature(bucket, feature, shapedTextOrientations, shapedIcon, imageMap, sizes, layoutTextSize, layoutIconSize, textOffset, isSDFIcon, availableImages, canonical, projection);\n }\n }\n\n if (showCollisionBoxes) {\n bucket.generateCollisionDebugBuffers(tileZoom, bucket.collisionBoxArray);\n }\n}\n\n// Choose the justification that matches the direction of the TextAnchor\nexport function getAnchorJustification(anchor: TextAnchor): TextJustify {\n switch (anchor) {\n case 'right':\n case 'top-right':\n case 'bottom-right':\n return 'right';\n case 'left':\n case 'top-left':\n case 'bottom-left':\n return 'left';\n }\n return 'center';\n}\n\n/**\n * for \"very\" overscaled tiles (overscaleFactor > 2) on high zoom levels (z > 18)\n * we use the tile pixel ratio from the previous zoom level and clamp it to 1\n * in order to thin out labels density and save memory and CPU .\n * @private\n */\nfunction tilePixelRatioForSymbolSpacing(overscaleFactor: number, overscaledZ: number) {\n if (overscaledZ > 18 && overscaleFactor > 2) {\n overscaleFactor >>= 1;\n }\n const tilePixelRatio = EXTENT / (512 * overscaleFactor);\n return Math.max(tilePixelRatio, 1);\n}\n\n/**\n * Given a feature and its shaped text and icon data, add a 'symbol\n * instance' for each _possible_ placement of the symbol feature.\n * (At render time Placement.updateBucketOpacities() selects which of these\n * instances to show or hide based on collisions with symbols in other layers.)\n * @private\n */\nfunction addFeature(bucket: SymbolBucket,\n feature: SymbolFeature,\n shapedTextOrientations: any,\n shapedIcon: PositionedIcon | void,\n imageMap: {[_: string]: StyleImage},\n sizes: Sizes,\n layoutTextSize: number,\n layoutIconSize: number,\n textOffset: [number, number],\n isSDFIcon: boolean,\n availableImages: Array,\n canonical: CanonicalTileID,\n projection: Projection) {\n // To reduce the number of labels that jump around when zooming we need\n // to use a text-size value that is the same for all zoom levels.\n // bucket calculates text-size at a high zoom level so that all tiles can\n // use the same value when calculating anchor positions.\n let textMaxSize = sizes.textMaxSize.evaluate(feature, {}, canonical);\n if (textMaxSize === undefined) {\n textMaxSize = layoutTextSize;\n }\n const layout = bucket.layers[0].layout;\n const iconOffset = layout.get('icon-offset').evaluate(feature, {}, canonical);\n const defaultShaping = getDefaultHorizontalShaping(shapedTextOrientations.horizontal) || shapedTextOrientations.vertical;\n const isGlobe = projection.name === 'globe';\n\n const glyphSize = ONE_EM,\n fontScale = layoutTextSize / glyphSize,\n textMaxBoxScale = bucket.tilePixelRatio * textMaxSize / glyphSize,\n iconBoxScale = bucket.tilePixelRatio * layoutIconSize,\n symbolMinDistance = tilePixelRatioForSymbolSpacing(bucket.overscaling, bucket.zoom) * layout.get('symbol-spacing'),\n textPadding = layout.get('text-padding') * bucket.tilePixelRatio,\n iconPadding = layout.get('icon-padding') * bucket.tilePixelRatio,\n textMaxAngle = degToRad(layout.get('text-max-angle')),\n textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point',\n iconAlongLine = layout.get('icon-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point',\n symbolPlacement = layout.get('symbol-placement'),\n textRepeatDistance = symbolMinDistance / 2;\n\n const iconTextFit = layout.get('icon-text-fit');\n let verticallyShapedIcon;\n\n // Adjust shaped icon size when icon-text-fit is used.\n if (shapedIcon && iconTextFit !== 'none') {\n if (bucket.allowVerticalPlacement && shapedTextOrientations.vertical) {\n verticallyShapedIcon = fitIconToText(shapedIcon, shapedTextOrientations.vertical, iconTextFit,\n layout.get('icon-text-fit-padding'), iconOffset, fontScale);\n }\n if (defaultShaping) {\n shapedIcon = fitIconToText(shapedIcon, defaultShaping, iconTextFit,\n layout.get('icon-text-fit-padding'), iconOffset, fontScale);\n }\n }\n\n const addSymbolAtAnchor = (line: Array, anchor: Anchor, canonicalId: CanonicalTileID) => {\n if (anchor.x < 0 || anchor.x >= EXTENT || anchor.y < 0 || anchor.y >= EXTENT) {\n // Symbol layers are drawn across tile boundaries, We filter out symbols\n // outside our tile boundaries (which may be included in vector tile buffers)\n // to prevent double-drawing symbols.\n return;\n }\n\n let globe: ?{anchor: Anchor, up: Vec3} = null;\n if (isGlobe) {\n const {x, y, z} = projection.projectTilePoint(anchor.x, anchor.y, canonicalId);\n globe = {\n anchor: new Anchor(x, y, z, 0, undefined),\n up: projection.upVector(canonicalId, anchor.x, anchor.y)\n };\n }\n\n addSymbol(bucket, anchor, globe, line, shapedTextOrientations, shapedIcon, imageMap, verticallyShapedIcon, bucket.layers[0],\n bucket.collisionBoxArray, feature.index, feature.sourceLayerIndex,\n bucket.index, textPadding, textAlongLine, textOffset,\n iconBoxScale, iconPadding, iconAlongLine, iconOffset,\n feature, sizes, isSDFIcon, availableImages, canonical);\n };\n\n if (symbolPlacement === 'line') {\n for (const line of clipLine(feature.geometry, 0, 0, EXTENT, EXTENT)) {\n const anchors = getAnchors(\n line,\n symbolMinDistance,\n textMaxAngle,\n shapedTextOrientations.vertical || defaultShaping,\n shapedIcon,\n glyphSize,\n textMaxBoxScale,\n bucket.overscaling,\n EXTENT\n );\n for (const anchor of anchors) {\n const shapedText = defaultShaping;\n if (!shapedText || !anchorIsTooClose(bucket, shapedText.text, textRepeatDistance, anchor)) {\n addSymbolAtAnchor(line, anchor, canonical);\n }\n }\n }\n } else if (symbolPlacement === 'line-center') {\n // No clipping, multiple lines per feature are allowed\n // \"lines\" with only one point are ignored as in clipLines\n for (const line of feature.geometry) {\n if (line.length > 1) {\n const anchor = getCenterAnchor(\n line,\n textMaxAngle,\n shapedTextOrientations.vertical || defaultShaping,\n shapedIcon,\n glyphSize,\n textMaxBoxScale);\n if (anchor) {\n addSymbolAtAnchor(line, anchor, canonical);\n }\n }\n }\n } else if (feature.type === 'Polygon') {\n for (const polygon of classifyRings(feature.geometry, 0)) {\n // 16 here represents 2 pixels\n const poi = findPoleOfInaccessibility(polygon, 16);\n addSymbolAtAnchor(polygon[0], new Anchor(poi.x, poi.y, 0, 0, undefined), canonical);\n }\n } else if (feature.type === 'LineString') {\n // https://github.com/mapbox/mapbox-gl-js/issues/3808\n for (const line of feature.geometry) {\n addSymbolAtAnchor(line, new Anchor(line[0].x, line[0].y, 0, 0, undefined), canonical);\n }\n } else if (feature.type === 'Point') {\n for (const points of feature.geometry) {\n for (const point of points) {\n addSymbolAtAnchor([point], new Anchor(point.x, point.y, 0, 0, undefined), canonical);\n }\n }\n }\n}\n\nconst MAX_GLYPH_ICON_SIZE = 255;\nconst MAX_PACKED_SIZE = MAX_GLYPH_ICON_SIZE * SIZE_PACK_FACTOR;\nexport {MAX_PACKED_SIZE};\n\nfunction addTextVertices(bucket: SymbolBucket,\n globe: ?{ anchor: Anchor, up: Vec3 },\n tileAnchor: Anchor,\n shapedText: Shaping,\n imageMap: {[_: string]: StyleImage},\n layer: SymbolStyleLayer,\n textAlongLine: boolean,\n feature: SymbolFeature,\n textOffset: [number, number],\n lineArray: {lineStartIndex: number, lineLength: number},\n writingMode: number,\n placementTypes: Array<'vertical' | 'center' | 'left' | 'right'>,\n placedTextSymbolIndices: {[_: string]: number},\n placedIconIndex: number,\n sizes: Sizes,\n availableImages: Array,\n canonical: CanonicalTileID) {\n const glyphQuads = getGlyphQuads(tileAnchor, shapedText, textOffset,\n layer, textAlongLine, feature, imageMap, bucket.allowVerticalPlacement);\n\n const sizeData = bucket.textSizeData;\n let textSizeData = null;\n\n if (sizeData.kind === 'source') {\n textSizeData = [\n SIZE_PACK_FACTOR * layer.layout.get('text-size').evaluate(feature, {}, canonical)\n ];\n if (textSizeData[0] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"text-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"text-size\".`);\n }\n } else if (sizeData.kind === 'composite') {\n textSizeData = [\n SIZE_PACK_FACTOR * sizes.compositeTextSizes[0].evaluate(feature, {}, canonical),\n SIZE_PACK_FACTOR * sizes.compositeTextSizes[1].evaluate(feature, {}, canonical)\n ];\n if (textSizeData[0] > MAX_PACKED_SIZE || textSizeData[1] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"text-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"text-size\".`);\n }\n }\n\n bucket.addSymbols(\n bucket.text,\n glyphQuads,\n textSizeData,\n textOffset,\n textAlongLine,\n feature,\n writingMode,\n globe,\n tileAnchor,\n lineArray.lineStartIndex,\n lineArray.lineLength,\n placedIconIndex,\n availableImages,\n canonical);\n\n // The placedSymbolArray is used at render time in drawTileSymbols\n // These indices allow access to the array at collision detection time\n for (const placementType of placementTypes) {\n placedTextSymbolIndices[placementType] = bucket.text.placedSymbolArray.length - 1;\n }\n\n return glyphQuads.length * 4;\n}\n\nfunction getDefaultHorizontalShaping(horizontalShaping: {[_: TextJustify]: Shaping}): Shaping | null {\n // We don't care which shaping we get because this is used for collision purposes\n // and all the justifications have the same collision box\n for (const justification: any in horizontalShaping) {\n return horizontalShaping[justification];\n }\n return null;\n}\n\nexport function evaluateBoxCollisionFeature(collisionBoxArray: CollisionBoxArray,\n projectedAnchor: Anchor,\n tileAnchor: Anchor,\n featureIndex: number,\n sourceLayerIndex: number,\n bucketIndex: number,\n shaped: Object,\n padding: number,\n rotate: number,\n textOffset: ?[number, number]): number {\n let y1 = shaped.top;\n let y2 = shaped.bottom;\n let x1 = shaped.left;\n let x2 = shaped.right;\n\n const collisionPadding = shaped.collisionPadding;\n if (collisionPadding) {\n x1 -= collisionPadding[0];\n y1 -= collisionPadding[1];\n x2 += collisionPadding[2];\n y2 += collisionPadding[3];\n }\n\n if (rotate) {\n // Account for *-rotate in point collision boxes\n // See https://github.com/mapbox/mapbox-gl-js/issues/6075\n // Doesn't account for icon-text-fit\n\n const tl = new Point(x1, y1);\n const tr = new Point(x2, y1);\n const bl = new Point(x1, y2);\n const br = new Point(x2, y2);\n\n const rotateRadians = degToRad(rotate);\n let rotateCenter = new Point(0, 0);\n\n if (textOffset) {\n rotateCenter = new Point(textOffset[0], textOffset[1]);\n }\n\n tl._rotateAround(rotateRadians, rotateCenter);\n tr._rotateAround(rotateRadians, rotateCenter);\n bl._rotateAround(rotateRadians, rotateCenter);\n br._rotateAround(rotateRadians, rotateCenter);\n\n // Collision features require an \"on-axis\" geometry,\n // so take the envelope of the rotated geometry\n // (may be quite large for wide labels rotated 45 degrees)\n x1 = Math.min(tl.x, tr.x, bl.x, br.x);\n x2 = Math.max(tl.x, tr.x, bl.x, br.x);\n y1 = Math.min(tl.y, tr.y, bl.y, br.y);\n y2 = Math.max(tl.y, tr.y, bl.y, br.y);\n }\n\n collisionBoxArray.emplaceBack(projectedAnchor.x, projectedAnchor.y, projectedAnchor.z, tileAnchor.x, tileAnchor.y, x1, y1, x2, y2, padding, featureIndex, sourceLayerIndex, bucketIndex);\n\n return collisionBoxArray.length - 1;\n}\n\nexport function evaluateCircleCollisionFeature(shaped: Object): number | null {\n if (shaped.collisionPadding) {\n // Compute height of the shape in glyph metrics and apply padding.\n // Note that the pixel based 'text-padding' is applied at runtime\n shaped.top -= shaped.collisionPadding[1];\n shaped.bottom += shaped.collisionPadding[3];\n }\n\n // Set minimum box height to avoid very many small labels\n const height = shaped.bottom - shaped.top;\n return height > 0 ? Math.max(10, height) : null;\n}\n\n/**\n * Add a single label & icon placement.\n *\n * @private\n */\nfunction addSymbol(bucket: SymbolBucket,\n anchor: Anchor,\n globe: ?{ anchor: Anchor, up: Vec3 },\n line: Array,\n shapedTextOrientations: any,\n shapedIcon: PositionedIcon | void,\n imageMap: {[_: string]: StyleImage},\n verticallyShapedIcon: PositionedIcon | void,\n layer: SymbolStyleLayer,\n collisionBoxArray: CollisionBoxArray,\n featureIndex: number,\n sourceLayerIndex: number,\n bucketIndex: number,\n textPadding: number,\n textAlongLine: boolean,\n textOffset: [number, number],\n iconBoxScale: number,\n iconPadding: number,\n iconAlongLine: boolean,\n iconOffset: [number, number],\n feature: SymbolFeature,\n sizes: Sizes,\n isSDFIcon: boolean,\n availableImages: Array,\n canonical: CanonicalTileID) {\n const lineArray = bucket.addToLineVertexArray(anchor, line);\n let textBoxIndex, iconBoxIndex, verticalTextBoxIndex, verticalIconBoxIndex;\n let textCircle, verticalTextCircle, verticalIconCircle;\n\n let numIconVertices = 0;\n let numVerticalIconVertices = 0;\n let numHorizontalGlyphVertices = 0;\n let numVerticalGlyphVertices = 0;\n let placedIconSymbolIndex = -1;\n let verticalPlacedIconSymbolIndex = -1;\n const placedTextSymbolIndices = {};\n let key = murmur3('');\n const collisionFeatureAnchor: Anchor = globe ? globe.anchor : anchor;\n\n let textOffset0 = 0;\n let textOffset1 = 0;\n if (layer._unevaluatedLayout.getValue('text-radial-offset') === undefined) {\n [textOffset0, textOffset1] = (layer.layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM): any);\n } else {\n textOffset0 = layer.layout.get('text-radial-offset').evaluate(feature, {}, canonical) * ONE_EM;\n textOffset1 = INVALID_TEXT_OFFSET;\n }\n\n if (bucket.allowVerticalPlacement && shapedTextOrientations.vertical) {\n const verticalShaping = shapedTextOrientations.vertical;\n if (textAlongLine) {\n verticalTextCircle = evaluateCircleCollisionFeature(verticalShaping);\n if (verticallyShapedIcon) {\n verticalIconCircle = evaluateCircleCollisionFeature(verticallyShapedIcon);\n }\n } else {\n const textRotation = layer.layout.get('text-rotate').evaluate(feature, {}, canonical);\n const verticalTextRotation = textRotation + 90.0;\n verticalTextBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, verticalShaping, textPadding, verticalTextRotation, textOffset);\n if (verticallyShapedIcon) {\n verticalIconBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, verticallyShapedIcon, iconPadding, verticalTextRotation);\n }\n }\n }\n\n // Place icon first, so text can have a reference to its index in the placed symbol array.\n // Text symbols can lazily shift at render-time because of variable anchor placement.\n // If the style specifies an `icon-text-fit` then the icon would have to shift along with it.\n // For more info check `updateVariableAnchors` in `draw_symbol.js` .\n\n if (shapedIcon) {\n const iconRotate = layer.layout.get('icon-rotate').evaluate(feature, {}, canonical);\n const hasIconTextFit = layer.layout.get('icon-text-fit') !== 'none';\n const iconQuads = getIconQuads(shapedIcon, iconRotate, isSDFIcon, hasIconTextFit);\n const verticalIconQuads = verticallyShapedIcon ? getIconQuads(verticallyShapedIcon, iconRotate, isSDFIcon, hasIconTextFit) : undefined;\n iconBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, shapedIcon, iconPadding, iconRotate);\n numIconVertices = iconQuads.length * 4;\n\n const sizeData = bucket.iconSizeData;\n let iconSizeData = null;\n\n if (sizeData.kind === 'source') {\n iconSizeData = [\n SIZE_PACK_FACTOR * layer.layout.get('icon-size').evaluate(feature, {}, canonical)\n ];\n if (iconSizeData[0] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"icon-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"icon-size\".`);\n }\n } else if (sizeData.kind === 'composite') {\n iconSizeData = [\n SIZE_PACK_FACTOR * sizes.compositeIconSizes[0].evaluate(feature, {}, canonical),\n SIZE_PACK_FACTOR * sizes.compositeIconSizes[1].evaluate(feature, {}, canonical)\n ];\n if (iconSizeData[0] > MAX_PACKED_SIZE || iconSizeData[1] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"icon-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"icon-size\".`);\n }\n }\n\n bucket.addSymbols(\n bucket.icon,\n iconQuads,\n iconSizeData,\n iconOffset,\n iconAlongLine,\n feature,\n false,\n globe,\n anchor,\n lineArray.lineStartIndex,\n lineArray.lineLength,\n // The icon itself does not have an associated symbol since the text isnt placed yet\n -1,\n availableImages,\n canonical);\n\n placedIconSymbolIndex = bucket.icon.placedSymbolArray.length - 1;\n\n if (verticalIconQuads) {\n numVerticalIconVertices = verticalIconQuads.length * 4;\n\n bucket.addSymbols(\n bucket.icon,\n verticalIconQuads,\n iconSizeData,\n iconOffset,\n iconAlongLine,\n feature,\n WritingMode.vertical,\n globe,\n anchor,\n lineArray.lineStartIndex,\n lineArray.lineLength,\n // The icon itself does not have an associated symbol since the text isnt placed yet\n -1,\n availableImages,\n canonical);\n\n verticalPlacedIconSymbolIndex = bucket.icon.placedSymbolArray.length - 1;\n }\n }\n\n for (const justification: any in shapedTextOrientations.horizontal) {\n const shaping = shapedTextOrientations.horizontal[justification];\n\n if (!textBoxIndex) {\n key = murmur3(shaping.text);\n // As a collision approximation, we can use either the vertical or any of the horizontal versions of the feature\n // We're counting on all versions having similar dimensions\n if (textAlongLine) {\n textCircle = evaluateCircleCollisionFeature(shaping);\n } else {\n const textRotate = layer.layout.get('text-rotate').evaluate(feature, {}, canonical);\n textBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, shaping, textPadding, textRotate, textOffset);\n }\n }\n\n const singleLine = shaping.positionedLines.length === 1;\n numHorizontalGlyphVertices += addTextVertices(\n bucket, globe, anchor, shaping, imageMap, layer, textAlongLine, feature, textOffset, lineArray,\n shapedTextOrientations.vertical ? WritingMode.horizontal : WritingMode.horizontalOnly,\n singleLine ? (Object.keys(shapedTextOrientations.horizontal): any) : [justification],\n placedTextSymbolIndices, placedIconSymbolIndex, sizes, availableImages, canonical);\n\n if (singleLine) {\n break;\n }\n }\n\n if (shapedTextOrientations.vertical) {\n numVerticalGlyphVertices += addTextVertices(\n bucket, globe, anchor, shapedTextOrientations.vertical, imageMap, layer, textAlongLine, feature,\n textOffset, lineArray, WritingMode.vertical, ['vertical'], placedTextSymbolIndices, verticalPlacedIconSymbolIndex, sizes, availableImages, canonical);\n }\n\n // Check if runtime collision circles should be used for any of the collision features.\n // It is enough to choose the tallest feature shape as circles are always placed on a line.\n // All measurements are in glyph metrics and later converted into pixels using proper font size \"layoutTextSize\"\n let collisionCircleDiameter = -1;\n\n const getCollisionCircleHeight = (diameter: ?number, prevHeight: number): number => {\n return diameter ? Math.max(diameter, prevHeight) : prevHeight;\n };\n\n collisionCircleDiameter = getCollisionCircleHeight(textCircle, collisionCircleDiameter);\n collisionCircleDiameter = getCollisionCircleHeight(verticalTextCircle, collisionCircleDiameter);\n collisionCircleDiameter = getCollisionCircleHeight(verticalIconCircle, collisionCircleDiameter);\n const useRuntimeCollisionCircles = (collisionCircleDiameter > -1) ? 1 : 0;\n\n if (bucket.glyphOffsetArray.length >= SymbolBucket.MAX_GLYPHS) warnOnce(\n \"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"\n );\n\n if (feature.sortKey !== undefined) {\n bucket.addToSortKeyRanges(bucket.symbolInstances.length, feature.sortKey);\n }\n\n const projectedAnchor = collisionFeatureAnchor;\n\n bucket.symbolInstances.emplaceBack(\n projectedAnchor.x,\n projectedAnchor.y,\n projectedAnchor.z,\n anchor.x,\n anchor.y,\n placedTextSymbolIndices.right >= 0 ? placedTextSymbolIndices.right : -1,\n placedTextSymbolIndices.center >= 0 ? placedTextSymbolIndices.center : -1,\n placedTextSymbolIndices.left >= 0 ? placedTextSymbolIndices.left : -1,\n placedTextSymbolIndices.vertical >= 0 ? placedTextSymbolIndices.vertical : -1,\n placedIconSymbolIndex,\n verticalPlacedIconSymbolIndex,\n key,\n textBoxIndex !== undefined ? textBoxIndex : bucket.collisionBoxArray.length,\n textBoxIndex !== undefined ? textBoxIndex + 1 : bucket.collisionBoxArray.length,\n verticalTextBoxIndex !== undefined ? verticalTextBoxIndex : bucket.collisionBoxArray.length,\n verticalTextBoxIndex !== undefined ? verticalTextBoxIndex + 1 : bucket.collisionBoxArray.length,\n iconBoxIndex !== undefined ? iconBoxIndex : bucket.collisionBoxArray.length,\n iconBoxIndex !== undefined ? iconBoxIndex + 1 : bucket.collisionBoxArray.length,\n verticalIconBoxIndex ? verticalIconBoxIndex : bucket.collisionBoxArray.length,\n verticalIconBoxIndex ? verticalIconBoxIndex + 1 : bucket.collisionBoxArray.length,\n featureIndex,\n numHorizontalGlyphVertices,\n numVerticalGlyphVertices,\n numIconVertices,\n numVerticalIconVertices,\n useRuntimeCollisionCircles,\n 0,\n textOffset0,\n textOffset1,\n collisionCircleDiameter);\n}\n\nfunction anchorIsTooClose(bucket: any, text: string, repeatDistance: number, anchor: Point) {\n const compareText = bucket.compareText;\n if (!(text in compareText)) {\n compareText[text] = [];\n } else {\n const otherAnchors = compareText[text];\n for (let k = otherAnchors.length - 1; k >= 0; k--) {\n if (anchor.dist(otherAnchors[k]) < repeatDistance) {\n // If it's within repeatDistance of one anchor, stop looking\n return true;\n }\n }\n }\n // If anchor is not within repeatDistance of any other anchor, add to array\n compareText[text].push(anchor);\n return false;\n}\n","// @flow\nimport {vec3} from 'gl-matrix';\nimport {Ray} from '../../util/primitives.js';\nimport type Transform from '../transform.js';\n\nexport function farthestPixelDistanceOnPlane(tr: Transform, pixelsPerMeter: number): number {\n // Find the distance from the center point [width/2 + offset.x, height/2 + offset.y] to the\n // center top point [width/2 + offset.x, 0] in Z units, using the law of sines.\n // 1 Z unit is equivalent to 1 horizontal px at the center of the map\n // (the distance between[width/2, height/2] and [width/2 + 1, height/2])\n const fovAboveCenter = tr.fovAboveCenter;\n\n // Adjust distance to MSL by the minimum possible elevation visible on screen,\n // this way the far plane is pushed further in the case of negative elevation.\n const minElevationInPixels = tr.elevation ?\n tr.elevation.getMinElevationBelowMSL() * pixelsPerMeter :\n 0;\n const cameraToSeaLevelDistance = ((tr._camera.position[2] * tr.worldSize) - minElevationInPixels) / Math.cos(tr._pitch);\n const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin(Math.max(Math.PI / 2.0 - tr._pitch - fovAboveCenter, 0.01));\n\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance = Math.sin(tr._pitch) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n const horizonDistance = cameraToSeaLevelDistance * (1 / tr._horizonShift);\n\n // Add a bit extra to avoid precision problems when a fragment's distance is exactly `furthestDistance`\n return Math.min(furthestDistance * 1.01, horizonDistance);\n}\n\nexport function farthestPixelDistanceOnSphere(tr: Transform, pixelsPerMeter: number): number {\n // Find farthest distance of the globe that is potentially visible to the camera.\n // First check if the view frustum is fully covered by the map by casting a ray\n // from the top left/right corner and see if it intersects with the globe. In case\n // of no intersection we need to find distance to the horizon point where the\n // surface normal is perpendicular to the camera forward direction.\n const cameraDistance = tr.cameraToCenterDistance;\n const centerPixelAltitude = tr._centerAltitude * pixelsPerMeter;\n\n const camera = tr._camera;\n const forward = tr._camera.forward();\n const cameraPosition = vec3.add([], vec3.scale([], forward, -cameraDistance), [0, 0, centerPixelAltitude]);\n\n const globeRadius = tr.worldSize / (2.0 * Math.PI);\n const globeCenter = [0, 0, -globeRadius];\n\n const aspectRatio = tr.width / tr.height;\n const tanFovAboveCenter = Math.tan(tr.fovAboveCenter);\n\n const up = vec3.scale([], camera.up(), tanFovAboveCenter);\n const right = vec3.scale([], camera.right(), tanFovAboveCenter * aspectRatio);\n const dir = vec3.normalize([], vec3.add([], vec3.add([], forward, up), right));\n\n const pointOnGlobe = [];\n const ray = new Ray(cameraPosition, dir);\n\n let pixelDistance;\n if (ray.closestPointOnSphere(globeCenter, globeRadius, pointOnGlobe)) {\n const p0 = vec3.add([], pointOnGlobe, globeCenter);\n const p1 = vec3.sub([], p0, cameraPosition);\n // Globe is fully covering the view frustum. Project the intersection\n // point to the camera view vector in order to find the pixel distance\n pixelDistance = Math.cos(tr.fovAboveCenter) * vec3.length(p1);\n } else {\n // Background space is visible. Find distance to the point of the\n // globe where surface normal is parallel to the view vector\n const globeCenterToCamera = vec3.sub([], cameraPosition, globeCenter);\n const cameraToGlobe = vec3.sub([], globeCenter, cameraPosition);\n vec3.normalize(cameraToGlobe, cameraToGlobe);\n\n const cameraHeight = vec3.length(globeCenterToCamera) - globeRadius;\n pixelDistance = Math.sqrt(cameraHeight * (cameraHeight + 2 * globeRadius));\n const angle = Math.acos(pixelDistance / (globeRadius + cameraHeight)) - Math.acos(vec3.dot(forward, cameraToGlobe));\n pixelDistance *= Math.cos(angle);\n }\n\n return pixelDistance * 1.01;\n}\n","// @flow\nimport Point from '@mapbox/point-geometry';\nimport MercatorCoordinate, {altitudeFromMercatorZ, lngFromMercatorX, latFromMercatorY} from '../mercator_coordinate.js';\nimport EXTENT from '../../data/extent.js';\nimport {vec3} from 'gl-matrix';\nimport {Aabb} from '../../util/primitives.js';\nimport {aabbForTileOnGlobe} from './globe_util.js';\nimport assert from 'assert';\nimport {CanonicalTileID} from '../../source/tile_id.js';\n\nimport type {Vec3} from 'gl-matrix';\nimport type Projection, {ProjectedPoint} from './projection.js';\nimport type Transform from '../transform.js';\n\nexport type TileTransform = {\n scale: number,\n x: number,\n y: number,\n x2: number,\n y2: number,\n projection: Projection\n};\n\nexport default function tileTransform(id: Object, projection: Projection): TileTransform {\n if (!projection.isReprojectedInTileSpace) {\n return {scale: 1 << id.z, x: id.x, y: id.y, x2: id.x + 1, y2: id.y + 1, projection};\n }\n\n const s = Math.pow(2, -id.z);\n\n const x1 = (id.x) * s;\n const x2 = (id.x + 1) * s;\n const y1 = (id.y) * s;\n const y2 = (id.y + 1) * s;\n\n const lng1 = lngFromMercatorX(x1);\n const lng2 = lngFromMercatorX(x2);\n const lat1 = latFromMercatorY(y1);\n const lat2 = latFromMercatorY(y2);\n\n const p0 = projection.project(lng1, lat1);\n const p1 = projection.project(lng2, lat1);\n const p2 = projection.project(lng2, lat2);\n const p3 = projection.project(lng1, lat2);\n\n let minX = Math.min(p0.x, p1.x, p2.x, p3.x);\n let minY = Math.min(p0.y, p1.y, p2.y, p3.y);\n let maxX = Math.max(p0.x, p1.x, p2.x, p3.x);\n let maxY = Math.max(p0.y, p1.y, p2.y, p3.y);\n\n // we pick an error threshold for calculating the bbox that balances between performance and precision\n const maxErr = s / 16;\n\n function processSegment(pa: ProjectedPoint, pb: ProjectedPoint, ax: number, ay: number, bx: number, by: number) {\n const mx = (ax + bx) / 2;\n const my = (ay + by) / 2;\n\n const pm = projection.project(lngFromMercatorX(mx), latFromMercatorY(my));\n const err = Math.max(0, minX - pm.x, minY - pm.y, pm.x - maxX, pm.y - maxY);\n\n minX = Math.min(minX, pm.x);\n maxX = Math.max(maxX, pm.x);\n minY = Math.min(minY, pm.y);\n maxY = Math.max(maxY, pm.y);\n\n if (err > maxErr) {\n processSegment(pa, pm, ax, ay, mx, my);\n processSegment(pm, pb, mx, my, bx, by);\n }\n }\n\n processSegment(p0, p1, x1, y1, x2, y1);\n processSegment(p1, p2, x2, y1, x2, y2);\n processSegment(p2, p3, x2, y2, x1, y2);\n processSegment(p3, p0, x1, y2, x1, y1);\n\n // extend the bbox by max error to make sure coords don't go past tile extent\n minX -= maxErr;\n minY -= maxErr;\n maxX += maxErr;\n maxY += maxErr;\n\n const max = Math.max(maxX - minX, maxY - minY);\n const scale = 1 / max;\n\n return {\n scale,\n x: minX * scale,\n y: minY * scale,\n x2: maxX * scale,\n y2: maxY * scale,\n projection\n };\n}\n\nexport function tileAABB(tr: Transform, numTiles: number, z: number, x: number, y: number, wrap: number, min: number, max: number, projection: Projection): Aabb {\n if (projection.name === 'globe') {\n const tileId = new CanonicalTileID(z, x, y);\n return aabbForTileOnGlobe(tr, numTiles, tileId);\n }\n\n const tt = tileTransform({z, x, y}, projection);\n const tx = tt.x / tt.scale;\n const ty = tt.y / tt.scale;\n const tx2 = tt.x2 / tt.scale;\n const ty2 = tt.y2 / tt.scale;\n\n if (isNaN(tx) || isNaN(tx2) || isNaN(ty) || isNaN(ty2)) {\n assert(false);\n }\n\n return new Aabb(\n [(wrap + tx) * numTiles, numTiles * ty, min],\n [(wrap + tx2) * numTiles, numTiles * ty2, max]);\n}\n\nexport function getTilePoint(tileTransform: TileTransform, {x, y}: interface { x: number, y: number }, wrap: number = 0): Point {\n return new Point(\n ((x - wrap) * tileTransform.scale - tileTransform.x) * EXTENT,\n (y * tileTransform.scale - tileTransform.y) * EXTENT);\n}\n\nexport function getTileVec3(tileTransform: TileTransform, coord: MercatorCoordinate, wrap: number = 0): Vec3 {\n const x = ((coord.x - wrap) * tileTransform.scale - tileTransform.x) * EXTENT;\n const y = (coord.y * tileTransform.scale - tileTransform.y) * EXTENT;\n return vec3.fromValues(x, y, altitudeFromMercatorZ(coord.z, coord.y));\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {mercatorZfromAltitude} from '../mercator_coordinate.js';\nimport Point from '@mapbox/point-geometry';\nimport {farthestPixelDistanceOnPlane} from './far_z.js';\nimport {mat4} from 'gl-matrix';\nimport EXTENT from '../../data/extent.js';\nimport tileTransform from './tile_transform.js';\n\nimport type Transform from '../../geo/transform.js';\nimport type {Vec3} from 'gl-matrix';\nimport type MercatorCoordinate from '../mercator_coordinate.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {CanonicalTileID, UnwrappedTileID} from '../../source/tile_id.js';\n\nexport type ProjectedPoint = {\n x: number;\n y: number;\n z: number;\n};\n\nexport type ElevationScale = {\n // `metersToTile` converts meters to units used to describe elevation in tile space.\n // Default units in mercator space are x & y: [0, 8192] and z: meters\n metersToTile: number\n}\n\nconst identity = mat4.identity(new Float32Array(16));\n\nexport default class Projection {\n name: string;\n wrap: boolean;\n conic: boolean;\n requiresDraping: boolean;\n supportsWorldCopies: boolean;\n supportsTerrain: boolean;\n supportsFog: boolean;\n supportsFreeCamera: boolean;\n zAxisUnit: 'meters' | 'pixels';\n isReprojectedInTileSpace: boolean;\n center: [number, number];\n range: ?[number, number];\n parallels: ?[number, number];\n unsupportedLayers: Array;\n spec: ProjectionSpecification;\n\n constructor(options: ProjectionSpecification) {\n this.spec = options;\n this.name = options.name;\n this.wrap = false;\n this.requiresDraping = false;\n this.supportsWorldCopies = false;\n this.supportsTerrain = false;\n this.supportsFog = false;\n this.supportsFreeCamera = false;\n this.zAxisUnit = 'meters';\n this.isReprojectedInTileSpace = true;\n this.unsupportedLayers = ['custom'];\n this.center = [0, 0];\n this.range = [3.5, 7];\n }\n\n project(lng: number, lat: number): ProjectedPoint { // eslint-disable-line\n return {x: 0, y: 0, z: 0}; // overriden in subclasses\n }\n\n unproject(x: number, y: number): LngLat { // eslint-disable-line\n return new LngLat(0, 0); // overriden in subclasses\n }\n\n projectTilePoint(x: number, y: number, _: CanonicalTileID): ProjectedPoint {\n return {x, y, z: 0};\n }\n\n locationPoint(tr: Transform, lngLat: LngLat, terrain: boolean = true): Point {\n return tr._coordinatePoint(tr.locationCoordinate(lngLat), terrain);\n }\n\n pixelsPerMeter(lat: number, worldSize: number): number {\n return mercatorZfromAltitude(1, lat) * worldSize;\n }\n\n // pixels-per-meter is used to describe relation between real world and pixel distances.\n // `pixelSpaceConversion` can be used to convert the ratio from mercator projection to\n // the currently active projection.\n //\n // `pixelSpaceConversion` is useful for converting between pixel spaces where some logic\n // expects mercator pixels, such as raycasting where the scale is expected to be in\n // mercator pixels.\n pixelSpaceConversion(lat: number, worldSize: number, interpolationT: number): number { // eslint-disable-line\n return 1.0;\n }\n\n farthestPixelDistance(tr: Transform): number {\n return farthestPixelDistanceOnPlane(tr, tr.pixelsPerMeter);\n }\n\n pointCoordinate(tr: Transform, x: number, y: number, z: number): MercatorCoordinate {\n const horizonOffset = tr.horizonLineFromTop(false);\n const clamped = new Point(x, Math.max(horizonOffset, y));\n return tr.rayIntersectionCoordinate(tr.pointRayIntersection(clamped, z));\n }\n\n pointCoordinate3D(tr: Transform, x: number, y: number): ?Vec3 {\n const p = new Point(x, y);\n if (tr.elevation) {\n return tr.elevation.pointCoordinate(p);\n } else {\n const mc = this.pointCoordinate(tr, p.x, p.y, 0);\n return [mc.x, mc.y, mc.z];\n }\n }\n\n isPointAboveHorizon(tr: Transform, p: Point): boolean {\n if (tr.elevation) {\n const raycastOnTerrain = this.pointCoordinate3D(tr, p.x, p.y);\n return !raycastOnTerrain;\n }\n const horizon = tr.horizonLineFromTop();\n return p.y < horizon;\n }\n\n createInversionMatrix(tr: Transform, id: CanonicalTileID): Float32Array { // eslint-disable-line\n return identity;\n }\n\n createTileMatrix(tr: Transform, worldSize: number, id: UnwrappedTileID): Float64Array {\n let scale, scaledX, scaledY;\n const canonical = id.canonical;\n const posMatrix = mat4.identity(new Float64Array(16));\n\n if (this.isReprojectedInTileSpace) {\n const cs = tileTransform(canonical, this);\n scale = 1;\n scaledX = cs.x + id.wrap * cs.scale;\n scaledY = cs.y;\n mat4.scale(posMatrix, posMatrix, [scale / cs.scale, scale / cs.scale, tr.pixelsPerMeter / worldSize]);\n } else {\n scale = worldSize / tr.zoomScale(canonical.z);\n const unwrappedX = canonical.x + Math.pow(2, canonical.z) * id.wrap;\n scaledX = unwrappedX * scale;\n scaledY = canonical.y * scale;\n }\n\n mat4.translate(posMatrix, posMatrix, [scaledX, scaledY, 0]);\n mat4.scale(posMatrix, posMatrix, [scale / EXTENT, scale / EXTENT, 1]);\n\n return posMatrix;\n }\n\n upVector(id: CanonicalTileID, x: number, y: number): Vec3 { // eslint-disable-line\n return [0, 0, 1];\n }\n\n upVectorScale(id: CanonicalTileID, latitude: number, worldSize: number): ElevationScale { // eslint-disable-line\n return {metersToTile: 1};\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, wrap, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\n// based on https://github.com/d3/d3-geo-projection, MIT-licensed\nexport default class Albers extends Projection {\n n: number;\n c: number;\n r0: number;\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.range = [4, 7];\n this.center = options.center || [-96, 37.5];\n const [lat0, lat1] = this.parallels = options.parallels || [29.5, 45.5];\n\n const sy0 = Math.sin(degToRad(lat0));\n this.n = (sy0 + Math.sin(degToRad(lat1))) / 2;\n this.c = 1 + sy0 * (2 * this.n - sy0);\n this.r0 = Math.sqrt(this.c) / this.n;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const {n, c, r0} = this;\n const lambda = degToRad(lng - this.center[0]);\n const phi = degToRad(lat);\n\n const r = Math.sqrt(c - 2 * n * Math.sin(phi)) / n;\n const x = r * Math.sin(lambda * n);\n const y = r * Math.cos(lambda * n) - r0;\n return {x, y, z: 0};\n }\n\n unproject(x: number, y: number): LngLat {\n const {n, c, r0} = this;\n const r0y = r0 + y;\n let l = Math.atan2(x, Math.abs(r0y)) * Math.sign(r0y);\n if (r0y * n < 0) {\n l -= Math.PI * Math.sign(x) * Math.sign(r0y);\n }\n const dt = degToRad(this.center[0]) * n;\n l = wrap(l, -Math.PI - dt, Math.PI - dt);\n\n const lng = clamp(radToDeg(l / n) + this.center[0], -180, 180);\n const phi = Math.asin(clamp((c - (x * x + r0y * r0y) * n * n) / (2 * n), -1, 1));\n const lat = clamp(radToDeg(phi), -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectedPoint} from './projection.js';\n\nconst a1 = 1.340264;\nconst a2 = -0.081106;\nconst a3 = 0.000893;\nconst a4 = 0.003796;\nconst M = Math.sqrt(3) / 2;\n\nexport default class EqualEarth extends Projection {\n\n project(lng: number, lat: number): ProjectedPoint {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n lat = lat / 180 * Math.PI;\n lng = lng / 180 * Math.PI;\n const theta = Math.asin(M * Math.sin(lat));\n const theta2 = theta * theta;\n const theta6 = theta2 * theta2 * theta2;\n const x = lng * Math.cos(theta) / (M * (a1 + 3 * a2 * theta2 + theta6 * (7 * a3 + 9 * a4 * theta2)));\n const y = theta * (a1 + a2 * theta2 + theta6 * (a3 + a4 * theta2));\n\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 1) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 1) * Math.PI;\n let theta = y;\n let theta2 = theta * theta;\n let theta6 = theta2 * theta2 * theta2;\n\n for (let i = 0, delta, fy, fpy; i < 12; ++i) {\n fy = theta * (a1 + a2 * theta2 + theta6 * (a3 + a4 * theta2)) - y;\n fpy = a1 + 3 * a2 * theta2 + theta6 * (7 * a3 + 9 * a4 * theta2);\n delta = fy / fpy;\n theta = clamp(theta - delta, -Math.PI / 3, Math.PI / 3);\n theta2 = theta * theta;\n theta6 = theta2 * theta2 * theta2;\n if (Math.abs(delta) < 1e-12) break;\n }\n\n const lambda = M * x * (a1 + 3 * a2 * theta2 + theta6 * (7 * a3 + 9 * a4 * theta2)) / Math.cos(theta);\n const phi = Math.asin(Math.sin(theta) / M);\n const lng = clamp(lambda * 180 / Math.PI, -180, 180);\n const lat = clamp(phi * 180 / Math.PI, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nexport default class Equirectangular extends Projection {\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.wrap = true;\n this.supportsWorldCopies = true;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const x = 0.5 + lng / 360;\n const y = 0.5 - lat / 360;\n return {x, y, z: 0};\n }\n\n unproject(x: number, y: number): LngLat {\n const lng = (x - 0.5) * 360;\n const lat = clamp((0.5 - y) * 360, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nconst halfPi = Math.PI / 2;\n\nfunction tany(y: number) {\n return Math.tan((halfPi + y) / 2);\n}\n\n// based on https://github.com/d3/d3-geo, MIT-licensed\nexport default class LambertConformalConic extends Projection {\n n: number;\n f: number;\n southernCenter: boolean;\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.center = options.center || [0, 30];\n const [lat0, lat1] = this.parallels = options.parallels || [30, 30];\n\n let y0 = degToRad(lat0);\n let y1 = degToRad(lat1);\n // Run projection math on inverted lattitudes if the paralell lines are south of the equator\n // This fixes divide by zero errors with a South polar projection\n this.southernCenter = (y0 + y1) < 0;\n if (this.southernCenter) {\n y0 = -y0;\n y1 = -y1;\n }\n const cy0 = Math.cos(y0);\n const tany0 = tany(y0);\n\n this.n = y0 === y1 ? Math.sin(y0) : Math.log(cy0 / Math.cos(y1)) / Math.log(tany(y1) / tany0);\n this.f = cy0 * Math.pow(tany(y0), this.n) / this.n;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n lat = degToRad(lat);\n if (this.southernCenter) lat = -lat;\n lng = degToRad(lng - this.center[0]);\n\n const epsilon = 1e-6;\n const {n, f} = this;\n\n if (f > 0) {\n if (lat < -halfPi + epsilon) lat = -halfPi + epsilon;\n } else {\n if (lat > halfPi - epsilon) lat = halfPi - epsilon;\n }\n\n const r = f / Math.pow(tany(lat), n);\n let x = r * Math.sin(n * lng);\n let y = f - r * Math.cos(n * lng);\n x = (x / Math.PI + 0.5) * 0.5;\n y = (y / Math.PI + 0.5) * 0.5;\n\n return {\n x,\n y: this.southernCenter ? y : 1 - y,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n x = (2 * x - 0.5) * Math.PI;\n if (this.southernCenter) y = 1 - y;\n y = (2 * (1 - y) - 0.5) * Math.PI;\n const {n, f} = this;\n const fy = f - y;\n const signFy = Math.sign(fy);\n const r = Math.sign(n) * Math.sqrt(x * x + fy * fy);\n let l = Math.atan2(x, Math.abs(fy)) * signFy;\n\n if (fy * n < 0) l -= Math.PI * Math.sign(x) * signFy;\n\n const lng = clamp(radToDeg(l / n) + this.center[0], -180, 180);\n const phi = 2 * Math.atan(Math.pow(f / r, 1 / n)) - halfPi;\n const lat = clamp(radToDeg(phi), -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, this.southernCenter ? -lat : lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {mercatorXfromLng, mercatorYfromLat, lngFromMercatorX, latFromMercatorY} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nexport default class Mercator extends Projection {\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.wrap = true;\n this.supportsWorldCopies = true;\n this.supportsTerrain = true;\n this.supportsFog = true;\n this.supportsFreeCamera = true;\n this.isReprojectedInTileSpace = false;\n this.unsupportedLayers = [];\n this.range = null;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const x = mercatorXfromLng(lng);\n const y = mercatorYfromLat(lat);\n return {x, y, z: 0};\n }\n\n unproject(x: number, y: number): LngLat {\n const lng = lngFromMercatorX(x);\n const lat = latFromMercatorY(y);\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectedPoint} from './projection.js';\n\nconst maxPhi = degToRad(MAX_MERCATOR_LATITUDE);\n\nexport default class NaturalEarth extends Projection {\n\n project(lng: number, lat: number): ProjectedPoint {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n lat = degToRad(lat);\n lng = degToRad(lng);\n\n const phi2 = lat * lat;\n const phi4 = phi2 * phi2;\n const x = lng * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4)));\n const y = lat * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)));\n\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 1) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 1) * Math.PI;\n const epsilon = 1e-6;\n let phi = y;\n let i = 25;\n let delta = 0;\n let phi2 = phi * phi;\n\n do {\n phi2 = phi * phi;\n const phi4 = phi2 * phi2;\n delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n phi = clamp(phi - delta, -maxPhi, maxPhi);\n } while (Math.abs(delta) > epsilon && --i > 0);\n\n phi2 = phi * phi;\n const lambda = x / (0.8707 + phi2 * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2))));\n\n const lng = clamp(radToDeg(lambda), -180, 180);\n const lat = radToDeg(phi);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectedPoint} from './projection.js';\n\nconst maxPhi = degToRad(MAX_MERCATOR_LATITUDE);\n\nexport default class WinkelTripel extends Projection {\n\n project(lng: number, lat: number): ProjectedPoint {\n lat = degToRad(lat);\n lng = degToRad(lng);\n const cosLat = Math.cos(lat);\n const twoOverPi = 2 / Math.PI;\n const alpha = Math.acos(cosLat * Math.cos(lng / 2));\n const sinAlphaOverAlpha = Math.sin(alpha) / alpha;\n const x = 0.5 * (lng * twoOverPi + (2 * cosLat * Math.sin(lng / 2)) / sinAlphaOverAlpha) || 0;\n const y = 0.5 * (lat + Math.sin(lat) / sinAlphaOverAlpha) || 0;\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 1) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n // based on https://github.com/d3/d3-geo-projection, MIT-licensed\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 1) * Math.PI;\n let lambda = x;\n let phi = y;\n let i = 25;\n const epsilon = 1e-6;\n let dlambda = 0, dphi = 0;\n do {\n const cosphi = Math.cos(phi),\n sinphi = Math.sin(phi),\n sinphi2 = 2 * sinphi * cosphi,\n sin2phi = sinphi * sinphi,\n cos2phi = cosphi * cosphi,\n coslambda2 = Math.cos(lambda / 2),\n sinlambda2 = Math.sin(lambda / 2),\n sinlambda = 2 * coslambda2 * sinlambda2,\n sin2lambda2 = sinlambda2 * sinlambda2,\n C = 1 - cos2phi * coslambda2 * coslambda2,\n F = C ? 1 / C : 0,\n E = C ? Math.acos(cosphi * coslambda2) * Math.sqrt(1 / C) : 0,\n fx = 0.5 * (2 * E * cosphi * sinlambda2 + lambda * 2 / Math.PI) - x,\n fy = 0.5 * (E * sinphi + phi) - y,\n dxdlambda = 0.5 * F * (cos2phi * sin2lambda2 + E * cosphi * coslambda2 * sin2phi) + 1 / Math.PI,\n dxdphi = F * (sinlambda * sinphi2 / 4 - E * sinphi * sinlambda2),\n dydlambda = 0.125 * F * (sinphi2 * sinlambda2 - E * sinphi * cos2phi * sinlambda),\n dydphi = 0.5 * F * (sin2phi * coslambda2 + E * sin2lambda2 * cosphi) + 0.5,\n denominator = dxdphi * dydlambda - dydphi * dxdlambda;\n\n dlambda = (fy * dxdphi - fx * dydphi) / denominator;\n dphi = (fx * dydlambda - fy * dxdlambda) / denominator;\n lambda = clamp(lambda - dlambda, -Math.PI, Math.PI);\n phi = clamp(phi - dphi, -maxPhi, maxPhi);\n\n } while ((Math.abs(dlambda) > epsilon || Math.abs(dphi) > epsilon) && --i > 0);\n\n return new LngLat(radToDeg(lambda), radToDeg(phi));\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nexport default class CylindricalEqualArea extends Projection {\n cosPhi: number;\n scale: number;\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.center = options.center || [0, 0];\n this.parallels = options.parallels || [0, 0];\n this.cosPhi = Math.max(0.01, Math.cos(degToRad(this.parallels[0])));\n // scale coordinates between 0 and 1 to avoid constraint issues\n this.scale = 1 / (2 * Math.max(Math.PI * this.cosPhi, 1 / this.cosPhi));\n this.wrap = true;\n this.supportsWorldCopies = true;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const {scale, cosPhi} = this;\n const x = degToRad(lng) * cosPhi;\n const y = Math.sin(degToRad(lat)) / cosPhi;\n\n return {\n x: (x * scale) + 0.5,\n y: (-y * scale) + 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n const {scale, cosPhi} = this;\n const x_ = (x - 0.5) / scale;\n const y_ = -(y - 0.5) / scale;\n const lng = clamp(radToDeg(x_) / cosPhi, -180, 180);\n const y2 = y_ * cosPhi;\n const y3 = Math.asin(clamp(y2, -1, 1));\n const lat = clamp(radToDeg(y3), -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport {mat4, vec3} from 'gl-matrix';\nimport EXTENT from '../../data/extent.js';\nimport LngLat from '../lng_lat.js';\nimport {degToRad} from '../../util/util.js';\nimport MercatorCoordinate, {\n mercatorZfromAltitude,\n} from '../mercator_coordinate.js';\nimport Mercator from './mercator.js';\nimport Point from '@mapbox/point-geometry';\nimport {farthestPixelDistanceOnPlane, farthestPixelDistanceOnSphere} from './far_z.js';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport {\n GLOBE_SCALE_MATCH_LATITUDE,\n latLngToECEF,\n globeTileBounds,\n globeNormalizeECEF,\n globeDenormalizeECEF,\n globeECEFNormalizationScale,\n globeToMercatorTransition,\n globePointCoordinate,\n tileCoordToECEF,\n globeMetersToEcef\n} from './globe_util.js';\n\nimport type Transform from '../transform.js';\nimport type {ElevationScale} from './projection.js';\nimport type {Vec3} from 'gl-matrix';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {CanonicalTileID, UnwrappedTileID} from '../../source/tile_id.js';\n\nexport default class Globe extends Mercator {\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.requiresDraping = true;\n this.supportsWorldCopies = false;\n this.supportsFog = true;\n this.zAxisUnit = \"pixels\";\n this.unsupportedLayers = ['debug'];\n this.range = [3, 5];\n }\n\n projectTilePoint(x: number, y: number, id: CanonicalTileID): {x: number, y: number, z: number} {\n const pos = tileCoordToECEF(x, y, id);\n const bounds = globeTileBounds(id);\n const normalizationMatrix = globeNormalizeECEF(bounds);\n vec3.transformMat4(pos, pos, normalizationMatrix);\n\n return {x: pos[0], y: pos[1], z: pos[2]};\n }\n\n locationPoint(tr: Transform, lngLat: LngLat): Point {\n const pos = latLngToECEF(lngLat.lat, lngLat.lng);\n const up = vec3.normalize([], pos);\n\n const elevation = tr.elevation ?\n tr.elevation.getAtPointOrZero(tr.locationCoordinate(lngLat), tr._centerAltitude) :\n tr._centerAltitude;\n\n const upScale = mercatorZfromAltitude(1, 0) * EXTENT * elevation;\n vec3.scaleAndAdd(pos, pos, up, upScale);\n const matrix = mat4.identity(new Float64Array(16));\n mat4.multiply(matrix, tr.pixelMatrix, tr.globeMatrix);\n vec3.transformMat4(pos, pos, matrix);\n\n return new Point(pos[0], pos[1]);\n }\n\n pixelsPerMeter(lat: number, worldSize: number): number {\n return mercatorZfromAltitude(1, 0) * worldSize;\n }\n\n pixelSpaceConversion(lat: number, worldSize: number, interpolationT: number): number {\n // Using only the center latitude to determine scale causes the globe to rapidly change\n // size as you pan up and down. As you approach the pole, the globe's size approaches infinity.\n // This is because zoom levels are based on mercator.\n //\n // Instead, use a fixed reference latitude at lower zoom levels. And transition between\n // this latitude and the center's latitude as you zoom in. This is a compromise that\n // makes globe view more usable with existing camera parameters, styles and data.\n const centerScale = mercatorZfromAltitude(1, lat) * worldSize;\n const referenceScale = mercatorZfromAltitude(1, GLOBE_SCALE_MATCH_LATITUDE) * worldSize;\n const combinedScale = interpolate(referenceScale, centerScale, interpolationT);\n return this.pixelsPerMeter(lat, worldSize) / combinedScale;\n }\n\n createTileMatrix(tr: Transform, worldSize: number, id: UnwrappedTileID): Float64Array {\n const decode = globeDenormalizeECEF(globeTileBounds(id.canonical));\n return mat4.multiply(new Float64Array(16), tr.globeMatrix, decode);\n }\n\n createInversionMatrix(tr: Transform, id: CanonicalTileID): Float32Array {\n const {center} = tr;\n const matrix = globeNormalizeECEF(globeTileBounds(id));\n mat4.rotateY(matrix, matrix, degToRad(center.lng));\n mat4.rotateX(matrix, matrix, degToRad(center.lat));\n mat4.scale(matrix, matrix, [tr._pixelsPerMercatorPixel, tr._pixelsPerMercatorPixel, 1.0]);\n return Float32Array.from(matrix);\n }\n\n pointCoordinate(tr: Transform, x: number, y: number, _: number): MercatorCoordinate {\n const coord = globePointCoordinate(tr, x, y, true);\n if (!coord) { return new MercatorCoordinate(0, 0); } // This won't happen, is here for Flow\n return coord;\n }\n\n pointCoordinate3D(tr: Transform, x: number, y: number): ?Vec3 {\n const coord = this.pointCoordinate(tr, x, y, 0);\n return [coord.x, coord.y, coord.z];\n }\n\n isPointAboveHorizon(tr: Transform, p: Point): boolean {\n const raycastOnGlobe = globePointCoordinate(tr, p.x, p.y, false);\n return !raycastOnGlobe;\n }\n\n farthestPixelDistance(tr: Transform): number {\n const pixelsPerMeter = this.pixelsPerMeter(tr.center.lat, tr.worldSize);\n const globePixelDistance = farthestPixelDistanceOnSphere(tr, pixelsPerMeter);\n const t = globeToMercatorTransition(tr.zoom);\n if (t > 0.0) {\n const mercatorPixelsPerMeter = mercatorZfromAltitude(1, tr.center.lat) * tr.worldSize;\n const mercatorPixelDistance = farthestPixelDistanceOnPlane(tr, mercatorPixelsPerMeter);\n const pixelRadius = tr.worldSize / (2.0 * Math.PI);\n const approxTileArcHalfAngle = Math.max(tr.width, tr.height) / tr.worldSize * Math.PI;\n const padding = pixelRadius * (1.0 - Math.cos(approxTileArcHalfAngle));\n\n // During transition to mercator we would like to keep\n // the far plane lower to ensure that geometries (e.g. circles) that are far away and are not supposed\n // to be rendered get culled out correctly. see https://github.com/mapbox/mapbox-gl-js/issues/11476\n // To achieve this we dampen the interpolation.\n return interpolate(globePixelDistance, mercatorPixelDistance + padding, Math.pow(t, 10.0));\n }\n return globePixelDistance;\n }\n\n upVector(id: CanonicalTileID, x: number, y: number): Vec3 {\n return tileCoordToECEF(x, y, id, 1);\n }\n\n upVectorScale(id: CanonicalTileID): ElevationScale {\n return {metersToTile: globeMetersToEcef(globeECEFNormalizationScale(globeTileBounds(id)))};\n }\n}\n","// @flow\nimport Albers from './albers.js';\nimport EqualEarth from './equal_earth.js';\nimport Equirectangular from './equirectangular.js';\nimport LambertConformalConic from './lambert.js';\nimport Mercator from './mercator.js';\nimport NaturalEarth from './natural_earth.js';\nimport WinkelTripel from './winkel_tripel.js';\nimport CylindricalEqualArea from './cylindrical_equal_area.js';\nimport Globe from './globe.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type Projection from './projection.js';\n\nexport function getProjection(config: ProjectionSpecification): Projection {\n\n const parallels = config.parallels;\n const isDegenerateConic = parallels ? Math.abs(parallels[0] + parallels[1]) < 0.01 : false;\n\n switch (config.name) {\n case 'mercator':\n return new Mercator(config);\n case 'equirectangular':\n return new Equirectangular(config);\n case 'naturalEarth':\n return new NaturalEarth(config);\n case 'equalEarth':\n return new EqualEarth(config);\n case 'winkelTripel':\n return new WinkelTripel(config);\n case 'albers':\n return isDegenerateConic ? new CylindricalEqualArea(config) : new Albers(config);\n case 'lambertConformalConic':\n return isDegenerateConic ? new CylindricalEqualArea(config) : new LambertConformalConic(config);\n case 'globe':\n return new Globe(config);\n }\n\n throw new Error(`Invalid projection name: ${config.name}`);\n}\n","// @flow\n\nimport {symbolLayoutAttributes,\n symbolGlobeExtAttributes,\n collisionVertexAttributes,\n collisionVertexAttributesExt,\n collisionBoxLayout,\n dynamicLayoutAttributes\n} from './symbol_attributes.js';\n\nimport {SymbolLayoutArray,\n SymbolGlobeExtArray,\n SymbolDynamicLayoutArray,\n SymbolOpacityArray,\n CollisionBoxLayoutArray,\n CollisionVertexExtArray,\n CollisionVertexArray,\n PlacedSymbolArray,\n SymbolInstanceArray,\n GlyphOffsetArray,\n SymbolLineVertexArray\n} from '../array_types.js';\n\nimport ONE_EM from '../../symbol/one_em.js';\nimport * as symbolSize from '../../symbol/symbol_size.js';\nimport Point from '@mapbox/point-geometry';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray, LineIndexArray} from '../index_array_type.js';\nimport transformText from '../../symbol/transform_text.js';\nimport mergeLines from '../../symbol/mergelines.js';\nimport {allowsVerticalWritingMode, stringContainsRTLText} from '../../util/script_detection.js';\nimport {WritingMode} from '../../symbol/shaping.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport {VectorTileFeature} from '@mapbox/vector-tile';\nconst vectorTileFeatureTypes = VectorTileFeature.types;\nimport {verticalizedCharacterMap} from '../../util/verticalize_punctuation.js';\nimport Anchor from '../../symbol/anchor.js';\nimport {getSizeData} from '../../symbol/symbol_size.js';\nimport {MAX_PACKED_SIZE} from '../../symbol/symbol_layout.js';\nimport {register} from '../../util/web_worker_transfer.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\nimport Formatted from '../../style-spec/expression/types/formatted.js';\nimport ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\nimport {plugin as globalRTLTextPlugin, getRTLTextPluginStatus} from '../../source/rtl_text_plugin.js';\nimport {resamplePred} from '../../geo/projection/resample.js';\nimport {tileCoordToECEF} from '../../geo/projection/globe_util.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport {getProjection} from '../../geo/projection/index.js';\nimport type Projection from '../../geo/projection/projection.js';\nimport {mat4, vec3} from 'gl-matrix';\n\nimport type {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types.js';\nimport type {StructArray, StructArrayMember} from '../../util/struct_array.js';\nimport SymbolStyleLayer from '../../style/style_layer/symbol_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type {SymbolQuad} from '../../symbol/quads.js';\nimport type {SizeData} from '../../symbol/symbol_size.js';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nexport type SingleCollisionBox = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n padding: number;\n projectedAnchorX: number;\n projectedAnchorY: number;\n projectedAnchorZ: number;\n tileAnchorX: number;\n tileAnchorY: number;\n elevation?: number;\n tileID?: OverscaledTileID;\n};\nimport type {Mat4, Vec3} from 'gl-matrix';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {IVectorTileLayer} from '@mapbox/vector-tile';\n\nexport type CollisionArrays = {\n textBox?: SingleCollisionBox;\n verticalTextBox?: SingleCollisionBox;\n iconBox?: SingleCollisionBox;\n verticalIconBox?: SingleCollisionBox;\n textFeatureIndex?: number;\n verticalTextFeatureIndex?: number;\n iconFeatureIndex?: number;\n verticalIconFeatureIndex?: number;\n};\n\nexport type SymbolFeature = {|\n sortKey: number | void,\n text: Formatted | void,\n icon: ?ResolvedImage,\n index: number,\n sourceLayerIndex: number,\n geometry: Array>,\n properties: Object,\n type: 'Point' | 'LineString' | 'Polygon',\n id?: any\n|};\n\nexport type SortKeyRange = {\n sortKey: number,\n symbolInstanceStart: number,\n symbolInstanceEnd: number\n};\n\ntype LineVertexRange = {|\n lineLength: number,\n lineStartIndex: number\n|};\n\n// Opacity arrays are frequently updated but don't contain a lot of information, so we pack them\n// tight. Each Uint32 is actually four duplicate Uint8s for the four corners of a glyph\n// 7 bits are for the current opacity, and the lowest bit is the target opacity\n\n// actually defined in symbol_attributes.js\n// const placementOpacityAttributes = [\n// { name: 'a_fade_opacity', components: 1, type: 'Uint32' }\n// ];\nconst shaderOpacityAttributes = [\n {name: 'a_fade_opacity', components: 1, type: 'Uint8', offset: 0}\n];\n\nfunction addVertex(array: SymbolLayoutArray, tileAnchorX: number, tileAnchorY: number, ox: number, oy: number, tx: number, ty: number, sizeVertex: any, isSDF: boolean, pixelOffsetX: number, pixelOffsetY: number, minFontScaleX: number, minFontScaleY: number) {\n const aSizeX = sizeVertex ? Math.min(MAX_PACKED_SIZE, Math.round(sizeVertex[0])) : 0;\n const aSizeY = sizeVertex ? Math.min(MAX_PACKED_SIZE, Math.round(sizeVertex[1])) : 0;\n\n array.emplaceBack(\n // a_pos_offset\n tileAnchorX,\n tileAnchorY,\n Math.round(ox * 32),\n Math.round(oy * 32),\n\n // a_data\n tx, // x coordinate of symbol on glyph atlas texture\n ty, // y coordinate of symbol on glyph atlas texture\n (aSizeX << 1) + (isSDF ? 1 : 0),\n aSizeY,\n pixelOffsetX * 16,\n pixelOffsetY * 16,\n minFontScaleX * 256,\n minFontScaleY * 256\n );\n}\n\nfunction addGlobeVertex(array: SymbolGlobeExtArray, projAnchorX: number, projAnchorY: number, projAnchorZ: number, normX: number, normY: number, normZ: number) {\n array.emplaceBack(\n // a_globe_anchor\n projAnchorX,\n projAnchorY,\n projAnchorZ,\n\n // a_globe_normal\n normX,\n normY,\n normZ\n );\n}\n\nfunction updateGlobeVertexNormal(array: SymbolGlobeExtArray, vertexIdx: number, normX: number, normY: number, normZ: number) {\n // Modify float32 array directly. 20 bytes per entry, 3xInt16 for position, 3xfloat32 for normal\n const offset = vertexIdx * 5 + 2;\n array.float32[offset + 0] = normX;\n array.float32[offset + 1] = normY;\n array.float32[offset + 2] = normZ;\n}\n\nfunction addDynamicAttributes(dynamicLayoutVertexArray: StructArray, x: number, y: number, z: number, angle: number) {\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n}\n\nfunction containsRTLText(formattedText: Formatted): boolean {\n for (const section of formattedText.sections) {\n if (stringContainsRTLText(section.text)) {\n return true;\n }\n }\n return false;\n}\n\nexport class SymbolBuffers {\n layoutVertexArray: SymbolLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n programConfigurations: ProgramConfigurationSet;\n segments: SegmentVector;\n\n dynamicLayoutVertexArray: SymbolDynamicLayoutArray;\n dynamicLayoutVertexBuffer: VertexBuffer;\n\n opacityVertexArray: SymbolOpacityArray;\n opacityVertexBuffer: VertexBuffer;\n\n globeExtVertexArray: SymbolGlobeExtArray;\n globeExtVertexBuffer: VertexBuffer;\n\n placedSymbolArray: PlacedSymbolArray;\n\n constructor(programConfigurations: ProgramConfigurationSet) {\n this.layoutVertexArray = new SymbolLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.programConfigurations = programConfigurations;\n this.segments = new SegmentVector();\n this.dynamicLayoutVertexArray = new SymbolDynamicLayoutArray();\n this.opacityVertexArray = new SymbolOpacityArray();\n this.placedSymbolArray = new PlacedSymbolArray();\n this.globeExtVertexArray = new SymbolGlobeExtArray();\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0 &&\n this.indexArray.length === 0 &&\n this.dynamicLayoutVertexArray.length === 0 &&\n this.opacityVertexArray.length === 0;\n }\n\n upload(context: Context, dynamicIndexBuffer: boolean, upload?: boolean, update?: boolean) {\n if (this.isEmpty()) {\n return;\n }\n\n if (upload) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, symbolLayoutAttributes.members);\n this.indexBuffer = context.createIndexBuffer(this.indexArray, dynamicIndexBuffer);\n this.dynamicLayoutVertexBuffer = context.createVertexBuffer(this.dynamicLayoutVertexArray, dynamicLayoutAttributes.members, true);\n this.opacityVertexBuffer = context.createVertexBuffer(this.opacityVertexArray, shaderOpacityAttributes, true);\n if (this.globeExtVertexArray.length > 0) {\n this.globeExtVertexBuffer = context.createVertexBuffer(this.globeExtVertexArray, symbolGlobeExtAttributes.members, true);\n }\n // This is a performance hack so that we can write to opacityVertexArray with uint32s\n // even though the shaders read uint8s\n this.opacityVertexBuffer.itemSize = 1;\n }\n if (upload || update) {\n this.programConfigurations.upload(context);\n }\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n this.dynamicLayoutVertexBuffer.destroy();\n this.opacityVertexBuffer.destroy();\n if (this.globeExtVertexBuffer) {\n this.globeExtVertexBuffer.destroy();\n }\n }\n}\n\nregister(SymbolBuffers, 'SymbolBuffers');\n\nclass CollisionBuffers {\n layoutVertexArray: StructArray;\n layoutAttributes: Array;\n layoutVertexBuffer: VertexBuffer;\n\n indexArray: TriangleIndexArray | LineIndexArray;\n indexBuffer: IndexBuffer;\n\n segments: SegmentVector;\n\n collisionVertexArray: CollisionVertexArray;\n collisionVertexBuffer: VertexBuffer;\n\n collisionVertexArrayExt: CollisionVertexExtArray;\n collisionVertexBufferExt: VertexBuffer;\n\n constructor(LayoutArray: Class,\n layoutAttributes: Array,\n IndexArray: Class) {\n this.layoutVertexArray = new LayoutArray();\n this.layoutAttributes = layoutAttributes;\n this.indexArray = new IndexArray();\n this.segments = new SegmentVector();\n this.collisionVertexArray = new CollisionVertexArray();\n this.collisionVertexArrayExt = new CollisionVertexExtArray();\n }\n\n upload(context: Context) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, this.layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n this.collisionVertexBuffer = context.createVertexBuffer(this.collisionVertexArray, collisionVertexAttributes.members, true);\n this.collisionVertexBufferExt = context.createVertexBuffer(this.collisionVertexArrayExt, collisionVertexAttributesExt.members, true);\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.segments.destroy();\n this.collisionVertexBuffer.destroy();\n this.collisionVertexBufferExt.destroy();\n }\n}\n\nregister(CollisionBuffers, 'CollisionBuffers');\n\n/**\n * Unlike other buckets, which simply implement #addFeature with type-specific\n * logic for (essentially) triangulating feature geometries, SymbolBucket\n * requires specialized behavior:\n *\n * 1. WorkerTile#parse(), the logical owner of the bucket creation process,\n * calls SymbolBucket#populate(), which resolves text and icon tokens on\n * each feature, adds each glyphs and symbols needed to the passed-in\n * collections options.glyphDependencies and options.iconDependencies, and\n * stores the feature data for use in subsequent step (this.features).\n *\n * 2. WorkerTile asynchronously requests from the main thread all of the glyphs\n * and icons needed (by this bucket and any others). When glyphs and icons\n * have been received, the WorkerTile creates a CollisionIndex and invokes:\n *\n * 3. performSymbolLayout(bucket, stacks, icons) perform texts shaping and\n * layout on a Symbol Bucket. This step populates:\n * `this.symbolInstances`: metadata on generated symbols\n * `collisionBoxArray`: collision data for use by foreground\n * `this.text`: SymbolBuffers for text symbols\n * `this.icons`: SymbolBuffers for icons\n * `this.iconCollisionBox`: Debug SymbolBuffers for icon collision boxes\n * `this.textCollisionBox`: Debug SymbolBuffers for text collision boxes\n * The results are sent to the foreground for rendering\n *\n * 4. Placement.updateBucketOpacities() is run on the foreground,\n * and uses the CollisionIndex along with current camera settings to determine\n * which symbols can actually show on the map. Collided symbols are hidden\n * using a dynamic \"OpacityVertexArray\".\n *\n * @private\n */\nclass SymbolBucket implements Bucket {\n static MAX_GLYPHS: number;\n static addDynamicAttributes: typeof addDynamicAttributes;\n\n collisionBoxArray: CollisionBoxArray;\n zoom: number;\n overscaling: number;\n layers: Array;\n layerIds: Array;\n stateDependentLayers: Array;\n stateDependentLayerIds: Array;\n\n index: number;\n sdfIcons: boolean;\n iconsInText: boolean;\n iconsNeedLinear: boolean;\n bucketInstanceId: number;\n justReloaded: boolean;\n hasPattern: boolean;\n fullyClipped: boolean;\n\n textSizeData: SizeData;\n iconSizeData: SizeData;\n\n glyphOffsetArray: GlyphOffsetArray;\n lineVertexArray: SymbolLineVertexArray;\n features: Array;\n symbolInstances: SymbolInstanceArray;\n collisionArrays: Array;\n sortKeyRanges: Array;\n pixelRatio: number;\n tilePixelRatio: number;\n compareText: {[_: string]: Array};\n fadeStartTime: number;\n sortFeaturesByKey: boolean;\n sortFeaturesByY: boolean;\n canOverlap: boolean;\n sortedAngle: number;\n featureSortOrder: Array;\n\n collisionCircleArray: Array;\n placementInvProjMatrix: Mat4;\n placementViewportMatrix: Mat4;\n\n text: SymbolBuffers;\n icon: SymbolBuffers;\n textCollisionBox: CollisionBuffers;\n iconCollisionBox: CollisionBuffers;\n uploaded: boolean;\n sourceLayerIndex: number;\n sourceID: string;\n symbolInstanceIndexes: Array;\n writingModes: Array;\n allowVerticalPlacement: boolean;\n hasRTLText: boolean;\n projection: ProjectionSpecification;\n projectionInstance: ?Projection;\n\n constructor(options: BucketParameters) {\n this.collisionBoxArray = options.collisionBoxArray;\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.pixelRatio = options.pixelRatio;\n this.sourceLayerIndex = options.sourceLayerIndex;\n this.hasPattern = false;\n this.hasRTLText = false;\n this.fullyClipped = false;\n this.sortKeyRanges = [];\n\n this.collisionCircleArray = [];\n this.placementInvProjMatrix = mat4.identity([]);\n this.placementViewportMatrix = mat4.identity([]);\n\n const layer = this.layers[0];\n const unevaluatedLayoutValues = layer._unevaluatedLayout._values;\n\n this.textSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['text-size']);\n this.iconSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['icon-size']);\n\n const layout = this.layers[0].layout;\n const sortKey = layout.get('symbol-sort-key');\n const zOrder = layout.get('symbol-z-order');\n this.canOverlap =\n layout.get('text-allow-overlap') ||\n layout.get('icon-allow-overlap') ||\n layout.get('text-ignore-placement') ||\n layout.get('icon-ignore-placement');\n this.sortFeaturesByKey = zOrder !== 'viewport-y' && sortKey.constantOr(1) !== undefined;\n const zOrderByViewportY = zOrder === 'viewport-y' || (zOrder === 'auto' && !this.sortFeaturesByKey);\n this.sortFeaturesByY = zOrderByViewportY && this.canOverlap;\n\n this.writingModes = layout.get('text-writing-mode').map(wm => WritingMode[wm]);\n\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n\n this.sourceID = options.sourceID;\n this.projection = options.projection;\n }\n\n createArrays() {\n this.text = new SymbolBuffers(new ProgramConfigurationSet(this.layers, this.zoom, property => /^text/.test(property)));\n this.icon = new SymbolBuffers(new ProgramConfigurationSet(this.layers, this.zoom, property => /^icon/.test(property)));\n\n this.glyphOffsetArray = new GlyphOffsetArray();\n this.lineVertexArray = new SymbolLineVertexArray();\n this.symbolInstances = new SymbolInstanceArray();\n }\n\n calculateGlyphDependencies(text: string, stack: {[_: number]: boolean}, textAlongLine: boolean, allowVerticalPlacement: boolean, doesAllowVerticalWritingMode: boolean) {\n for (let i = 0; i < text.length; i++) {\n stack[text.charCodeAt(i)] = true;\n if (allowVerticalPlacement && doesAllowVerticalWritingMode) {\n const verticalChar = verticalizedCharacterMap[text.charAt(i)];\n if (verticalChar) {\n stack[verticalChar.charCodeAt(0)] = true;\n }\n }\n }\n }\n\n populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n const layer = this.layers[0];\n const layout = layer.layout;\n const isGlobe = this.projection.name === 'globe';\n\n const textFont = layout.get('text-font');\n const textField = layout.get('text-field');\n const iconImage = layout.get('icon-image');\n const hasText =\n (textField.value.kind !== 'constant' ||\n (textField.value.value instanceof Formatted && !textField.value.value.isEmpty()) ||\n textField.value.value.toString().length > 0) &&\n (textFont.value.kind !== 'constant' || textFont.value.value.length > 0);\n // we should always resolve the icon-image value if the property was defined in the style\n // this allows us to fire the styleimagemissing event if image evaluation returns null\n // the only way to distinguish between null returned from a coalesce statement with no valid images\n // and null returned because icon-image wasn't defined is to check whether or not iconImage.parameters is an empty object\n const hasIcon = iconImage.value.kind !== 'constant' || !!iconImage.value.value || Object.keys(iconImage.parameters).length > 0;\n const symbolSortKey = layout.get('symbol-sort-key');\n\n this.features = [];\n\n if (!hasText && !hasIcon) {\n return;\n }\n\n const icons = options.iconDependencies;\n const stacks = options.glyphDependencies;\n const availableImages = options.availableImages;\n const globalProperties = new EvaluationParameters(this.zoom);\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n\n const needGeometry = layer._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n // $FlowFixMe[method-unbinding]\n if (!layer._featureFilter.filter(globalProperties, evaluationFeature, canonical)) {\n continue;\n }\n\n if (!needGeometry) evaluationFeature.geometry = loadGeometry(feature, canonical, tileTransform);\n\n if (isGlobe && feature.type !== 1 && canonical.z <= 5) {\n // Resample long lines and polygons in globe view so that their length wont exceed ~0.19 radians (360/32 degrees).\n // Otherwise lines could clip through the globe as the resolution is not enough to represent curved paths.\n // The threshold value follows subdivision size used with fill extrusions\n const geom = evaluationFeature.geometry;\n\n // cos(11.25 degrees) = 0.98078528056\n const cosAngleThreshold = 0.98078528056;\n const predicate = (a: Point, b: Point) => {\n const v0 = tileCoordToECEF(a.x, a.y, canonical, 1);\n const v1 = tileCoordToECEF(b.x, b.y, canonical, 1);\n return vec3.dot(v0, v1) < cosAngleThreshold;\n };\n\n for (let i = 0; i < geom.length; i++) {\n geom[i] = resamplePred(geom[i], predicate);\n }\n }\n\n let text: Formatted | void;\n if (hasText) {\n // Expression evaluation will automatically coerce to Formatted\n // but plain string token evaluation skips that pathway so do the\n // conversion here.\n const resolvedTokens = layer.getValueAndResolveTokens('text-field', evaluationFeature, canonical, availableImages);\n const formattedText = Formatted.factory(resolvedTokens);\n if (containsRTLText(formattedText)) {\n this.hasRTLText = true;\n }\n if (\n !this.hasRTLText || // non-rtl text so can proceed safely\n getRTLTextPluginStatus() === 'unavailable' || // We don't intend to lazy-load the rtl text plugin, so proceed with incorrect shaping\n (this.hasRTLText && globalRTLTextPlugin.isParsed()) // Use the rtlText plugin to shape text\n ) {\n text = transformText(formattedText, layer, evaluationFeature);\n }\n }\n\n let icon: ?ResolvedImage;\n if (hasIcon) {\n // Expression evaluation will automatically coerce to Image\n // but plain string token evaluation skips that pathway so do the\n // conversion here.\n const resolvedTokens = layer.getValueAndResolveTokens('icon-image', evaluationFeature, canonical, availableImages);\n if (resolvedTokens instanceof ResolvedImage) {\n icon = resolvedTokens;\n } else {\n icon = ResolvedImage.fromString(resolvedTokens);\n }\n }\n\n if (!text && !icon) {\n continue;\n }\n const sortKey = this.sortFeaturesByKey ?\n symbolSortKey.evaluate(evaluationFeature, {}, canonical) :\n undefined;\n\n const symbolFeature: SymbolFeature = {\n id,\n text,\n icon,\n index,\n sourceLayerIndex,\n geometry: evaluationFeature.geometry,\n properties: feature.properties,\n type: vectorTileFeatureTypes[feature.type],\n sortKey\n };\n this.features.push(symbolFeature);\n\n if (icon) {\n icons[icon.name] = true;\n }\n\n if (text) {\n const fontStack = textFont.evaluate(evaluationFeature, {}, canonical).join(',');\n const textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';\n this.allowVerticalPlacement = this.writingModes && this.writingModes.indexOf(WritingMode.vertical) >= 0;\n for (const section of text.sections) {\n if (!section.image) {\n const doesAllowVerticalWritingMode = allowsVerticalWritingMode(text.toString());\n const sectionFont = section.fontStack || fontStack;\n const sectionStack = stacks[sectionFont] = stacks[sectionFont] || {};\n this.calculateGlyphDependencies(section.text, sectionStack, textAlongLine, this.allowVerticalPlacement, doesAllowVerticalWritingMode);\n } else {\n // Add section image to the list of dependencies.\n icons[section.image.name] = true;\n }\n }\n }\n }\n\n if (layout.get('symbol-placement') === 'line') {\n // Merge adjacent lines with the same text to improve labelling.\n // It's better to place labels on one long line than on many short segments.\n this.features = mergeLines(this.features);\n }\n\n if (this.sortFeaturesByKey) {\n this.features.sort((a, b) => {\n // a.sortKey is always a number when sortFeaturesByKey is true\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n }\n\n update(states: FeatureStates, vtLayer: IVectorTileLayer, availableImages: Array, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.text.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, availableImages, imagePositions);\n this.icon.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, availableImages, imagePositions);\n }\n\n isEmpty(): boolean {\n // When the bucket encounters only rtl-text but the plugin isn't loaded, no symbol instances will be created.\n // In order for the bucket to be serialized, and not discarded as an empty bucket both checks are necessary.\n return this.symbolInstances.length === 0 && !this.hasRTLText;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.text.programConfigurations.needsUpload || this.icon.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded && this.hasDebugData()) {\n this.textCollisionBox.upload(context);\n this.iconCollisionBox.upload(context);\n }\n this.text.upload(context, this.sortFeaturesByY, !this.uploaded, this.text.programConfigurations.needsUpload);\n this.icon.upload(context, this.sortFeaturesByY, !this.uploaded, this.icon.programConfigurations.needsUpload);\n this.uploaded = true;\n }\n\n destroyDebugData() {\n this.textCollisionBox.destroy();\n this.iconCollisionBox.destroy();\n }\n\n getProjection(): Projection {\n if (!this.projectionInstance) {\n this.projectionInstance = getProjection(this.projection);\n }\n return this.projectionInstance;\n }\n\n destroy() {\n this.text.destroy();\n this.icon.destroy();\n\n if (this.hasDebugData()) {\n this.destroyDebugData();\n }\n }\n\n addToLineVertexArray(anchor: Anchor, line: Array): LineVertexRange {\n const lineStartIndex = this.lineVertexArray.length;\n if (anchor.segment !== undefined) {\n for (const {x, y} of line) {\n this.lineVertexArray.emplaceBack(x, y);\n }\n }\n return {\n lineStartIndex,\n lineLength: this.lineVertexArray.length - lineStartIndex\n };\n }\n\n addSymbols(arrays: SymbolBuffers,\n quads: Array,\n sizeVertex: any,\n lineOffset: [number, number],\n alongLine: boolean,\n feature: SymbolFeature,\n writingMode: any,\n globe: ?{ anchor: Anchor, up: Vec3 },\n tileAnchor: Anchor,\n lineStartIndex: number,\n lineLength: number,\n associatedIconIndex: number,\n availableImages: Array,\n canonical: CanonicalTileID) {\n const indexArray = arrays.indexArray;\n const layoutVertexArray = arrays.layoutVertexArray;\n const globeExtVertexArray = arrays.globeExtVertexArray;\n\n const segment = arrays.segments.prepareSegment(4 * quads.length, layoutVertexArray, indexArray, this.canOverlap ? feature.sortKey : undefined);\n const glyphOffsetArrayStart = this.glyphOffsetArray.length;\n const vertexStartIndex = segment.vertexLength;\n\n const angle = (this.allowVerticalPlacement && writingMode === WritingMode.vertical) ? Math.PI / 2 : 0;\n\n const sections = feature.text && feature.text.sections;\n\n for (let i = 0; i < quads.length; i++) {\n const {tl, tr, bl, br, tex, pixelOffsetTL, pixelOffsetBR, minFontScaleX, minFontScaleY, glyphOffset, isSDF, sectionIndex} = quads[i];\n const index = segment.vertexLength;\n\n const y = glyphOffset[1];\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, tl.x, y + tl.y, tex.x, tex.y, sizeVertex, isSDF, pixelOffsetTL.x, pixelOffsetTL.y, minFontScaleX, minFontScaleY);\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, tr.x, y + tr.y, tex.x + tex.w, tex.y, sizeVertex, isSDF, pixelOffsetBR.x, pixelOffsetTL.y, minFontScaleX, minFontScaleY);\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, bl.x, y + bl.y, tex.x, tex.y + tex.h, sizeVertex, isSDF, pixelOffsetTL.x, pixelOffsetBR.y, minFontScaleX, minFontScaleY);\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, br.x, y + br.y, tex.x + tex.w, tex.y + tex.h, sizeVertex, isSDF, pixelOffsetBR.x, pixelOffsetBR.y, minFontScaleX, minFontScaleY);\n\n if (globe) {\n const {x, y, z} = globe.anchor;\n const [ux, uy, uz] = globe.up;\n addGlobeVertex(globeExtVertexArray, x, y, z, ux, uy, uz);\n addGlobeVertex(globeExtVertexArray, x, y, z, ux, uy, uz);\n addGlobeVertex(globeExtVertexArray, x, y, z, ux, uy, uz);\n addGlobeVertex(globeExtVertexArray, x, y, z, ux, uy, uz);\n\n addDynamicAttributes(arrays.dynamicLayoutVertexArray, x, y, z, angle);\n } else {\n addDynamicAttributes(arrays.dynamicLayoutVertexArray, tileAnchor.x, tileAnchor.y, tileAnchor.z, angle);\n }\n\n indexArray.emplaceBack(index, index + 1, index + 2);\n indexArray.emplaceBack(index + 1, index + 2, index + 3);\n\n segment.vertexLength += 4;\n segment.primitiveLength += 2;\n\n this.glyphOffsetArray.emplaceBack(glyphOffset[0]);\n\n if (i === quads.length - 1 || sectionIndex !== quads[i + 1].sectionIndex) {\n arrays.programConfigurations.populatePaintArrays(layoutVertexArray.length, feature, feature.index, {}, availableImages, canonical, sections && sections[sectionIndex]);\n }\n }\n\n const projectedAnchor = globe ? globe.anchor : tileAnchor;\n\n arrays.placedSymbolArray.emplaceBack(projectedAnchor.x, projectedAnchor.y, projectedAnchor.z, tileAnchor.x, tileAnchor.y,\n glyphOffsetArrayStart, this.glyphOffsetArray.length - glyphOffsetArrayStart, vertexStartIndex,\n lineStartIndex, lineLength, (tileAnchor.segment: any),\n sizeVertex ? sizeVertex[0] : 0, sizeVertex ? sizeVertex[1] : 0,\n lineOffset[0], lineOffset[1],\n writingMode,\n // placedOrientation is null initially; will be updated to horizontal(1)/vertical(2) if placed\n 0,\n (false: any),\n // The crossTileID is only filled/used on the foreground for dynamic text anchors\n 0,\n associatedIconIndex,\n // flipState is unknown initially; will be updated to flipRequired(1)/flipNotRequired(2) during line label reprojection\n 0\n );\n }\n\n _commitLayoutVertex(array: StructArray, boxTileAnchorX: number, boxTileAnchorY: number, boxTileAnchorZ: number, tileAnchorX: number, tileAnchorY: number, extrude: Point) {\n array.emplaceBack(\n // pos\n boxTileAnchorX,\n boxTileAnchorY,\n boxTileAnchorZ,\n // a_anchor_pos\n tileAnchorX,\n tileAnchorY,\n // extrude\n Math.round(extrude.x),\n Math.round(extrude.y));\n }\n\n _addCollisionDebugVertices(box: CollisionBox, scale: number, arrays: CollisionBuffers, boxTileAnchorX: number, boxTileAnchorY: number, boxTileAnchorZ: number, symbolInstance: SymbolInstance) {\n const segment = arrays.segments.prepareSegment(4, arrays.layoutVertexArray, arrays.indexArray);\n const index = segment.vertexLength;\n const symbolTileAnchorX = symbolInstance.tileAnchorX;\n const symbolTileAnchorY = symbolInstance.tileAnchorY;\n\n for (let i = 0; i < 4; i++) {\n arrays.collisionVertexArray.emplaceBack(0, 0, 0, 0);\n }\n\n arrays.collisionVertexArrayExt.emplaceBack(scale, -box.padding, -box.padding);\n arrays.collisionVertexArrayExt.emplaceBack(scale, box.padding, -box.padding);\n arrays.collisionVertexArrayExt.emplaceBack(scale, box.padding, box.padding);\n arrays.collisionVertexArrayExt.emplaceBack(scale, -box.padding, box.padding);\n\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x1, box.y1));\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x2, box.y1));\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x2, box.y2));\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x1, box.y2));\n\n segment.vertexLength += 4;\n\n const indexArray: LineIndexArray = (arrays.indexArray: any);\n indexArray.emplaceBack(index, index + 1);\n indexArray.emplaceBack(index + 1, index + 2);\n indexArray.emplaceBack(index + 2, index + 3);\n indexArray.emplaceBack(index + 3, index);\n\n segment.primitiveLength += 4;\n }\n\n _addTextDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, instance: SymbolInstance) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceTextSize(size, instance, zoom, b);\n\n this._addCollisionDebugVertices(box, scale, this.textCollisionBox, box.projectedAnchorX, box.projectedAnchorY, box.projectedAnchorZ, instance);\n }\n }\n\n _addIconDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, instance: SymbolInstance) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceIconSize(size, zoom, instance.placedIconSymbolIndex);\n\n this._addCollisionDebugVertices(box, scale, this.iconCollisionBox, box.projectedAnchorX, box.projectedAnchorY, box.projectedAnchorZ, instance);\n }\n }\n\n generateCollisionDebugBuffers(zoom: number, collisionBoxArray: CollisionBoxArray) {\n if (this.hasDebugData()) {\n this.destroyDebugData();\n }\n\n this.textCollisionBox = new CollisionBuffers(CollisionBoxLayoutArray, collisionBoxLayout.members, LineIndexArray);\n this.iconCollisionBox = new CollisionBuffers(CollisionBoxLayoutArray, collisionBoxLayout.members, LineIndexArray);\n\n const iconSize = symbolSize.evaluateSizeForZoom(this.iconSizeData, zoom);\n const textSize = symbolSize.evaluateSizeForZoom(this.textSizeData, zoom);\n\n for (let i = 0; i < this.symbolInstances.length; i++) {\n const symbolInstance = this.symbolInstances.get(i);\n this._addTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.textBoxStartIndex, symbolInstance.textBoxEndIndex, symbolInstance);\n this._addTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.verticalTextBoxStartIndex, symbolInstance.verticalTextBoxEndIndex, symbolInstance);\n this._addIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.iconBoxStartIndex, symbolInstance.iconBoxEndIndex, symbolInstance);\n this._addIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.verticalIconBoxStartIndex, symbolInstance.verticalIconBoxEndIndex, symbolInstance);\n }\n }\n\n getSymbolInstanceTextSize(textSize: any, instance: SymbolInstance, zoom: number, boxIndex: number): number {\n const symbolIndex = instance.rightJustifiedTextSymbolIndex >= 0 ?\n instance.rightJustifiedTextSymbolIndex : instance.centerJustifiedTextSymbolIndex >= 0 ?\n instance.centerJustifiedTextSymbolIndex : instance.leftJustifiedTextSymbolIndex >= 0 ?\n instance.leftJustifiedTextSymbolIndex : instance.verticalPlacedTextSymbolIndex >= 0 ?\n instance.verticalPlacedTextSymbolIndex : boxIndex;\n\n const symbol = this.text.placedSymbolArray.get(symbolIndex);\n const featureSize = symbolSize.evaluateSizeForFeature(this.textSizeData, textSize, symbol) / ONE_EM;\n\n return this.tilePixelRatio * featureSize;\n }\n\n getSymbolInstanceIconSize(iconSize: any, zoom: number, iconIndex: number): number {\n const symbol = this.icon.placedSymbolArray.get(iconIndex);\n const featureSize = symbolSize.evaluateSizeForFeature(this.iconSizeData, iconSize, symbol);\n\n return this.tilePixelRatio * featureSize;\n }\n\n _commitDebugCollisionVertexUpdate(array: StructArray, scale: number, padding: number) {\n array.emplaceBack(scale, -padding, -padding);\n array.emplaceBack(scale, padding, -padding);\n array.emplaceBack(scale, padding, padding);\n array.emplaceBack(scale, -padding, padding);\n }\n\n _updateTextDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, instance: SymbolInstance) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceTextSize(size, instance, zoom, b);\n const array = this.textCollisionBox.collisionVertexArrayExt;\n this._commitDebugCollisionVertexUpdate(array, scale, box.padding);\n }\n }\n\n _updateIconDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, symbolIndex: number) {\n for (let b = startIndex; b < endIndex; b++) {\n const box = (collisionBoxArray.get(b));\n const scale = this.getSymbolInstanceIconSize(size, zoom, symbolIndex);\n const array = this.iconCollisionBox.collisionVertexArrayExt;\n this._commitDebugCollisionVertexUpdate(array, scale, box.padding);\n }\n }\n\n updateCollisionDebugBuffers(zoom: number, collisionBoxArray: CollisionBoxArray) {\n if (!this.hasDebugData()) {\n return;\n }\n\n if (this.hasTextCollisionBoxData()) this.textCollisionBox.collisionVertexArrayExt.clear();\n if (this.hasIconCollisionBoxData()) this.iconCollisionBox.collisionVertexArrayExt.clear();\n\n const iconSize = symbolSize.evaluateSizeForZoom(this.iconSizeData, zoom);\n const textSize = symbolSize.evaluateSizeForZoom(this.textSizeData, zoom);\n\n for (let i = 0; i < this.symbolInstances.length; i++) {\n const symbolInstance = this.symbolInstances.get(i);\n this._updateTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.textBoxStartIndex, symbolInstance.textBoxEndIndex, symbolInstance);\n this._updateTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.verticalTextBoxStartIndex, symbolInstance.verticalTextBoxEndIndex, symbolInstance);\n this._updateIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.iconBoxStartIndex, symbolInstance.iconBoxEndIndex, symbolInstance.placedIconSymbolIndex);\n this._updateIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.verticalIconBoxStartIndex, symbolInstance.verticalIconBoxEndIndex, symbolInstance.placedIconSymbolIndex);\n }\n\n if (this.hasTextCollisionBoxData() && this.textCollisionBox.collisionVertexBufferExt) {\n this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt);\n }\n if (this.hasIconCollisionBoxData() && this.iconCollisionBox.collisionVertexBufferExt) {\n this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt);\n }\n }\n\n // These flat arrays are meant to be quicker to iterate over than the source\n // CollisionBoxArray\n _deserializeCollisionBoxesForSymbol(collisionBoxArray: CollisionBoxArray,\n textStartIndex: number, textEndIndex: number,\n verticalTextStartIndex: number, verticalTextEndIndex: number,\n iconStartIndex: number, iconEndIndex: number,\n verticalIconStartIndex: number, verticalIconEndIndex: number): CollisionArrays {\n\n // Only one box allowed per instance\n const collisionArrays = {};\n if (textStartIndex < textEndIndex) {\n const {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY, featureIndex} = collisionBoxArray.get(textStartIndex);\n collisionArrays.textBox = {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY};\n collisionArrays.textFeatureIndex = featureIndex;\n }\n if (verticalTextStartIndex < verticalTextEndIndex) {\n const {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY, featureIndex} = collisionBoxArray.get(verticalTextStartIndex);\n collisionArrays.verticalTextBox = {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY};\n collisionArrays.verticalTextFeatureIndex = featureIndex;\n }\n if (iconStartIndex < iconEndIndex) {\n const {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY, featureIndex} = collisionBoxArray.get(iconStartIndex);\n collisionArrays.iconBox = {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY};\n collisionArrays.iconFeatureIndex = featureIndex;\n }\n if (verticalIconStartIndex < verticalIconEndIndex) {\n const {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY, featureIndex} = collisionBoxArray.get(verticalIconStartIndex);\n collisionArrays.verticalIconBox = {x1, y1, x2, y2, padding, projectedAnchorX, projectedAnchorY, projectedAnchorZ, tileAnchorX, tileAnchorY};\n collisionArrays.verticalIconFeatureIndex = featureIndex;\n }\n return collisionArrays;\n }\n\n deserializeCollisionBoxes(collisionBoxArray: CollisionBoxArray) {\n this.collisionArrays = [];\n for (let i = 0; i < this.symbolInstances.length; i++) {\n const symbolInstance = this.symbolInstances.get(i);\n this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(\n collisionBoxArray,\n symbolInstance.textBoxStartIndex,\n symbolInstance.textBoxEndIndex,\n symbolInstance.verticalTextBoxStartIndex,\n symbolInstance.verticalTextBoxEndIndex,\n symbolInstance.iconBoxStartIndex,\n symbolInstance.iconBoxEndIndex,\n symbolInstance.verticalIconBoxStartIndex,\n symbolInstance.verticalIconBoxEndIndex\n ));\n }\n }\n\n hasTextData(): boolean {\n return this.text.segments.get().length > 0;\n }\n\n hasIconData(): boolean {\n return this.icon.segments.get().length > 0;\n }\n\n hasDebugData(): CollisionBuffers {\n return this.textCollisionBox && this.iconCollisionBox;\n }\n\n hasTextCollisionBoxData(): boolean {\n return this.hasDebugData() && this.textCollisionBox.segments.get().length > 0;\n }\n\n hasIconCollisionBoxData(): boolean {\n return this.hasDebugData() && this.iconCollisionBox.segments.get().length > 0;\n }\n\n addIndicesForPlacedSymbol(iconOrText: SymbolBuffers, placedSymbolIndex: number) {\n const placedSymbol = iconOrText.placedSymbolArray.get(placedSymbolIndex);\n\n const endIndex = placedSymbol.vertexStartIndex + placedSymbol.numGlyphs * 4;\n for (let vertexIndex = placedSymbol.vertexStartIndex; vertexIndex < endIndex; vertexIndex += 4) {\n iconOrText.indexArray.emplaceBack(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n iconOrText.indexArray.emplaceBack(vertexIndex + 1, vertexIndex + 2, vertexIndex + 3);\n }\n }\n\n getSortedSymbolIndexes(angle: number): Array {\n if (this.sortedAngle === angle && this.symbolInstanceIndexes !== undefined) {\n return this.symbolInstanceIndexes;\n }\n const sin = Math.sin(angle);\n const cos = Math.cos(angle);\n const rotatedYs = [];\n const featureIndexes = [];\n const result = [];\n\n for (let i = 0; i < this.symbolInstances.length; ++i) {\n result.push(i);\n const symbolInstance = this.symbolInstances.get(i);\n rotatedYs.push(Math.round(sin * symbolInstance.tileAnchorX + cos * symbolInstance.tileAnchorY) | 0);\n featureIndexes.push(symbolInstance.featureIndex);\n }\n\n result.sort((aIndex, bIndex) => (rotatedYs[aIndex] - rotatedYs[bIndex]) || (featureIndexes[bIndex] - featureIndexes[aIndex]));\n\n return result;\n }\n\n addToSortKeyRanges(symbolInstanceIndex: number, sortKey: number) {\n const last = this.sortKeyRanges[this.sortKeyRanges.length - 1];\n if (last && last.sortKey === sortKey) {\n last.symbolInstanceEnd = symbolInstanceIndex + 1;\n } else {\n this.sortKeyRanges.push({\n sortKey,\n symbolInstanceStart: symbolInstanceIndex,\n symbolInstanceEnd: symbolInstanceIndex + 1\n });\n }\n }\n\n sortFeatures(angle: number) {\n if (!this.sortFeaturesByY) return;\n if (this.sortedAngle === angle) return;\n\n // The current approach to sorting doesn't sort across segments so don't try.\n // Sorting within segments separately seemed not to be worth the complexity.\n if (this.text.segments.get().length > 1 || this.icon.segments.get().length > 1) return;\n\n // If the symbols are allowed to overlap sort them by their vertical screen position.\n // The index array buffer is rewritten to reference the (unchanged) vertices in the\n // sorted order.\n\n // To avoid sorting the actual symbolInstance array we sort an array of indexes.\n this.symbolInstanceIndexes = this.getSortedSymbolIndexes(angle);\n this.sortedAngle = angle;\n\n this.text.indexArray.clear();\n this.icon.indexArray.clear();\n\n this.featureSortOrder = [];\n\n for (const i of this.symbolInstanceIndexes) {\n const symbol = this.symbolInstances.get(i);\n this.featureSortOrder.push(symbol.featureIndex);\n const {\n rightJustifiedTextSymbolIndex: right, centerJustifiedTextSymbolIndex: center,\n leftJustifiedTextSymbolIndex: left, verticalPlacedTextSymbolIndex: vertical,\n placedIconSymbolIndex: icon, verticalPlacedIconSymbolIndex: iconVertical\n } = symbol;\n\n // Only add a given index the first time it shows up, to avoid duplicate\n // opacity entries when multiple justifications share the same glyphs.\n if (right >= 0) this.addIndicesForPlacedSymbol(this.text, right);\n if (center >= 0 && center !== right) this.addIndicesForPlacedSymbol(this.text, center);\n if (left >= 0 && left !== center && left !== right) this.addIndicesForPlacedSymbol(this.text, left);\n\n if (vertical >= 0) this.addIndicesForPlacedSymbol(this.text, vertical);\n if (icon >= 0) this.addIndicesForPlacedSymbol(this.icon, icon);\n if (iconVertical >= 0) this.addIndicesForPlacedSymbol(this.icon, iconVertical);\n }\n\n if (this.text.indexBuffer) this.text.indexBuffer.updateData(this.text.indexArray);\n if (this.icon.indexBuffer) this.icon.indexBuffer.updateData(this.icon.indexArray);\n }\n}\n\nregister(SymbolBucket, 'SymbolBucket', {\n omit: ['layers', 'collisionBoxArray', 'features', 'compareText']\n});\n\n// this constant is based on the size of StructArray indexes used in a symbol\n// bucket--namely, glyphOffsetArrayStart\n// eg the max valid UInt16 is 65,535\n// See https://github.com/mapbox/mapbox-gl-js/issues/2907 for motivation\n// lineStartIndex and textBoxStartIndex could potentially be concerns\n// but we expect there to be many fewer boxes/lines than glyphs\nSymbolBucket.MAX_GLYPHS = 65535;\n\nSymbolBucket.addDynamicAttributes = addDynamicAttributes;\n\nexport default SymbolBucket;\nexport {addDynamicAttributes, updateGlobeVertexNormal};\n","// @flow\n\nimport type Point from '@mapbox/point-geometry';\nimport type {SymbolFeature} from '../data/bucket/symbol_bucket.js';\n\nexport default function (features: Array): Array {\n const leftIndex: {[_: string]: number} = {};\n const rightIndex: {[_: string]: number} = {};\n const mergedFeatures = [];\n let mergedIndex = 0;\n\n function add(k: number) {\n mergedFeatures.push(features[k]);\n mergedIndex++;\n }\n\n function mergeFromRight(leftKey: string, rightKey: string, geom: Array>) {\n const i = rightIndex[leftKey];\n delete rightIndex[leftKey];\n rightIndex[rightKey] = i;\n\n mergedFeatures[i].geometry[0].pop();\n mergedFeatures[i].geometry[0] = mergedFeatures[i].geometry[0].concat(geom[0]);\n return i;\n }\n\n function mergeFromLeft(leftKey: string, rightKey: string, geom: Array>) {\n const i = leftIndex[rightKey];\n delete leftIndex[rightKey];\n leftIndex[leftKey] = i;\n\n mergedFeatures[i].geometry[0].shift();\n mergedFeatures[i].geometry[0] = geom[0].concat(mergedFeatures[i].geometry[0]);\n return i;\n }\n\n function getKey(text: string, geom: Array>, onRight: ?boolean) {\n const point = onRight ? geom[0][geom[0].length - 1] : geom[0][0];\n return `${text}:${point.x}:${point.y}`;\n }\n\n for (let k = 0; k < features.length; k++) {\n const feature = features[k];\n const geom = feature.geometry;\n const text = feature.text ? feature.text.toString() : null;\n\n if (!text) {\n add(k);\n continue;\n }\n\n const leftKey = getKey(text, geom),\n rightKey = getKey(text, geom, true);\n\n if ((leftKey in rightIndex) && (rightKey in leftIndex) && (rightIndex[leftKey] !== leftIndex[rightKey])) {\n // found lines with the same text adjacent to both ends of the current line, merge all three\n const j = mergeFromLeft(leftKey, rightKey, geom);\n const i = mergeFromRight(leftKey, rightKey, mergedFeatures[j].geometry);\n\n delete leftIndex[leftKey];\n delete rightIndex[rightKey];\n\n rightIndex[getKey(text, mergedFeatures[i].geometry, true)] = i;\n mergedFeatures[j].geometry = (null: any);\n\n } else if (leftKey in rightIndex) {\n // found mergeable line adjacent to the start of the current line, merge\n mergeFromRight(leftKey, rightKey, geom);\n\n } else if (rightKey in leftIndex) {\n // found mergeable line adjacent to the end of the current line, merge\n mergeFromLeft(leftKey, rightKey, geom);\n\n } else {\n // no adjacent lines, add as a new item\n add(k);\n leftIndex[leftKey] = mergedIndex - 1;\n rightIndex[rightKey] = mergedIndex - 1;\n }\n }\n\n return mergedFeatures.filter((f) => f.geometry);\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nimport {\n ColorType\n} from '../../style-spec/expression/types.js';\n\nexport type LayoutProps = {|\n \"symbol-placement\": DataConstantProperty<\"point\" | \"line\" | \"line-center\">,\n \"symbol-spacing\": DataConstantProperty,\n \"symbol-avoid-edges\": DataConstantProperty,\n \"symbol-sort-key\": DataDrivenProperty,\n \"symbol-z-order\": DataConstantProperty<\"auto\" | \"viewport-y\" | \"source\">,\n \"icon-allow-overlap\": DataConstantProperty,\n \"icon-ignore-placement\": DataConstantProperty,\n \"icon-optional\": DataConstantProperty,\n \"icon-rotation-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"icon-size\": DataDrivenProperty,\n \"icon-text-fit\": DataConstantProperty<\"none\" | \"width\" | \"height\" | \"both\">,\n \"icon-text-fit-padding\": DataConstantProperty<[number, number, number, number]>,\n \"icon-image\": DataDrivenProperty,\n \"icon-rotate\": DataDrivenProperty,\n \"icon-padding\": DataConstantProperty,\n \"icon-keep-upright\": DataConstantProperty,\n \"icon-offset\": DataDrivenProperty<[number, number]>,\n \"icon-anchor\": DataDrivenProperty<\"center\" | \"left\" | \"right\" | \"top\" | \"bottom\" | \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\">,\n \"icon-pitch-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"text-pitch-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"text-rotation-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"text-field\": DataDrivenProperty,\n \"text-font\": DataDrivenProperty>,\n \"text-size\": DataDrivenProperty,\n \"text-max-width\": DataDrivenProperty,\n \"text-line-height\": DataDrivenProperty,\n \"text-letter-spacing\": DataDrivenProperty,\n \"text-justify\": DataDrivenProperty<\"auto\" | \"left\" | \"center\" | \"right\">,\n \"text-radial-offset\": DataDrivenProperty,\n \"text-variable-anchor\": DataConstantProperty>,\n \"text-anchor\": DataDrivenProperty<\"center\" | \"left\" | \"right\" | \"top\" | \"bottom\" | \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\">,\n \"text-max-angle\": DataConstantProperty,\n \"text-writing-mode\": DataConstantProperty>,\n \"text-rotate\": DataDrivenProperty,\n \"text-padding\": DataConstantProperty,\n \"text-keep-upright\": DataConstantProperty,\n \"text-transform\": DataDrivenProperty<\"none\" | \"uppercase\" | \"lowercase\">,\n \"text-offset\": DataDrivenProperty<[number, number]>,\n \"text-allow-overlap\": DataConstantProperty,\n \"text-ignore-placement\": DataConstantProperty,\n \"text-optional\": DataConstantProperty,\n|};\n\nconst layout: Properties = new Properties({\n \"symbol-placement\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-placement\"]),\n \"symbol-spacing\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-spacing\"]),\n \"symbol-avoid-edges\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-avoid-edges\"]),\n \"symbol-sort-key\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"symbol-sort-key\"]),\n \"symbol-z-order\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-z-order\"]),\n \"icon-allow-overlap\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-allow-overlap\"]),\n \"icon-ignore-placement\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-ignore-placement\"]),\n \"icon-optional\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-optional\"]),\n \"icon-rotation-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-rotation-alignment\"]),\n \"icon-size\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-size\"]),\n \"icon-text-fit\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-text-fit\"]),\n \"icon-text-fit-padding\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-text-fit-padding\"]),\n \"icon-image\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-image\"]),\n \"icon-rotate\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-rotate\"]),\n \"icon-padding\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-padding\"]),\n \"icon-keep-upright\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-keep-upright\"]),\n \"icon-offset\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-offset\"]),\n \"icon-anchor\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-anchor\"]),\n \"icon-pitch-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-pitch-alignment\"]),\n \"text-pitch-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-pitch-alignment\"]),\n \"text-rotation-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-rotation-alignment\"]),\n \"text-field\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-field\"]),\n \"text-font\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-font\"]),\n \"text-size\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-size\"]),\n \"text-max-width\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-max-width\"]),\n \"text-line-height\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-line-height\"]),\n \"text-letter-spacing\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-letter-spacing\"]),\n \"text-justify\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-justify\"]),\n \"text-radial-offset\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-radial-offset\"]),\n \"text-variable-anchor\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-variable-anchor\"]),\n \"text-anchor\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-anchor\"]),\n \"text-max-angle\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-max-angle\"]),\n \"text-writing-mode\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-writing-mode\"]),\n \"text-rotate\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-rotate\"]),\n \"text-padding\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-padding\"]),\n \"text-keep-upright\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-keep-upright\"]),\n \"text-transform\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-transform\"]),\n \"text-offset\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-offset\"]),\n \"text-allow-overlap\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-allow-overlap\"]),\n \"text-ignore-placement\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-ignore-placement\"]),\n \"text-optional\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-optional\"]),\n});\n\nexport type PaintProps = {|\n \"icon-opacity\": DataDrivenProperty,\n \"icon-color\": DataDrivenProperty,\n \"icon-halo-color\": DataDrivenProperty,\n \"icon-halo-width\": DataDrivenProperty,\n \"icon-halo-blur\": DataDrivenProperty,\n \"icon-translate\": DataConstantProperty<[number, number]>,\n \"icon-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"text-opacity\": DataDrivenProperty,\n \"text-color\": DataDrivenProperty,\n \"text-halo-color\": DataDrivenProperty,\n \"text-halo-width\": DataDrivenProperty,\n \"text-halo-blur\": DataDrivenProperty,\n \"text-translate\": DataConstantProperty<[number, number]>,\n \"text-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n|};\n\nconst paint: Properties = new Properties({\n \"icon-opacity\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-opacity\"]),\n \"icon-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-color\"]),\n \"icon-halo-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-halo-color\"]),\n \"icon-halo-width\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-halo-width\"]),\n \"icon-halo-blur\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-halo-blur\"]),\n \"icon-translate\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"icon-translate\"]),\n \"icon-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"icon-translate-anchor\"]),\n \"text-opacity\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-opacity\"]),\n \"text-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-color\"], { runtimeType: ColorType, getOverride: (o) => o.textColor, hasOverride: (o) => !!o.textColor }),\n \"text-halo-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-halo-color\"]),\n \"text-halo-width\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-halo-width\"]),\n \"text-halo-blur\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-halo-blur\"]),\n \"text-translate\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"text-translate\"]),\n \"text-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"text-translate-anchor\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties, layout: Properties\n}>);\n","// @flow\n\nimport assert from 'assert';\nimport type {Expression} from '../style-spec/expression/expression.js';\nimport type EvaluationContext from '../style-spec/expression/evaluation_context.js';\nimport type {Type} from '../style-spec/expression/types.js';\nimport type {ZoomConstantExpression} from '../style-spec/expression/index.js';\nimport {NullType} from '../style-spec/expression/types.js';\nimport {PossiblyEvaluatedPropertyValue} from './properties.js';\nimport {register} from '../util/web_worker_transfer.js';\n\n// This is an internal expression class. It is only used in GL JS and\n// has GL JS dependencies which can break the standalone style-spec module\nexport default class FormatSectionOverride implements Expression {\n type: Type;\n defaultValue: PossiblyEvaluatedPropertyValue;\n\n constructor(defaultValue: PossiblyEvaluatedPropertyValue) {\n assert(defaultValue.property.overrides !== undefined);\n this.type = defaultValue.property.overrides ? defaultValue.property.overrides.runtimeType : NullType;\n this.defaultValue = defaultValue;\n }\n\n evaluate(ctx: EvaluationContext): T {\n if (ctx.formattedSection) {\n const overrides = this.defaultValue.property.overrides;\n if (overrides && overrides.hasOverride(ctx.formattedSection)) {\n return overrides.getOverride(ctx.formattedSection);\n }\n }\n\n if (ctx.feature && ctx.featureState) {\n return this.defaultValue.evaluate(ctx.feature, ctx.featureState);\n }\n\n // not sure how to make Flow refine the type properly here — will need investigation\n return ((this.defaultValue.property.specification.default: any): T);\n }\n\n eachChild(fn: (_: Expression) => void) {\n if (!this.defaultValue.isConstant()) {\n const expr: ZoomConstantExpression<'source'> = ((this.defaultValue.value): any);\n fn(expr._styleExpression.expression);\n }\n }\n\n // Cannot be statically evaluated, as the output depends on the evaluation context.\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): null {\n return null;\n }\n}\n\nregister(FormatSectionOverride, 'FormatSectionOverride', {omit: ['defaultValue']});\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport assert from 'assert';\nimport SymbolBucket from '../../data/bucket/symbol_bucket.js';\nimport resolveTokens from '../../util/resolve_tokens.js';\nimport properties from './symbol_style_layer_properties.js';\nimport type {FormattedSection} from '../../style-spec/expression/types/formatted.js';\nimport type {FormattedSectionExpression} from '../../style-spec/expression/definitions/format.js';\n\nimport {\n Transitionable,\n Transitioning,\n Layout,\n PossiblyEvaluated,\n PossiblyEvaluatedPropertyValue,\n PropertyValue\n} from '../properties.js';\n\nimport {\n isExpression,\n StyleExpression,\n ZoomConstantExpression,\n ZoomDependentExpression\n} from '../../style-spec/expression/index.js';\n\nimport type {BucketParameters} from '../../data/bucket.js';\nimport type {LayoutProps, PaintProps} from './symbol_style_layer_properties.js';\nimport type EvaluationParameters from '../evaluation_parameters.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {Feature, SourceExpression, CompositeExpression} from '../../style-spec/expression/index.js';\nimport type {Expression} from '../../style-spec/expression/expression.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport {FormattedType} from '../../style-spec/expression/types.js';\nimport {typeOf} from '../../style-spec/expression/values.js';\nimport Formatted from '../../style-spec/expression/types/formatted.js';\nimport FormatSectionOverride from '../format_section_override.js';\nimport FormatExpression from '../../style-spec/expression/definitions/format.js';\nimport Literal from '../../style-spec/expression/definitions/literal.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\n\nclass SymbolStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout;\n layout: PossiblyEvaluated;\n\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array) {\n super.recalculate(parameters, availableImages);\n\n if (this.layout.get('icon-rotation-alignment') === 'auto') {\n if (this.layout.get('symbol-placement') !== 'point') {\n this.layout._values['icon-rotation-alignment'] = 'map';\n } else {\n this.layout._values['icon-rotation-alignment'] = 'viewport';\n }\n }\n\n if (this.layout.get('text-rotation-alignment') === 'auto') {\n if (this.layout.get('symbol-placement') !== 'point') {\n this.layout._values['text-rotation-alignment'] = 'map';\n } else {\n this.layout._values['text-rotation-alignment'] = 'viewport';\n }\n }\n\n // If unspecified, `*-pitch-alignment` inherits `*-rotation-alignment`\n if (this.layout.get('text-pitch-alignment') === 'auto') {\n this.layout._values['text-pitch-alignment'] = this.layout.get('text-rotation-alignment');\n }\n if (this.layout.get('icon-pitch-alignment') === 'auto') {\n this.layout._values['icon-pitch-alignment'] = this.layout.get('icon-rotation-alignment');\n }\n\n const writingModes = this.layout.get('text-writing-mode');\n if (writingModes) {\n // remove duplicates, preserving order\n const deduped = [];\n for (const m of writingModes) {\n if (deduped.indexOf(m) < 0) deduped.push(m);\n }\n this.layout._values['text-writing-mode'] = deduped;\n } else if (this.layout.get('symbol-placement') === 'point') {\n // default value for 'point' placement symbols\n this.layout._values['text-writing-mode'] = ['horizontal'];\n } else {\n // default value for 'line' placement symbols\n this.layout._values['text-writing-mode'] = ['horizontal', 'vertical'];\n }\n\n this._setPaintOverrides();\n }\n\n getValueAndResolveTokens(name: any, feature: Feature, canonical: CanonicalTileID, availableImages: Array): string {\n const value = this.layout.get(name).evaluate(feature, {}, canonical, availableImages);\n const unevaluated = this._unevaluatedLayout._values[name];\n if (!unevaluated.isDataDriven() && !isExpression(unevaluated.value) && value) {\n return resolveTokens(feature.properties, value);\n }\n\n return value;\n }\n\n createBucket(parameters: BucketParameters): SymbolBucket {\n return new SymbolBucket(parameters);\n }\n\n // $FlowFixMe[method-unbinding]\n queryRadius(): number {\n return 0;\n }\n\n // $FlowFixMe[method-unbinding]\n queryIntersectsFeature(): boolean {\n assert(false); // Should take a different path in FeatureIndex\n return false;\n }\n\n _setPaintOverrides() {\n for (const overridable of properties.paint.overridableProperties) {\n if (!SymbolStyleLayer.hasPaintOverride(this.layout, overridable)) {\n continue;\n }\n const overriden = this.paint.get(overridable);\n const override = new FormatSectionOverride(overriden);\n const styleExpression = new StyleExpression(override, overriden.property.specification);\n let expression = null;\n if (overriden.value.kind === 'constant' || overriden.value.kind === 'source') {\n // $FlowFixMe[method-unbinding]\n expression = (new ZoomConstantExpression('source', styleExpression): SourceExpression);\n } else {\n // $FlowFixMe[method-unbinding]\n expression = (new ZoomDependentExpression('composite',\n styleExpression,\n overriden.value.zoomStops,\n overriden.value._interpolationType): CompositeExpression);\n }\n // $FlowFixMe[prop-missing]\n this.paint._values[overridable] = new PossiblyEvaluatedPropertyValue(overriden.property,\n expression,\n overriden.parameters);\n }\n }\n\n _handleOverridablePaintPropertyUpdate(name: string, oldValue: PropertyValue, newValue: PropertyValue): boolean {\n if (!this.layout || oldValue.isDataDriven() || newValue.isDataDriven()) {\n return false;\n }\n return SymbolStyleLayer.hasPaintOverride(this.layout, name);\n }\n\n static hasPaintOverride(layout: PossiblyEvaluated, propertyName: string): boolean {\n const textField = layout.get('text-field');\n const property = properties.paint.properties[propertyName];\n let hasOverrides = false;\n\n const checkSections = (sections: Array | Array) => {\n for (const section of sections) {\n if (property.overrides && property.overrides.hasOverride(section)) {\n hasOverrides = true;\n return;\n }\n }\n };\n\n if (textField.value.kind === 'constant' && textField.value.value instanceof Formatted) {\n checkSections(textField.value.value.sections);\n } else if (textField.value.kind === 'source') {\n\n const checkExpression = (expression: Expression) => {\n if (hasOverrides) return;\n\n if (expression instanceof Literal && typeOf(expression.value) === FormattedType) {\n const formatted: Formatted = ((expression.value): any);\n checkSections(formatted.sections);\n } else if (expression instanceof FormatExpression) {\n checkSections(expression.sections);\n } else {\n expression.eachChild(checkExpression);\n }\n };\n\n const expr: ZoomConstantExpression<'source'> = ((textField.value): any);\n if (expr._styleExpression) {\n checkExpression(expr._styleExpression.expression);\n }\n }\n\n return hasOverrides;\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n}\n\nexport default SymbolStyleLayer;\n","// @flow\nexport default resolveTokens;\n\n/**\n * Replace tokens in a string template with values in an object\n *\n * @param properties a key/value relationship between tokens and replacements\n * @param text the template string\n * @returns the template with tokens replaced\n * @private\n */\nfunction resolveTokens(properties: {+[string]: mixed}, text: string): string {\n return text.replace(/{([^{}]+)}/g, (match, key: string) => {\n return key in properties ? String(properties[key]) : '';\n });\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"background-color\": DataConstantProperty,\n \"background-pattern\": DataConstantProperty,\n \"background-opacity\": DataConstantProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"background-color\": new DataConstantProperty(styleSpec[\"paint_background\"][\"background-color\"]),\n \"background-pattern\": new DataConstantProperty(styleSpec[\"paint_background\"][\"background-pattern\"]),\n \"background-opacity\": new DataConstantProperty(styleSpec[\"paint_background\"][\"background-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties\n}>);\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"raster-opacity\": DataConstantProperty,\n \"raster-hue-rotate\": DataConstantProperty,\n \"raster-brightness-min\": DataConstantProperty,\n \"raster-brightness-max\": DataConstantProperty,\n \"raster-saturation\": DataConstantProperty,\n \"raster-contrast\": DataConstantProperty,\n \"raster-resampling\": DataConstantProperty<\"linear\" | \"nearest\">,\n \"raster-fade-duration\": DataConstantProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"raster-opacity\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-opacity\"]),\n \"raster-hue-rotate\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-hue-rotate\"]),\n \"raster-brightness-min\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-brightness-min\"]),\n \"raster-brightness-max\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-brightness-max\"]),\n \"raster-saturation\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-saturation\"]),\n \"raster-contrast\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-contrast\"]),\n \"raster-resampling\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-resampling\"]),\n \"raster-fade-duration\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-fade-duration\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties\n}>);\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\nimport MercatorCoordinate from '../../geo/mercator_coordinate.js';\nimport type Map from '../../ui/map.js';\nimport assert from 'assert';\nimport type {ValidationErrors} from '../validate_style.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\n\ntype CustomRenderMethod = (gl: WebGLRenderingContext, matrix: Array, projection: ?ProjectionSpecification, projectionToMercatorMatrix: ?Array, projectionToMercatorTransition: ?number, centerInMercator: ?Array, pixelsPerMeterRatio: ?number) => void;\n\n/**\n * Interface for custom style layers. This is a specification for\n * implementers to model: it is not an exported method or class.\n *\n * Custom layers allow a user to render directly into the map's GL context using the map's camera.\n * These layers can be added between any regular layers using {@link Map#addLayer}.\n *\n * Custom layers must have a unique `id` and must have the `type` of `\"custom\"`.\n * They must implement `render` and may implement `prerender`, `onAdd` and `onRemove`.\n * They can trigger rendering using {@link Map#triggerRepaint}\n * and they should appropriately handle {@link Map.event:webglcontextlost} and\n * {@link Map.event:webglcontextrestored}.\n *\n * The `renderingMode` property controls whether the layer is treated as a `\"2d\"` or `\"3d\"` map layer. Use:\n * - `\"renderingMode\": \"3d\"` to use the depth buffer and share it with other layers\n * - `\"renderingMode\": \"2d\"` to add a layer with no depth. If you need to use the depth buffer for a `\"2d\"` layer you must use an offscreen\n * framebuffer and {@link CustomLayerInterface#prerender}.\n *\n * @interface CustomLayerInterface\n * @property {string} id A unique layer id.\n * @property {string} type The layer's type. Must be `\"custom\"`.\n * @property {string} renderingMode Either `\"2d\"` or `\"3d\"`. Defaults to `\"2d\"`.\n * @example\n * // Custom layer implemented as ES6 class\n * class NullIslandLayer {\n * constructor() {\n * this.id = 'null-island';\n * this.type = 'custom';\n * this.renderingMode = '2d';\n * }\n *\n * onAdd(map, gl) {\n * const vertexSource = `\n * uniform mat4 u_matrix;\n * void main() {\n * gl_Position = u_matrix * vec4(0.5, 0.5, 0.0, 1.0);\n * gl_PointSize = 20.0;\n * }`;\n *\n * const fragmentSource = `\n * void main() {\n * gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n * }`;\n *\n * const vertexShader = gl.createShader(gl.VERTEX_SHADER);\n * gl.shaderSource(vertexShader, vertexSource);\n * gl.compileShader(vertexShader);\n * const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n * gl.shaderSource(fragmentShader, fragmentSource);\n * gl.compileShader(fragmentShader);\n *\n * this.program = gl.createProgram();\n * gl.attachShader(this.program, vertexShader);\n * gl.attachShader(this.program, fragmentShader);\n * gl.linkProgram(this.program);\n * }\n *\n * render(gl, matrix) {\n * gl.useProgram(this.program);\n * gl.uniformMatrix4fv(gl.getUniformLocation(this.program, \"u_matrix\"), false, matrix);\n * gl.drawArrays(gl.POINTS, 0, 1);\n * }\n * }\n *\n * map.on('load', () => {\n * map.addLayer(new NullIslandLayer());\n * });\n * @see [Example: Add a custom style layer](https://docs.mapbox.com/mapbox-gl-js/example/custom-style-layer/)\n * @see [Example: Add a 3D model](https://docs.mapbox.com/mapbox-gl-js/example/add-3d-model/)\n */\n\n/**\n * Optional method called when the layer has been added to the Map with {@link Map#addLayer}. This\n * gives the layer a chance to initialize gl resources and register event listeners.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name onAdd\n * @param {Map} map The Map this custom layer was just added to.\n * @param {WebGLRenderingContext} gl The gl context for the map.\n */\n\n/**\n * Optional method called when the layer has been removed from the Map with {@link Map#removeLayer}. This\n * gives the layer a chance to clean up gl resources and event listeners.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name onRemove\n * @param {Map} map The Map this custom layer was just added to.\n * @param {WebGLRenderingContext} gl The gl context for the map.\n */\n\n/**\n * Optional method called during a render frame to allow a layer to prepare resources or render into a texture.\n *\n * The layer cannot make any assumptions about the current GL state and must bind a framebuffer before rendering.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name prerender\n * @param {WebGLRenderingContext} gl The map's gl context.\n * @param {Array} matrix The map's camera matrix. It projects spherical mercator\n * coordinates to gl coordinates. The mercator coordinate `[0, 0]` represents the\n * top left corner of the mercator world and `[1, 1]` represents the bottom right corner. When\n * the `renderingMode` is `\"3d\"`, the z coordinate is conformal. A box with identical x, y, and z\n * lengths in mercator units would be rendered as a cube. {@link MercatorCoordinate}.fromLngLat\n * can be used to project a `LngLat` to a mercator coordinate.\n */\n\n/**\n * Called during a render frame allowing the layer to draw into the GL context.\n *\n * The layer can assume blending and depth state is set to allow the layer to properly\n * blend and clip other layers. The layer cannot make any other assumptions about the\n * current GL state.\n *\n * If the layer needs to render to a texture, it should implement the `prerender` method\n * to do this and only use the `render` method for drawing directly into the main framebuffer.\n *\n * The blend function is set to `gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)`. This expects\n * colors to be provided in premultiplied alpha form where the `r`, `g` and `b` values are already\n * multiplied by the `a` value. If you are unable to provide colors in premultiplied form you\n * may want to change the blend function to\n * `gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA)`.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name render\n * @param {WebGLRenderingContext} gl The map's gl context.\n * @param {Array} matrix The map's camera matrix. It projects spherical mercator\n * coordinates to gl coordinates. The spherical mercator coordinate `[0, 0]` represents the\n * top left corner of the mercator world and `[1, 1]` represents the bottom right corner. When\n * the `renderingMode` is `\"3d\"`, the z coordinate is conformal. A box with identical x, y, and z\n * lengths in mercator units would be rendered as a cube. {@link MercatorCoordinate}.fromLngLat\n * can be used to project a `LngLat` to a mercator coordinate.\n */\nexport type CustomLayerInterface = {\n id: string,\n type: \"custom\",\n renderingMode: \"2d\" | \"3d\",\n render: CustomRenderMethod,\n prerender: ?CustomRenderMethod,\n renderToTile: ?(gl: WebGLRenderingContext, tileId: MercatorCoordinate) => void,\n shouldRerenderTiles: ?() => boolean,\n onAdd: ?(map: Map, gl: WebGLRenderingContext) => void,\n onRemove: ?(map: Map, gl: WebGLRenderingContext) => void\n}\n\nexport function validateCustomStyleLayer(layerObject: CustomLayerInterface): ValidationErrors {\n const errors = [];\n const id = layerObject.id;\n\n if (id === undefined) {\n errors.push({\n message: `layers.${id}: missing required property \"id\"`\n });\n }\n\n if (layerObject.render === undefined) {\n errors.push({\n message: `layers.${id}: missing required method \"render\"`\n });\n }\n\n if (layerObject.renderingMode &&\n layerObject.renderingMode !== '2d' &&\n layerObject.renderingMode !== '3d') {\n errors.push({\n message: `layers.${id}: property \"renderingMode\" must be either \"2d\" or \"3d\"`\n });\n }\n\n return errors;\n}\n\nclass CustomStyleLayer extends StyleLayer {\n\n implementation: CustomLayerInterface;\n\n constructor(implementation: CustomLayerInterface) {\n super(implementation, {});\n this.implementation = implementation;\n }\n\n is3D(): boolean {\n return this.implementation.renderingMode === '3d';\n }\n\n hasOffscreenPass(): boolean {\n return this.implementation.prerender !== undefined;\n }\n\n isLayerDraped(): boolean {\n return this.implementation.renderToTile !== undefined;\n }\n\n shouldRedrape(): boolean {\n return !!this.implementation.shouldRerenderTiles && this.implementation.shouldRerenderTiles();\n }\n\n recalculate() {}\n updateTransitions() {}\n hasTransition(): boolean {\n return false;\n }\n\n // $FlowFixMe[incompatible-extend] - CustomStyleLayer is not serializable\n serialize() {\n assert(false, \"Custom layers cannot be serialized\");\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map) {\n if (this.implementation.onAdd) {\n this.implementation.onAdd(map, map.painter.context.gl);\n }\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove(map: Map) {\n if (this.implementation.onRemove) {\n this.implementation.onRemove(map, map.painter.context.gl);\n }\n }\n}\n\nexport default CustomStyleLayer;\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"sky-type\": DataConstantProperty<\"gradient\" | \"atmosphere\">,\n \"sky-atmosphere-sun\": DataConstantProperty<[number, number]>,\n \"sky-atmosphere-sun-intensity\": DataConstantProperty,\n \"sky-gradient-center\": DataConstantProperty<[number, number]>,\n \"sky-gradient-radius\": DataConstantProperty,\n \"sky-gradient\": ColorRampProperty,\n \"sky-atmosphere-halo-color\": DataConstantProperty,\n \"sky-atmosphere-color\": DataConstantProperty,\n \"sky-opacity\": DataConstantProperty,\n|};\n\nconst paint: Properties = new Properties({\n \"sky-type\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-type\"]),\n \"sky-atmosphere-sun\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-sun\"]),\n \"sky-atmosphere-sun-intensity\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-sun-intensity\"]),\n \"sky-gradient-center\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-gradient-center\"]),\n \"sky-gradient-radius\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-gradient-radius\"]),\n \"sky-gradient\": new ColorRampProperty(styleSpec[\"paint_sky\"][\"sky-gradient\"]),\n \"sky-atmosphere-halo-color\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-halo-color\"]),\n \"sky-atmosphere-color\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-color\"]),\n \"sky-opacity\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties\n}>);\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\nimport properties from './sky_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\nimport {renderColorRamp} from '../../util/color_ramp.js';\nimport type {PaintProps} from './sky_style_layer_properties.js';\nimport type Texture from '../../render/texture.js';\nimport type Painter from '../../render/painter.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type Framebuffer from '../../gl/framebuffer.js';\nimport type {RGBAImage} from '../../util/image.js';\nimport type SkyboxGeometry from '../../render/skybox_geometry.js';\nimport type {LightPosition} from '../light.js';\nimport {warnOnce, degToRad} from '../../util/util.js';\nimport {vec3, quat} from 'gl-matrix';\nimport assert from 'assert';\n\nfunction getCelestialDirection(azimuth: number, altitude: number, leftHanded: boolean) {\n const up = [0, 0, 1];\n const rotation = quat.identity([]);\n\n quat.rotateY(rotation, rotation, leftHanded ? -degToRad(azimuth) + Math.PI : degToRad(azimuth));\n quat.rotateX(rotation, rotation, -degToRad(altitude));\n vec3.transformQuat(up, up, rotation);\n\n return vec3.normalize(up, up);\n}\n\nclass SkyLayer extends StyleLayer {\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n _lightPosition: LightPosition;\n\n skyboxFbo: ?Framebuffer;\n skyboxTexture: ?WebGLTexture;\n _skyboxInvalidated: ?boolean;\n\n colorRamp: RGBAImage;\n colorRampTexture: ?Texture;\n\n skyboxGeometry: SkyboxGeometry;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n this._updateColorRamp();\n }\n\n _handleSpecialPaintPropertyUpdate(name: string) {\n if (name === 'sky-gradient') {\n this._updateColorRamp();\n } else if (name === 'sky-atmosphere-sun' ||\n name === 'sky-atmosphere-halo-color' ||\n name === 'sky-atmosphere-color' ||\n name === 'sky-atmosphere-sun-intensity') {\n this._skyboxInvalidated = true;\n }\n }\n\n _updateColorRamp() {\n const expression = this._transitionablePaint._values['sky-gradient'].value.expression;\n this.colorRamp = renderColorRamp({\n expression,\n evaluationKey: 'skyRadialProgress'\n });\n if (this.colorRampTexture) {\n this.colorRampTexture.destroy();\n this.colorRampTexture = null;\n }\n }\n\n needsSkyboxCapture(painter: Painter): boolean {\n if (!!this._skyboxInvalidated || !this.skyboxTexture || !this.skyboxGeometry) {\n return true;\n }\n if (!this.paint.get('sky-atmosphere-sun')) {\n const lightPosition = painter.style.light.properties.get('position');\n return this._lightPosition.azimuthal !== lightPosition.azimuthal ||\n this._lightPosition.polar !== lightPosition.polar;\n }\n return false;\n }\n\n getCenter(painter: Painter, leftHanded: boolean): [number, number, number] {\n const type = this.paint.get('sky-type');\n if (type === 'atmosphere') {\n const sunPosition = this.paint.get('sky-atmosphere-sun');\n const useLightPosition = !sunPosition;\n const light = painter.style.light;\n const lightPosition = light.properties.get('position');\n\n if (useLightPosition && light.properties.get('anchor') === 'viewport') {\n warnOnce('The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly.');\n }\n\n return useLightPosition ?\n getCelestialDirection(lightPosition.azimuthal, -lightPosition.polar + 90, leftHanded) :\n getCelestialDirection(sunPosition[0], -sunPosition[1] + 90, leftHanded);\n }\n assert(type === 'gradient');\n const direction = this.paint.get('sky-gradient-center');\n return getCelestialDirection(direction[0], -direction[1] + 90, leftHanded);\n }\n\n is3D(): boolean {\n return false;\n }\n\n isSky(): boolean {\n return true;\n }\n\n markSkyboxValid(painter: Painter) {\n this._skyboxInvalidated = false;\n this._lightPosition = painter.style.light.properties.get('position');\n }\n\n hasOffscreenPass(): boolean {\n return true;\n }\n\n getProgramIds(): string[] | null {\n const type = this.paint.get('sky-type');\n if (type === 'atmosphere') {\n return ['skyboxCapture', 'skybox'];\n } else if (type === 'gradient') {\n return ['skyboxGradient'];\n }\n return null;\n }\n}\n\nexport default SkyLayer;\n","// @flow\n\nimport type StyleLayer from './style_layer.js';\nimport circle from './style_layer/circle_style_layer.js';\nimport heatmap from './style_layer/heatmap_style_layer.js';\nimport hillshade from './style_layer/hillshade_style_layer.js';\nimport fill from './style_layer/fill_style_layer.js';\nimport fillExtrusion from './style_layer/fill_extrusion_style_layer.js';\nimport line from './style_layer/line_style_layer.js';\nimport symbol from './style_layer/symbol_style_layer.js';\nimport background from './style_layer/background_style_layer.js';\nimport raster from './style_layer/raster_style_layer.js';\nimport CustomStyleLayer from './style_layer/custom_style_layer.js';\nimport sky from './style_layer/sky_style_layer.js';\nimport type {CustomLayerInterface} from './style_layer/custom_style_layer.js';\n\nimport type {LayerSpecification} from '../style-spec/types.js';\n\nconst subclasses = {\n circle,\n heatmap,\n hillshade,\n fill,\n 'fill-extrusion': fillExtrusion,\n line,\n symbol,\n background,\n raster,\n sky\n};\n\nexport default function createStyleLayer(layer: LayerSpecification | CustomLayerInterface): StyleLayer | CustomStyleLayer {\n if (layer.type === 'custom') {\n return new CustomStyleLayer(layer);\n } else {\n return new subclasses[layer.type](layer);\n }\n}\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport HeatmapBucket from '../../data/bucket/heatmap_bucket.js';\nimport {RGBAImage} from '../../util/image.js';\nimport properties from './heatmap_style_layer_properties.js';\nimport {renderColorRamp} from '../../util/color_ramp.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\nimport {queryIntersectsCircle} from './circle_style_layer.js';\nimport {getMaximumPaintValue} from '../query_utils.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type {Bucket, BucketParameters} from '../../data/bucket.js';\nimport type Texture from '../../render/texture.js';\nimport type Framebuffer from '../../gl/framebuffer.js';\nimport type {PaintProps} from './heatmap_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {DEMSampler} from '../../terrain/elevation.js';\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type Transform from '../../geo/transform.js';\nimport type CircleBucket from '../../data/bucket/circle_bucket.js';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\nclass HeatmapStyleLayer extends StyleLayer {\n\n heatmapFbo: ?Framebuffer;\n colorRamp: RGBAImage;\n colorRampTexture: ?Texture;\n\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n createBucket(parameters: BucketParameters): HeatmapBucket {\n return new HeatmapBucket(parameters);\n }\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n\n // make sure color ramp texture is generated for default heatmap color too\n this._updateColorRamp();\n }\n\n _handleSpecialPaintPropertyUpdate(name: string) {\n if (name === 'heatmap-color') {\n this._updateColorRamp();\n }\n }\n\n _updateColorRamp() {\n const expression = this._transitionablePaint._values['heatmap-color'].value.expression;\n this.colorRamp = renderColorRamp({\n expression,\n evaluationKey: 'heatmapDensity',\n image: this.colorRamp\n });\n this.colorRampTexture = null;\n }\n\n resize() {\n if (this.heatmapFbo) {\n this.heatmapFbo.destroy();\n this.heatmapFbo = null;\n }\n }\n\n // $FlowFixMe[method-unbinding]\n queryRadius(bucket: Bucket): number {\n return getMaximumPaintValue('heatmap-radius', this, ((bucket: any): CircleBucket<*>));\n }\n\n // $FlowFixMe[method-unbinding]\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: IVectorTileFeature,\n featureState: FeatureState,\n geometry: Array>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler): boolean {\n\n const size = this.paint.get('heatmap-radius').evaluate(feature, featureState);\n return queryIntersectsCircle(\n queryGeometry, geometry, transform, pixelPosMatrix, elevationHelper,\n true, true, new Point(0, 0), size);\n }\n\n hasOffscreenPass(): boolean {\n return this.paint.get('heatmap-opacity') !== 0 && this.visibility !== 'none';\n }\n\n getProgramIds(): Array {\n return ['heatmap', 'heatmapTexture'];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n}\n\nexport default HeatmapStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport properties from './hillshade_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\n\nimport type {PaintProps} from './hillshade_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\n\nclass HillshadeStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n hasOffscreenPass(): boolean {\n return this.paint.get('hillshade-exaggeration') !== 0 && this.visibility !== 'none';\n }\n\n getProgramIds(): Array {\n return ['hillshade', 'hillshadePrepare'];\n }\n}\n\nexport default HillshadeStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport FillBucket from '../../data/bucket/fill_bucket.js';\nimport {polygonIntersectsMultiPolygon} from '../../util/intersection_tests.js';\nimport {translateDistance, translate} from '../query_utils.js';\nimport properties from './fill_style_layer_properties.js';\nimport {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\n\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type {BucketParameters} from '../../data/bucket.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {LayoutProps, PaintProps} from './fill_style_layer_properties.js';\nimport type EvaluationParameters from '../evaluation_parameters.js';\nimport type Transform from '../../geo/transform.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\nclass FillStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout;\n layout: PossiblyEvaluated;\n\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n getProgramIds(): string[] {\n const pattern = this.paint.get('fill-pattern');\n const image = pattern && pattern.constantOr((1: any));\n\n const ids = [image ? 'fillPattern' : 'fill'];\n\n if (this.paint.get('fill-antialias')) {\n ids.push(image && !this.getPaintProperty('fill-outline-color') ? 'fillOutlinePattern' : 'fillOutline');\n }\n\n return ids;\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array) {\n super.recalculate(parameters, availableImages);\n\n const outlineColor = this.paint._values['fill-outline-color'];\n if (outlineColor.value.kind === 'constant' && outlineColor.value.value === undefined) {\n this.paint._values['fill-outline-color'] = this.paint._values['fill-color'];\n }\n }\n\n createBucket(parameters: BucketParameters): FillBucket {\n return new FillBucket(parameters);\n }\n\n // $FlowFixMe[method-unbinding]\n queryRadius(): number {\n return translateDistance(this.paint.get('fill-translate'));\n }\n\n // $FlowFixMe[method-unbinding]\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: IVectorTileFeature,\n featureState: FeatureState,\n geometry: Array>,\n zoom: number,\n transform: Transform): boolean {\n if (queryGeometry.queryGeometry.isAboveHorizon) return false;\n\n const translatedPolygon = translate(queryGeometry.tilespaceGeometry,\n this.paint.get('fill-translate'),\n this.paint.get('fill-translate-anchor'),\n transform.angle, queryGeometry.pixelToTileUnitsFactor);\n return polygonIntersectsMultiPolygon(translatedPolygon, geometry);\n }\n\n isTileClipped(): boolean {\n return true;\n }\n}\n\nexport default FillStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport properties from './background_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\n\nimport type {PaintProps} from './background_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\n\nclass BackgroundStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n getProgramIds(): Array {\n const image = this.paint.get('background-pattern');\n return [image ? 'backgroundPattern' : 'background'];\n }\n}\n\nexport default BackgroundStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport properties from './raster_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\n\nimport type {PaintProps} from './raster_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\n\nclass RasterStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable;\n _transitioningPaint: Transitioning;\n paint: PossiblyEvaluated;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n getProgramIds(): Array {\n return ['raster'];\n }\n}\n\nexport default RasterStyleLayer;\n","// @flow\n\nimport window from '../util/window.js';\n\nimport type Context from '../gl/context.js';\nimport type {RGBAImage, AlphaImage} from '../util/image.js';\n\nexport type TextureFormat =\n | $PropertyType\n | $PropertyType;\nexport type TextureFilter =\n | $PropertyType\n | $PropertyType\n | $PropertyType;\nexport type TextureWrap =\n | $PropertyType\n | $PropertyType\n | $PropertyType;\n\ntype EmptyImage = {\n width: number,\n height: number,\n data: null\n}\n\nexport type TextureImage =\n | RGBAImage\n | AlphaImage\n | HTMLImageElement\n | HTMLCanvasElement\n | HTMLVideoElement\n | ImageData\n | EmptyImage\n | ImageBitmap;\n\nclass Texture {\n context: Context;\n size: [number, number];\n texture: WebGLTexture;\n format: TextureFormat;\n filter: ?TextureFilter;\n wrap: ?TextureWrap;\n useMipmap: boolean;\n\n constructor(context: Context, image: TextureImage, format: TextureFormat, options: ?{ premultiply?: boolean, useMipmap?: boolean }) {\n this.context = context;\n this.format = format;\n this.texture = ((context.gl.createTexture(): any): WebGLTexture);\n this.update(image, options);\n }\n\n update(image: TextureImage, options: ?{premultiply?: boolean, useMipmap?: boolean}, position?: { x: number, y: number }) {\n const {width, height} = image;\n const {context} = this;\n const {gl} = context;\n const {HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageData, ImageBitmap} = window;\n\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n\n context.pixelStoreUnpackFlipY.set(false);\n context.pixelStoreUnpack.set(1);\n context.pixelStoreUnpackPremultiplyAlpha.set(this.format === gl.RGBA && (!options || options.premultiply !== false));\n\n if (!position && (!this.size || this.size[0] !== width || this.size[1] !== height)) {\n this.size = [width, height];\n\n if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData || (ImageBitmap && image instanceof ImageBitmap)) {\n gl.texImage2D(gl.TEXTURE_2D, 0, this.format, this.format, gl.UNSIGNED_BYTE, image);\n } else {\n // $FlowFixMe prop-missing - Flow can't refine image type here\n gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, gl.UNSIGNED_BYTE, image.data);\n }\n\n } else {\n const {x, y} = position || {x: 0, y: 0};\n if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData || (ImageBitmap && image instanceof ImageBitmap)) {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, gl.RGBA, gl.UNSIGNED_BYTE, image);\n } else {\n // $FlowFixMe prop-missing - Flow can't refine image type here\n gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, image.data);\n }\n }\n\n this.useMipmap = Boolean(options && options.useMipmap && this.isSizePowerOfTwo());\n if (this.useMipmap) {\n gl.generateMipmap(gl.TEXTURE_2D);\n }\n }\n\n bind(filter: TextureFilter, wrap: TextureWrap) {\n const {context} = this;\n const {gl} = context;\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n\n if (filter !== this.filter) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER,\n this.useMipmap ? (filter === gl.NEAREST ? gl.NEAREST_MIPMAP_NEAREST : gl.LINEAR_MIPMAP_NEAREST) : filter\n );\n this.filter = filter;\n }\n\n if (wrap !== this.wrap) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrap);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrap);\n this.wrap = wrap;\n }\n }\n\n isSizePowerOfTwo(): boolean {\n return this.size[0] === this.size[1] && (Math.log(this.size[0]) / Math.LN2) % 1 === 0;\n }\n\n destroy() {\n const {gl} = this.context;\n gl.deleteTexture(this.texture);\n this.texture = (null: any);\n }\n}\n\nexport default Texture;\n","// @flow\n\n/**\n * Invokes the wrapped function in a non-blocking way when trigger() is called. Invocation requests\n * are ignored until the function was actually invoked.\n *\n * @private\n */\nclass ThrottledInvoker {\n _channel: ?MessageChannel;\n _triggered: boolean;\n _callback: Function\n\n constructor(callback: Function) {\n this._callback = callback;\n this._triggered = false;\n if (typeof MessageChannel !== 'undefined') {\n this._channel = new MessageChannel();\n this._channel.port2.onmessage = () => {\n this._triggered = false;\n this._callback();\n };\n }\n }\n\n trigger() {\n if (!this._triggered) {\n this._triggered = true;\n if (this._channel) {\n this._channel.port1.postMessage(true);\n } else {\n setTimeout(() => {\n this._triggered = false;\n this._callback();\n }, 0);\n }\n }\n }\n\n remove() {\n this._channel = undefined;\n this._callback = () => {};\n }\n}\n\nexport default ThrottledInvoker;\n","// @flow\n\nimport ThrottledInvoker from './throttled_invoker.js';\nimport {bindAll, isWorker} from './util.js';\nimport {PerformanceUtils} from './performance.js';\n\nimport type {Cancelable} from '../types/cancelable.js';\n\ntype TaskMetadata = {\n type: 'message' | 'maybePrepare' | 'parseTile',\n isSymbolTile: ?boolean,\n zoom?: number\n};\n\ntype TaskFunction = () => void;\n\ntype Task = {\n fn: TaskFunction,\n metadata: TaskMetadata,\n priority: number,\n id: number\n};\n\nclass Scheduler {\n\n tasks: { [number]: Task };\n taskQueue: Array;\n invoker: ThrottledInvoker;\n nextId: number;\n\n constructor() {\n this.tasks = {};\n this.taskQueue = [];\n bindAll(['process'], this);\n // $FlowFixMe[method-unbinding]\n this.invoker = new ThrottledInvoker(this.process);\n\n this.nextId = 0;\n }\n\n add(fn: TaskFunction, metadata: TaskMetadata): Cancelable {\n const id = this.nextId++;\n const priority = getPriority(metadata);\n\n if (priority === 0) {\n // Process tasks with priority 0 immediately. Do not yield to the event loop.\n const m = isWorker() ? PerformanceUtils.beginMeasure('workerTask') : undefined;\n try {\n fn();\n } finally {\n if (m) PerformanceUtils.endMeasure(m);\n }\n return {\n cancel: () => {}\n };\n }\n\n this.tasks[id] = {fn, metadata, priority, id};\n this.taskQueue.push(id);\n this.invoker.trigger();\n return {\n cancel: () => {\n delete this.tasks[id];\n }\n };\n }\n\n process() {\n const m = isWorker() ? PerformanceUtils.beginMeasure('workerTask') : undefined;\n try {\n this.taskQueue = this.taskQueue.filter(id => !!this.tasks[id]);\n\n if (!this.taskQueue.length) {\n return;\n }\n const id = this.pick();\n if (id === null) return;\n\n const task = this.tasks[id];\n delete this.tasks[id];\n // Schedule another process call if we know there's more to process _before_ invoking the\n // current task. This is necessary so that processing continues even if the current task\n // doesn't execute successfully.\n if (this.taskQueue.length) {\n this.invoker.trigger();\n }\n if (!task) {\n // If the task ID doesn't have associated task data anymore, it was canceled.\n return;\n }\n\n task.fn();\n } finally {\n if (m) PerformanceUtils.endMeasure(m);\n }\n }\n\n pick(): null | number {\n let minIndex = null;\n let minPriority = Infinity;\n for (let i = 0; i < this.taskQueue.length; i++) {\n const id = this.taskQueue[i];\n const task = this.tasks[id];\n if (task.priority < minPriority) {\n minPriority = task.priority;\n minIndex = i;\n }\n }\n if (minIndex === null) return null;\n const id = this.taskQueue[minIndex];\n this.taskQueue.splice(minIndex, 1);\n return id;\n }\n\n remove() {\n this.invoker.remove();\n }\n}\n\nfunction getPriority({type, isSymbolTile, zoom}: TaskMetadata): number {\n zoom = zoom || 0;\n if (type === 'message') return 0;\n if (type === 'maybePrepare' && !isSymbolTile) return 100 - zoom;\n if (type === 'parseTile' && !isSymbolTile) return 200 - zoom;\n if (type === 'parseTile' && isSymbolTile) return 300 - zoom;\n if (type === 'maybePrepare' && isSymbolTile) return 400 - zoom;\n return 500;\n}\n\nexport default Scheduler;\n","// @flow strict\n\nimport assert from 'assert';\n\nclass DictionaryCoder {\n _stringToNumber: {[_: string]: number };\n _numberToString: Array;\n\n constructor(strings: Array) {\n this._stringToNumber = {};\n this._numberToString = [];\n for (let i = 0; i < strings.length; i++) {\n const string = strings[i];\n this._stringToNumber[string] = i;\n this._numberToString[i] = string;\n }\n }\n\n encode(string: string): number {\n assert(string in this._stringToNumber);\n return this._stringToNumber[string];\n }\n\n decode(n: number): string {\n assert(n < this._numberToString.length);\n return this._numberToString[n];\n }\n}\n\nexport default DictionaryCoder;\n","// @flow\nimport type {LayerSpecification, SourceSpecification} from '../style-spec/types.js';\nimport type {GeoJSONGeometry, GeoJSONFeature} from '@mapbox/geojson-types';\nimport type {IVectorTileFeature} from '@mapbox/vector-tile';\n\n// we augment GeoJSON with custom properties in query*Features results\nexport interface QueryFeature extends GeoJSONFeature {\n layer?: ?LayerSpecification;\n source?: ?SourceSpecification | ?mixed;\n sourceLayer?: ?string | ?mixed;\n state: ?mixed;\n [key: string]: mixed;\n}\n\nconst customProps = ['tile', 'layer', 'source', 'sourceLayer', 'state'];\n\nclass Feature {\n type: 'Feature';\n _geometry: ?GeoJSONGeometry;\n properties: ?{};\n id: number | string | void;\n _vectorTileFeature: IVectorTileFeature;\n _x: number;\n _y: number;\n _z: number;\n\n tile: ?mixed;\n layer: ?LayerSpecification;\n source: ?mixed;\n sourceLayer: ?mixed;\n state: ?mixed;\n\n constructor(vectorTileFeature: IVectorTileFeature, z: number, x: number, y: number, id: string | number | void) {\n this.type = 'Feature';\n\n this._vectorTileFeature = vectorTileFeature;\n this._z = z;\n this._x = x;\n this._y = y;\n\n this.properties = vectorTileFeature.properties;\n this.id = id;\n }\n\n get geometry(): ?GeoJSONGeometry {\n if (this._geometry === undefined) {\n this._geometry = this._vectorTileFeature.toGeoJSON(this._x, this._y, this._z).geometry;\n }\n return this._geometry;\n }\n\n set geometry(g: ?GeoJSONGeometry) {\n this._geometry = g;\n }\n\n toJSON(): QueryFeature {\n const json: QueryFeature = {\n type: 'Feature',\n state: undefined,\n geometry: this.geometry,\n properties: this.properties\n };\n if (this.id !== undefined) json.id = this.id;\n for (const key of customProps) {\n // Flow doesn't support indexed access for classes https://github.com/facebook/flow/issues/1323\n if ((this: any)[key] !== undefined) json[key] = (this: any)[key];\n }\n return json;\n }\n}\n\nexport default Feature;\n","// @flow\n// logic for generating non-Mercator adaptive raster tile reprojection meshes with MARTINI\n\nimport tileTransform from '../geo/projection/tile_transform.js';\nimport EXTENT from '../data/extent.js';\nimport {lngFromMercatorX, latFromMercatorY} from '../geo/mercator_coordinate.js';\nimport {TileBoundsArray, TriangleIndexArray} from '../data/array_types.js';\n\nimport type {CanonicalTileID} from './tile_id.js';\nimport type Projection from '../geo/projection/projection.js';\n\nconst meshSize = 32;\nconst gridSize = meshSize + 1;\n\nconst numTriangles = meshSize * meshSize * 2 - 2;\nconst numParentTriangles = numTriangles - meshSize * meshSize;\n\nconst coords = new Uint16Array(numTriangles * 4);\n\n// precalculate RTIN triangle coordinates\nfor (let i = 0; i < numTriangles; i++) {\n let id = i + 2;\n let ax = 0, ay = 0, bx = 0, by = 0, cx = 0, cy = 0;\n\n if (id & 1) {\n bx = by = cx = meshSize; // bottom-left triangle\n\n } else {\n ax = ay = cy = meshSize; // top-right triangle\n }\n\n while ((id >>= 1) > 1) {\n const mx = (ax + bx) >> 1;\n const my = (ay + by) >> 1;\n\n if (id & 1) { // left half\n bx = ax; by = ay;\n ax = cx; ay = cy;\n\n } else { // right half\n ax = bx; ay = by;\n bx = cx; by = cy;\n }\n\n cx = mx; cy = my;\n }\n\n const k = i * 4;\n coords[k + 0] = ax;\n coords[k + 1] = ay;\n coords[k + 2] = bx;\n coords[k + 3] = by;\n}\n\n// temporary arrays we'll reuse for MARTINI mesh code\nconst reprojectedCoords = new Uint16Array(gridSize * gridSize * 2);\nconst used = new Uint8Array(gridSize * gridSize);\nconst indexMap = new Uint16Array(gridSize * gridSize);\n\ntype TileMesh = {\n vertices: TileBoundsArray,\n indices: TriangleIndexArray\n};\n\n// There can be visible seams between neighbouring tiles because of precision issues\n// and resampling differences. Adding a bit of padding around the edges of tiles hides\n// most of these issues.\nconst commonRasterTileSize = 256;\nconst paddingSize = meshSize / commonRasterTileSize / 4;\nfunction seamPadding(n: number) {\n if (n === 0) return -paddingSize;\n else if (n === gridSize - 1) return paddingSize;\n else return 0;\n}\n\nexport default function getTileMesh(canonical: CanonicalTileID, projection: Projection): TileMesh {\n const cs = tileTransform(canonical, projection);\n const z2 = Math.pow(2, canonical.z);\n\n for (let y = 0; y < gridSize; y++) {\n for (let x = 0; x < gridSize; x++) {\n const lng = lngFromMercatorX((canonical.x + (x + seamPadding(x)) / meshSize) / z2);\n const lat = latFromMercatorY((canonical.y + (y + seamPadding(y)) / meshSize) / z2);\n const p = projection.project(lng, lat);\n const k = y * gridSize + x;\n reprojectedCoords[2 * k + 0] = Math.round((p.x * cs.scale - cs.x) * EXTENT);\n reprojectedCoords[2 * k + 1] = Math.round((p.y * cs.scale - cs.y) * EXTENT);\n }\n }\n\n used.fill(0);\n indexMap.fill(0);\n\n // iterate over all possible triangles, starting from the smallest level\n for (let i = numTriangles - 1; i >= 0; i--) {\n const k = i * 4;\n const ax = coords[k + 0];\n const ay = coords[k + 1];\n const bx = coords[k + 2];\n const by = coords[k + 3];\n const mx = (ax + bx) >> 1;\n const my = (ay + by) >> 1;\n const cx = mx + my - ay;\n const cy = my + ax - mx;\n\n const aIndex = ay * gridSize + ax;\n const bIndex = by * gridSize + bx;\n const mIndex = my * gridSize + mx;\n\n // calculate error in the middle of the long edge of the triangle\n const rax = reprojectedCoords[2 * aIndex + 0];\n const ray = reprojectedCoords[2 * aIndex + 1];\n const rbx = reprojectedCoords[2 * bIndex + 0];\n const rby = reprojectedCoords[2 * bIndex + 1];\n const rmx = reprojectedCoords[2 * mIndex + 0];\n const rmy = reprojectedCoords[2 * mIndex + 1];\n\n // raster tiles are typically 512px, and we use 1px as an error threshold; 8192 / 512 = 16\n const isUsed = Math.hypot((rax + rbx) / 2 - rmx, (ray + rby) / 2 - rmy) >= 16;\n\n used[mIndex] = used[mIndex] || (isUsed ? 1 : 0);\n\n if (i < numParentTriangles) { // bigger triangles; accumulate error with children\n const leftChildIndex = ((ay + cy) >> 1) * gridSize + ((ax + cx) >> 1);\n const rightChildIndex = ((by + cy) >> 1) * gridSize + ((bx + cx) >> 1);\n used[mIndex] = used[mIndex] || used[leftChildIndex] || used[rightChildIndex];\n }\n }\n\n const vertices = new TileBoundsArray();\n const indices = new TriangleIndexArray();\n\n let numVertices = 0;\n\n function addVertex(x: number, y: number) {\n const k = y * gridSize + x;\n\n if (indexMap[k] === 0) {\n vertices.emplaceBack(\n reprojectedCoords[2 * k + 0],\n reprojectedCoords[2 * k + 1],\n x * EXTENT / meshSize,\n y * EXTENT / meshSize);\n\n // save new vertex index so that we can reuse it\n indexMap[k] = ++numVertices;\n }\n\n return indexMap[k] - 1;\n }\n\n function addTriangles(ax: number, ay: number, bx: number, by: number, cx: number, cy: number) {\n const mx = (ax + bx) >> 1;\n const my = (ay + by) >> 1;\n\n if (Math.abs(ax - cx) + Math.abs(ay - cy) > 1 && used[my * gridSize + mx]) {\n // triangle doesn't approximate the surface well enough; drill down further\n addTriangles(cx, cy, ax, ay, mx, my);\n addTriangles(bx, by, cx, cy, mx, my);\n\n } else {\n const ai = addVertex(ax, ay);\n const bi = addVertex(bx, by);\n const ci = addVertex(cx, cy);\n indices.emplaceBack(ai, bi, ci);\n }\n }\n\n addTriangles(0, 0, meshSize, meshSize, meshSize, 0);\n addTriangles(meshSize, meshSize, 0, 0, 0, meshSize);\n\n return {vertices, indices};\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport default (createLayout([\n {name: 'a_pos', type: 'Int16', components: 2},\n {name: 'a_texture_pos', type: 'Int16', components: 2}\n]): StructArrayLayout);\n","// @flow\n\nimport {uniqueId, parseCacheControl} from '../util/util.js';\nimport {deserialize as deserializeBucket} from '../data/bucket.js';\nimport FeatureIndex from '../data/feature_index.js';\nimport GeoJSONFeature from '../util/vectortile_to_geojson.js';\nimport featureFilter from '../style-spec/feature_filter/index.js';\nimport SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport FillBucket from '../data/bucket/fill_bucket.js';\nimport LineBucket from '../data/bucket/line_bucket.js';\nimport {CollisionBoxArray, TileBoundsArray, PosArray, TriangleIndexArray, LineStripIndexArray, PosGlobeExtArray} from '../data/array_types.js';\nimport Texture from '../render/texture.js';\nimport browser from '../util/browser.js';\nimport {Debug} from '../util/debug.js';\nimport toEvaluationFeature from '../data/evaluation_feature.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport SourceFeatureState from '../source/source_state.js';\nimport {lazyLoadRTLTextPlugin} from './rtl_text_plugin.js';\nimport {TileSpaceDebugBuffer} from '../data/debug_viz.js';\nimport Color from '../style-spec/util/color.js';\nimport loadGeometry from '../data/load_geometry.js';\nimport earcut from 'earcut';\nimport getTileMesh from './tile_mesh.js';\nimport tileTransform from '../geo/projection/tile_transform.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport posAttributes, {posAttributesGlobeExt} from '../data/pos_attributes.js';\nimport EXTENT from '../data/extent.js';\nimport Point from '@mapbox/point-geometry';\nimport SegmentVector from '../data/segment.js';\nimport {transitionTileAABBinECEF, globeNormalizeECEF, tileCoordToECEF, globeToMercatorTransition, interpolateVec3} from '../geo/projection/globe_util.js';\nimport {vec3, mat4} from 'gl-matrix';\n\nimport type {Bucket} from '../data/bucket.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {WorkerTileResult} from './worker_source.js';\nimport type Actor from '../util/actor.js';\nimport type DEMData from '../data/dem_data.js';\nimport type {AlphaImage, SpritePositions} from '../util/image.js';\nimport type ImageAtlas from '../render/image_atlas.js';\nimport type LineAtlas from '../render/line_atlas.js';\nimport type ImageManager from '../render/image_manager.js';\nimport type Context from '../gl/context.js';\nimport type {CanonicalTileID, OverscaledTileID} from './tile_id.js';\nimport type Framebuffer from '../gl/framebuffer.js';\nimport type Transform from '../geo/transform.js';\nimport type {LayerFeatureStates} from './source_state.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {FilterSpecification} from '../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../style/query_geometry.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\nimport type {QueryResult} from '../data/feature_index.js';\nimport type Painter from '../render/painter.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {Vec3} from 'gl-matrix';\nimport type {TextureImage} from '../render/texture.js';\nimport type {VectorTileLayer} from '@mapbox/vector-tile';\n\nconst CLOCK_SKEW_RETRY_TIMEOUT = 30000;\nexport type TileState =\n | 'loading' // Tile data is in the process of loading.\n | 'loaded' // Tile data has been loaded. Tile can be rendered.\n | 'reloading' // Tile data has been loaded and is being updated. Tile can be rendered.\n | 'unloaded' // Tile data has been deleted.\n | 'errored' // Tile data was not loaded because of an error.\n | 'expired'; /* Tile data was previously loaded, but has expired per its\n * HTTP headers and is in the process of refreshing. */\n\n// a tile bounds outline used for getting reprojected tile geometry in non-mercator projections\nconst BOUNDS_FEATURE = (() => {\n return {\n type: 2,\n extent: EXTENT,\n loadGeometry() {\n return [[\n new Point(0, 0),\n new Point(EXTENT + 1, 0),\n new Point(EXTENT + 1, EXTENT + 1),\n new Point(0, EXTENT + 1),\n new Point(0, 0)\n ]];\n }\n };\n})();\n\n/**\n * A tile object is the combination of a Coordinate, which defines\n * its place, as well as a unique ID and data tracking for its content\n *\n * @private\n */\nclass Tile {\n tileID: OverscaledTileID;\n uid: number;\n uses: number;\n tileSize: number;\n tileZoom: number;\n buckets: {[_: string]: Bucket};\n latestFeatureIndex: ?FeatureIndex;\n latestRawTileData: ?ArrayBuffer;\n imageAtlas: ?ImageAtlas;\n imageAtlasTexture: Texture;\n lineAtlas: ?LineAtlas;\n lineAtlasTexture: Texture;\n glyphAtlasImage: ?AlphaImage;\n glyphAtlasTexture: Texture;\n expirationTime: any;\n expiredRequestCount: number;\n state: TileState;\n timeAdded: any;\n fadeEndTime: any;\n collisionBoxArray: ?CollisionBoxArray;\n redoWhenDone: boolean;\n showCollisionBoxes: boolean;\n placementSource: any;\n actor: ?Actor;\n vtLayers: {[_: string]: VectorTileLayer};\n isSymbolTile: ?boolean;\n isRaster: ?boolean;\n _tileTransform: TileTransform;\n\n neighboringTiles: ?Object;\n dem: ?DEMData;\n aborted: ?boolean;\n needsHillshadePrepare: ?boolean;\n needsDEMTextureUpload: ?boolean;\n request: ?Cancelable;\n texture: any;\n fbo: ?Framebuffer;\n demTexture: ?Texture;\n refreshedUponExpiration: boolean;\n reloadCallback: any;\n resourceTiming: ?Array;\n queryPadding: number;\n\n symbolFadeHoldUntil: ?number;\n hasSymbolBuckets: boolean;\n hasRTLText: boolean;\n dependencies: Object;\n projection: Projection;\n\n queryGeometryDebugViz: ?TileSpaceDebugBuffer;\n queryBoundsDebugViz: ?TileSpaceDebugBuffer;\n\n _tileDebugBuffer: ?VertexBuffer;\n _tileBoundsBuffer: ?VertexBuffer;\n _tileDebugIndexBuffer: ?IndexBuffer;\n _tileBoundsIndexBuffer: IndexBuffer;\n _tileDebugSegments: SegmentVector;\n _tileBoundsSegments: SegmentVector;\n _globeTileDebugBorderBuffer: ?VertexBuffer;\n _tileDebugTextBuffer: ?VertexBuffer;\n _tileDebugTextSegments: SegmentVector;\n _tileDebugTextIndexBuffer: IndexBuffer;\n _globeTileDebugTextBuffer: ?VertexBuffer;\n\n /**\n * @param {OverscaledTileID} tileID\n * @param size\n * @private\n */\n constructor(tileID: OverscaledTileID, size: number, tileZoom: number, painter: any, isRaster?: boolean) {\n this.tileID = tileID;\n this.uid = uniqueId();\n this.uses = 0;\n this.tileSize = size;\n this.tileZoom = tileZoom;\n this.buckets = {};\n this.expirationTime = null;\n this.queryPadding = 0;\n this.hasSymbolBuckets = false;\n this.hasRTLText = false;\n this.dependencies = {};\n this.isRaster = isRaster;\n\n // Counts the number of times a response was already expired when\n // received. We're using this to add a delay when making a new request\n // so we don't have to keep retrying immediately in case of a server\n // serving expired tiles.\n this.expiredRequestCount = 0;\n\n this.state = 'loading';\n\n if (painter && painter.transform) {\n this.projection = painter.transform.projection;\n }\n }\n\n registerFadeDuration(duration: number) {\n const fadeEndTime = duration + this.timeAdded;\n if (fadeEndTime < browser.now()) return;\n if (this.fadeEndTime && fadeEndTime < this.fadeEndTime) return;\n\n this.fadeEndTime = fadeEndTime;\n }\n\n wasRequested(): boolean {\n return this.state === 'errored' || this.state === 'loaded' || this.state === 'reloading';\n }\n\n get tileTransform(): TileTransform {\n if (!this._tileTransform) {\n this._tileTransform = tileTransform(this.tileID.canonical, this.projection);\n }\n return this._tileTransform;\n }\n\n /**\n * Given a data object with a 'buffers' property, load it into\n * this tile's elementGroups and buffers properties and set loaded\n * to true. If the data is null, like in the case of an empty\n * GeoJSON tile, no-op but still set loaded to true.\n * @param {Object} data\n * @param painter\n * @returns {undefined}\n * @private\n */\n loadVectorData(data: ?WorkerTileResult, painter: any, justReloaded: ?boolean) {\n this.unloadVectorData();\n\n this.state = 'loaded';\n\n // empty GeoJSON tile\n if (!data) {\n this.collisionBoxArray = new CollisionBoxArray();\n return;\n }\n\n if (data.featureIndex) {\n this.latestFeatureIndex = data.featureIndex;\n if (data.rawTileData) {\n // Only vector tiles have rawTileData, and they won't update it for\n // 'reloadTile'\n this.latestRawTileData = data.rawTileData;\n this.latestFeatureIndex.rawTileData = data.rawTileData;\n } else if (this.latestRawTileData) {\n // If rawTileData hasn't updated, hold onto a pointer to the last\n // one we received\n this.latestFeatureIndex.rawTileData = this.latestRawTileData;\n }\n }\n this.collisionBoxArray = data.collisionBoxArray;\n this.buckets = deserializeBucket(data.buckets, painter.style);\n\n this.hasSymbolBuckets = false;\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n if (bucket instanceof SymbolBucket) {\n this.hasSymbolBuckets = true;\n if (justReloaded) {\n bucket.justReloaded = true;\n } else {\n break;\n }\n }\n }\n\n this.hasRTLText = false;\n if (this.hasSymbolBuckets) {\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n if (bucket instanceof SymbolBucket) {\n if (bucket.hasRTLText) {\n this.hasRTLText = true;\n lazyLoadRTLTextPlugin();\n break;\n }\n }\n }\n }\n\n this.queryPadding = 0;\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n this.queryPadding = Math.max(this.queryPadding, painter.style.getLayer(id).queryRadius(bucket));\n }\n\n if (data.imageAtlas) {\n this.imageAtlas = data.imageAtlas;\n }\n if (data.glyphAtlasImage) {\n this.glyphAtlasImage = data.glyphAtlasImage;\n }\n if (data.lineAtlas) {\n this.lineAtlas = data.lineAtlas;\n }\n }\n\n /**\n * Release any data or WebGL resources referenced by this tile.\n * @returns {undefined}\n * @private\n */\n unloadVectorData() {\n if (!this.hasData()) return;\n\n for (const id in this.buckets) {\n this.buckets[id].destroy();\n }\n this.buckets = {};\n\n if (this.imageAtlas) {\n this.imageAtlas = null;\n }\n\n if (this.lineAtlas) {\n this.lineAtlas = null;\n }\n\n if (this.imageAtlasTexture) {\n this.imageAtlasTexture.destroy();\n }\n\n if (this.glyphAtlasTexture) {\n this.glyphAtlasTexture.destroy();\n }\n\n if (this.lineAtlasTexture) {\n this.lineAtlasTexture.destroy();\n }\n\n if (this._tileBoundsBuffer) {\n this._tileBoundsBuffer.destroy();\n this._tileBoundsIndexBuffer.destroy();\n this._tileBoundsSegments.destroy();\n this._tileBoundsBuffer = null;\n }\n\n if (this._tileDebugBuffer) {\n this._tileDebugBuffer.destroy();\n this._tileDebugSegments.destroy();\n this._tileDebugBuffer = null;\n }\n\n if (this._tileDebugIndexBuffer) {\n this._tileDebugIndexBuffer.destroy();\n this._tileDebugIndexBuffer = null;\n }\n\n if (this._globeTileDebugBorderBuffer) {\n this._globeTileDebugBorderBuffer.destroy();\n this._globeTileDebugBorderBuffer = null;\n }\n\n if (this._tileDebugTextBuffer) {\n this._tileDebugTextBuffer.destroy();\n this._tileDebugTextSegments.destroy();\n this._tileDebugTextIndexBuffer.destroy();\n this._tileDebugTextBuffer = null;\n }\n\n if (this._globeTileDebugTextBuffer) {\n this._globeTileDebugTextBuffer.destroy();\n this._globeTileDebugTextBuffer = null;\n }\n\n Debug.run(() => {\n if (this.queryGeometryDebugViz) {\n this.queryGeometryDebugViz.unload();\n delete this.queryGeometryDebugViz;\n }\n if (this.queryBoundsDebugViz) {\n this.queryBoundsDebugViz.unload();\n delete this.queryBoundsDebugViz;\n }\n });\n this.latestFeatureIndex = null;\n this.state = 'unloaded';\n }\n\n getBucket(layer: StyleLayer): Bucket {\n return this.buckets[layer.id];\n }\n\n upload(context: Context) {\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n if (bucket.uploadPending()) {\n bucket.upload(context);\n }\n }\n\n const gl = context.gl;\n if (this.imageAtlas && !this.imageAtlas.uploaded) {\n this.imageAtlasTexture = new Texture(context, this.imageAtlas.image, gl.RGBA);\n ((this.imageAtlas: any): ImageAtlas).uploaded = true;\n }\n\n if (this.glyphAtlasImage) {\n this.glyphAtlasTexture = new Texture(context, this.glyphAtlasImage, gl.ALPHA);\n this.glyphAtlasImage = null;\n }\n\n if (this.lineAtlas && !this.lineAtlas.uploaded) {\n this.lineAtlasTexture = new Texture(context, this.lineAtlas.image, gl.ALPHA);\n ((this.lineAtlas: any): LineAtlas).uploaded = true;\n }\n }\n\n prepare(imageManager: ImageManager) {\n if (this.imageAtlas) {\n this.imageAtlas.patchUpdatedImages(imageManager, this.imageAtlasTexture);\n }\n }\n\n // Queries non-symbol features rendered for this tile.\n // Symbol features are queried globally\n queryRenderedFeatures(layers: {[_: string]: StyleLayer},\n serializedLayers: {[string]: Object},\n sourceFeatureState: SourceFeatureState,\n tileResult: TilespaceQueryGeometry,\n params: { filter: FilterSpecification, layers: Array, availableImages: Array },\n transform: Transform,\n pixelPosMatrix: Float32Array,\n visualizeQueryGeometry: boolean): QueryResult {\n Debug.run(() => {\n if (visualizeQueryGeometry) {\n let geometryViz = this.queryGeometryDebugViz;\n let boundsViz = this.queryBoundsDebugViz;\n if (!geometryViz) {\n geometryViz = this.queryGeometryDebugViz = new TileSpaceDebugBuffer(this.tileSize);\n }\n if (!boundsViz) {\n boundsViz = this.queryBoundsDebugViz = new TileSpaceDebugBuffer(this.tileSize, Color.blue);\n }\n\n geometryViz.addPoints(tileResult.tilespaceGeometry);\n boundsViz.addPoints(tileResult.bufferedTilespaceGeometry);\n }\n });\n\n if (!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData)\n return {};\n\n return this.latestFeatureIndex.query({\n tileResult,\n pixelPosMatrix,\n transform,\n params,\n tileTransform: this.tileTransform\n }, layers, serializedLayers, sourceFeatureState);\n }\n\n querySourceFeatures(result: Array, params: any) {\n const featureIndex = this.latestFeatureIndex;\n if (!featureIndex || !featureIndex.rawTileData) return;\n\n const vtLayers = featureIndex.loadVTLayers();\n\n const sourceLayer = params ? params.sourceLayer : '';\n const layer = vtLayers._geojsonTileLayer || vtLayers[sourceLayer];\n\n if (!layer) return;\n\n const filter = featureFilter(params && params.filter);\n const {z, x, y} = this.tileID.canonical;\n const coord = {z, x, y};\n\n for (let i = 0; i < layer.length; i++) {\n const feature = layer.feature(i);\n if (filter.needGeometry) {\n const evaluationFeature = toEvaluationFeature(feature, true);\n // $FlowFixMe[method-unbinding]\n if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), evaluationFeature, this.tileID.canonical)) continue;\n // $FlowFixMe[method-unbinding]\n } else if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature)) {\n continue;\n }\n const id = featureIndex.getId(feature, sourceLayer);\n const geojsonFeature = new GeoJSONFeature(feature, z, x, y, id);\n geojsonFeature.tile = coord;\n\n result.push(geojsonFeature);\n }\n }\n\n hasData(): boolean {\n return this.state === 'loaded' || this.state === 'reloading' || this.state === 'expired';\n }\n\n patternsLoaded(): boolean {\n return !!this.imageAtlas && !!Object.keys(this.imageAtlas.patternPositions).length;\n }\n\n setExpiryData(data: any) {\n const prior = this.expirationTime;\n\n if (data.cacheControl) {\n const parsedCC = parseCacheControl(data.cacheControl);\n if (parsedCC['max-age']) this.expirationTime = Date.now() + parsedCC['max-age'] * 1000;\n } else if (data.expires) {\n this.expirationTime = new Date(data.expires).getTime();\n }\n\n if (this.expirationTime) {\n const now = Date.now();\n let isExpired = false;\n\n if (this.expirationTime > now) {\n isExpired = false;\n } else if (!prior) {\n isExpired = true;\n } else if (this.expirationTime < prior) {\n // Expiring date is going backwards:\n // fall back to exponential backoff\n isExpired = true;\n\n } else {\n const delta = this.expirationTime - prior;\n\n if (!delta) {\n // Server is serving the same expired resource over and over: fall\n // back to exponential backoff.\n isExpired = true;\n\n } else {\n // Assume that either the client or the server clock is wrong and\n // try to interpolate a valid expiration date (from the client POV)\n // observing a minimum timeout.\n this.expirationTime = now + Math.max(delta, CLOCK_SKEW_RETRY_TIMEOUT);\n\n }\n }\n\n if (isExpired) {\n this.expiredRequestCount++;\n this.state = 'expired';\n } else {\n this.expiredRequestCount = 0;\n }\n }\n }\n\n getExpiryTimeout(): void | number {\n if (this.expirationTime) {\n if (this.expiredRequestCount) {\n return 1000 * (1 << Math.min(this.expiredRequestCount - 1, 31));\n } else {\n // Max value for `setTimeout` implementations is a 32 bit integer; cap this accordingly\n return Math.min(this.expirationTime - new Date().getTime(), Math.pow(2, 31) - 1);\n }\n }\n }\n\n setFeatureState(states: LayerFeatureStates, painter: ?Painter) {\n if (!this.latestFeatureIndex ||\n !this.latestFeatureIndex.rawTileData ||\n Object.keys(states).length === 0 ||\n !painter) {\n return;\n }\n\n const vtLayers = this.latestFeatureIndex.loadVTLayers();\n const availableImages = painter.style.listImages();\n\n for (const id in this.buckets) {\n if (!painter.style.hasLayer(id)) continue;\n\n const bucket = this.buckets[id];\n // Buckets are grouped by common source-layer\n const sourceLayerId = bucket.layers[0]['sourceLayer'] || '_geojsonTileLayer';\n const sourceLayer = vtLayers[sourceLayerId];\n const sourceLayerStates = states[sourceLayerId];\n if (!sourceLayer || !sourceLayerStates || Object.keys(sourceLayerStates).length === 0) continue;\n\n // $FlowFixMe[incompatible-type] Flow can't interpret ImagePosition as SpritePosition for some reason here\n const imagePositions: SpritePositions = (this.imageAtlas && this.imageAtlas.patternPositions) || {};\n bucket.update(sourceLayerStates, sourceLayer, availableImages, imagePositions);\n if (bucket instanceof LineBucket || bucket instanceof FillBucket) {\n const sourceCache = painter.style._getSourceCache(bucket.layers[0].source);\n if (painter._terrain && painter._terrain.enabled && sourceCache && bucket.programConfigurations.needsUpload) {\n painter._terrain._clearRenderCacheForTile(sourceCache.id, this.tileID);\n }\n }\n const layer = painter && painter.style && painter.style.getLayer(id);\n if (layer) {\n this.queryPadding = Math.max(this.queryPadding, layer.queryRadius(bucket));\n }\n }\n }\n\n holdingForFade(): boolean {\n return this.symbolFadeHoldUntil !== undefined;\n }\n\n symbolFadeFinished(): boolean {\n return !this.symbolFadeHoldUntil || this.symbolFadeHoldUntil < browser.now();\n }\n\n clearFadeHold() {\n this.symbolFadeHoldUntil = undefined;\n }\n\n setHoldDuration(duration: number) {\n this.symbolFadeHoldUntil = browser.now() + duration;\n }\n\n setTexture(img: TextureImage, painter: Painter) {\n const context = painter.context;\n const gl = context.gl;\n this.texture = this.texture || painter.getTileTexture(img.width);\n if (this.texture) {\n this.texture.update(img, {useMipmap: true});\n } else {\n this.texture = new Texture(context, img, gl.RGBA, {useMipmap: true});\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n }\n }\n\n setDependencies(namespace: string, dependencies: Array) {\n const index = {};\n for (const dep of dependencies) {\n index[dep] = true;\n }\n this.dependencies[namespace] = index;\n }\n\n hasDependency(namespaces: Array, keys: Array): boolean {\n for (const namespace of namespaces) {\n const dependencies = this.dependencies[namespace];\n if (dependencies) {\n for (const key of keys) {\n if (dependencies[key]) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n clearQueryDebugViz() {\n Debug.run(() => {\n if (this.queryGeometryDebugViz) {\n this.queryGeometryDebugViz.clearPoints();\n }\n if (this.queryBoundsDebugViz) {\n this.queryBoundsDebugViz.clearPoints();\n }\n });\n }\n\n _makeDebugTileBoundsBuffers(context: Context, projection: Projection) {\n if (!projection || projection.name === 'mercator' || this._tileDebugBuffer) return;\n\n // reproject tile outline with adaptive resampling\n const boundsLine = loadGeometry(BOUNDS_FEATURE, this.tileID.canonical, this.tileTransform)[0];\n\n // generate vertices for debugging tile boundaries\n const debugVertices = new PosArray();\n const debugIndices = new LineStripIndexArray();\n\n for (let i = 0; i < boundsLine.length; i++) {\n const {x, y} = boundsLine[i];\n debugVertices.emplaceBack(x, y);\n debugIndices.emplaceBack(i);\n }\n debugIndices.emplaceBack(0);\n\n this._tileDebugIndexBuffer = context.createIndexBuffer(debugIndices);\n this._tileDebugBuffer = context.createVertexBuffer(debugVertices, posAttributes.members);\n this._tileDebugSegments = SegmentVector.simpleSegment(0, 0, debugVertices.length, debugIndices.length);\n }\n\n _makeTileBoundsBuffers(context: Context, projection: Projection) {\n if (this._tileBoundsBuffer || !projection || projection.name === 'mercator') return;\n\n // reproject tile outline with adaptive resampling\n const boundsLine = loadGeometry(BOUNDS_FEATURE, this.tileID.canonical, this.tileTransform)[0];\n\n let boundsVertices, boundsIndices;\n if (this.isRaster) {\n // for raster tiles, generate an adaptive MARTINI mesh\n const mesh = getTileMesh(this.tileID.canonical, projection);\n boundsVertices = mesh.vertices;\n boundsIndices = mesh.indices;\n\n } else {\n // for vector tiles, generate an Earcut triangulation of the outline\n boundsVertices = new TileBoundsArray();\n boundsIndices = new TriangleIndexArray();\n\n for (const {x, y} of boundsLine) {\n boundsVertices.emplaceBack(x, y, 0, 0);\n }\n const indices = earcut(boundsVertices.int16, undefined, 4);\n for (let i = 0; i < indices.length; i += 3) {\n boundsIndices.emplaceBack(indices[i], indices[i + 1], indices[i + 2]);\n }\n }\n this._tileBoundsBuffer = context.createVertexBuffer(boundsVertices, boundsAttributes.members);\n this._tileBoundsIndexBuffer = context.createIndexBuffer(boundsIndices);\n this._tileBoundsSegments = SegmentVector.simpleSegment(0, 0, boundsVertices.length, boundsIndices.length);\n }\n\n _makeGlobeTileDebugBuffers(context: Context, transform: Transform) {\n const projection = transform.projection;\n if (!projection || projection.name !== 'globe' || transform.freezeTileCoverage) return;\n\n const id = this.tileID.canonical;\n const bounds = transitionTileAABBinECEF(id, transform);\n const normalizationMatrix = globeNormalizeECEF(bounds);\n\n const phase = globeToMercatorTransition(transform.zoom);\n let worldToECEFMatrix;\n if (phase > 0.0) {\n worldToECEFMatrix = mat4.invert(new Float64Array(16), transform.globeMatrix);\n }\n\n this._makeGlobeTileDebugBorderBuffer(context, id, transform, normalizationMatrix, worldToECEFMatrix, phase);\n this._makeGlobeTileDebugTextBuffer(context, id, transform, normalizationMatrix, worldToECEFMatrix, phase);\n }\n\n _globePoint(x: number, y: number, id: CanonicalTileID, tr: Transform, normalizationMatrix: Float64Array, worldToECEFMatrix?: Float64Array, phase: number): Vec3 {\n // The following is equivalent to doing globe.projectTilePoint.\n // This way we don't recompute the normalization matrix everytime since it remains the same for all points.\n let ecef = tileCoordToECEF(x, y, id);\n if (worldToECEFMatrix) {\n // When in globe-to-Mercator transition, interpolate between globe and Mercator positions in ECEF\n const tileCount = 1 << id.z;\n\n // Wrap tiles to ensure that that Mercator interpolation is in the right direction\n const camX = mercatorXfromLng(tr.center.lng);\n const camY = mercatorYfromLat(tr.center.lat);\n\n const tileCenterX = (id.x + .5) / tileCount;\n const dx = tileCenterX - camX;\n let wrap = 0;\n if (dx > .5) {\n wrap = -1;\n } else if (dx < -.5) {\n wrap = 1;\n }\n\n let mercatorX = (x / EXTENT + id.x) / tileCount + wrap;\n let mercatorY = (y / EXTENT + id.y) / tileCount;\n mercatorX = (mercatorX - camX) * tr._pixelsPerMercatorPixel + camX;\n mercatorY = (mercatorY - camY) * tr._pixelsPerMercatorPixel + camY;\n const mercatorPos = [mercatorX * tr.worldSize, mercatorY * tr.worldSize, 0];\n vec3.transformMat4(mercatorPos, mercatorPos, worldToECEFMatrix);\n ecef = interpolateVec3(ecef, mercatorPos, phase);\n }\n const gp = vec3.transformMat4(ecef, ecef, normalizationMatrix);\n return gp;\n }\n\n _makeGlobeTileDebugBorderBuffer(context: Context, id: CanonicalTileID, tr: Transform, normalizationMatrix: Float64Array, worldToECEFMatrix?: Float64Array, phase: number) {\n const vertices = new PosArray();\n const indices = new LineStripIndexArray();\n const extraGlobe = new PosGlobeExtArray();\n\n const addLine = (sx: number, sy: number, ex: number, ey: number, pointCount: number) => {\n const stepX = (ex - sx) / (pointCount - 1);\n const stepY = (ey - sy) / (pointCount - 1);\n\n const vOffset = vertices.length;\n\n for (let i = 0; i < pointCount; i++) {\n const x = sx + i * stepX;\n const y = sy + i * stepY;\n vertices.emplaceBack(x, y);\n\n const gp = this._globePoint(x, y, id, tr, normalizationMatrix, worldToECEFMatrix, phase);\n\n extraGlobe.emplaceBack(gp[0], gp[1], gp[2]);\n indices.emplaceBack(vOffset + i);\n }\n };\n\n const e = EXTENT;\n addLine(0, 0, e, 0, 16);\n addLine(e, 0, e, e, 16);\n addLine(e, e, 0, e, 16);\n addLine(0, e, 0, 0, 16);\n\n this._tileDebugIndexBuffer = context.createIndexBuffer(indices);\n this._tileDebugBuffer = context.createVertexBuffer(vertices, posAttributes.members);\n this._globeTileDebugBorderBuffer = context.createVertexBuffer(extraGlobe, posAttributesGlobeExt.members);\n this._tileDebugSegments = SegmentVector.simpleSegment(0, 0, vertices.length, indices.length);\n }\n\n _makeGlobeTileDebugTextBuffer(context: Context, id: CanonicalTileID, tr: Transform, normalizationMatrix: Float64Array, worldToECEFMatrix?: Float64Array, phase: number) {\n const SEGMENTS = 4;\n const numVertices = SEGMENTS + 1;\n const step = EXTENT / SEGMENTS;\n\n const vertices = new PosArray();\n const indices = new TriangleIndexArray();\n const extraGlobe = new PosGlobeExtArray();\n\n const totalVertices = numVertices * numVertices;\n const totalTriangles = SEGMENTS * SEGMENTS * 2;\n indices.reserve(totalTriangles);\n vertices.reserve(totalVertices);\n extraGlobe.reserve(totalVertices);\n\n const toIndex = (j: number, i: number): number => {\n return totalVertices * j + i;\n };\n\n // add vertices.\n for (let j = 0; j < totalVertices; j++) {\n const y = j * step;\n for (let i = 0; i < totalVertices; i++) {\n const x = i * step;\n vertices.emplaceBack(x, y);\n\n const gp = this._globePoint(x, y, id, tr, normalizationMatrix, worldToECEFMatrix, phase);\n extraGlobe.emplaceBack(gp[0], gp[1], gp[2]);\n }\n }\n\n // add indices.\n for (let j = 0; j < SEGMENTS; j++) {\n for (let i = 0; i < SEGMENTS; i++) {\n const tl = toIndex(j, i);\n const tr = toIndex(j, i + 1);\n const bl = toIndex(j + 1, i);\n const br = toIndex(j + 1, i + 1);\n\n // first triangle of the sub-patch.\n indices.emplaceBack(tl, tr, bl);\n\n // second triangle of the sub-patch.\n indices.emplaceBack(bl, tr, br);\n }\n }\n\n this._tileDebugTextIndexBuffer = context.createIndexBuffer(indices);\n this._tileDebugTextBuffer = context.createVertexBuffer(vertices, posAttributes.members);\n this._globeTileDebugTextBuffer = context.createVertexBuffer(extraGlobe, posAttributesGlobeExt.members);\n this._tileDebugTextSegments = SegmentVector.simpleSegment(0, 0, totalVertices, totalTriangles);\n }\n}\n\nexport default Tile;\n","// @flow\n\nimport type {CollisionBoxArray} from './array_types.js';\nimport type Style from '../style/style.js';\nimport type {TypedStyleLayer} from '../style/style_layer/typed_style_layer.js';\nimport type FeatureIndex from './feature_index.js';\nimport type Context from '../gl/context.js';\nimport type {FeatureStates} from '../source/source_state.js';\nimport type {SpritePositions} from '../util/image.js';\nimport type LineAtlas from '../render/line_atlas.js';\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {ProjectionSpecification} from '../style-spec/types.js';\nimport type {IVectorTileFeature, IVectorTileLayer} from '@mapbox/vector-tile';\n\nexport type BucketParameters = {\n index: number,\n layers: Array,\n zoom: number,\n canonical: CanonicalTileID,\n pixelRatio: number,\n overscaling: number,\n collisionBoxArray: CollisionBoxArray,\n sourceLayerIndex: number,\n sourceID: string,\n enableTerrain: boolean,\n projection: ProjectionSpecification\n}\n\nexport type PopulateParameters = {\n featureIndex: FeatureIndex,\n iconDependencies: {},\n patternDependencies: {},\n glyphDependencies: {},\n availableImages: Array,\n lineAtlas: LineAtlas\n}\n\nexport type IndexedFeature = {\n feature: IVectorTileFeature,\n id: number | string | void,\n index: number,\n sourceLayerIndex: number,\n}\n\nexport type BucketFeature = {|\n index: number,\n sourceLayerIndex: number,\n geometry: Array>,\n properties: Object,\n type: 1 | 2 | 3,\n id?: any,\n +patterns: {[_: string]: string},\n sortKey?: number\n|};\n\n/**\n * The `Bucket` interface is the single point of knowledge about turning vector\n * tiles into WebGL buffers.\n *\n * `Bucket` is an abstract interface. An implementation exists for each style layer type.\n * Create a bucket via the `StyleLayer#createBucket` method.\n *\n * The concrete bucket types, using layout options from the style layer,\n * transform feature geometries into vertex and index data for use by the\n * vertex shader. They also (via `ProgramConfiguration`) use feature\n * properties and the zoom level to populate the attributes needed for\n * data-driven styling.\n *\n * Buckets are designed to be built on a worker thread and then serialized and\n * transferred back to the main thread for rendering. On the worker side, a\n * bucket's vertex, index, and attribute data is stored in `bucket.arrays:\n * ArrayGroup`. When a bucket's data is serialized and sent back to the main\n * thread, is gets deserialized (using `new Bucket(serializedBucketData)`, with\n * the array data now stored in `bucket.buffers: BufferGroup`. BufferGroups\n * hold the same data as ArrayGroups, but are tuned for consumption by WebGL.\n *\n * @private\n */\nexport interface Bucket {\n layerIds: Array;\n hasPattern: boolean;\n +layers: Array;\n +stateDependentLayers: Array;\n +stateDependentLayerIds: Array;\n populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform): void;\n update(states: FeatureStates, vtLayer: IVectorTileLayer, availableImages: Array, imagePositions: SpritePositions): void;\n isEmpty(): boolean;\n\n upload(context: Context): void;\n uploadPending(): boolean;\n\n /**\n * Release the WebGL resources associated with the buffers. Note that because\n * buckets are shared between layers having the same layout properties, they\n * must be destroyed in groups (all buckets for a tile, or all symbol buckets).\n *\n * @private\n */\n destroy(): void;\n}\n\nexport function deserialize(input: Array, style: Style): {[_: string]: Bucket} {\n const output = {};\n\n // Guard against the case where the map's style has been set to null while\n // this bucket has been parsing.\n if (!style) return output;\n\n for (const bucket of input) {\n const layers = bucket.layerIds\n .map((id) => style.getLayer(id))\n .filter(Boolean);\n\n if (layers.length === 0) {\n continue;\n }\n\n // look up StyleLayer objects from layer ids (since we don't\n // want to waste time serializing/copying them from the worker)\n (bucket: any).layers = layers;\n if ((bucket: any).stateDependentLayerIds) {\n (bucket: any).stateDependentLayers = (bucket: any).stateDependentLayerIds.map((lId) => layers.filter((l) => l.id === lId)[0]);\n }\n for (const layer of layers) {\n output[layer.id] = bucket;\n }\n }\n\n return output;\n}\n","// @flow\n\nimport {extend} from '../util/util.js';\nimport Tile from './tile.js';\nimport type {FeatureState} from '../style-spec/expression/index.js';\nimport type Painter from '../render/painter.js';\n\nexport type FeatureStates = {[feature_id: string]: FeatureState};\nexport type LayerFeatureStates = {[layer: string]: FeatureStates};\n\n/**\n * SourceFeatureState manages the state and pending changes\n * to features in a source, separated by source layer.\n * stateChanges and deletedStates batch all changes to the tile (updates and removes, respectively)\n * between coalesce() events. addFeatureState() and removeFeatureState() also update their counterpart's\n * list of changes, such that coalesce() can apply the proper state changes while agnostic to the order of operations.\n * In deletedStates, all null's denote complete removal of state at that scope\n * @private\n*/\nclass SourceFeatureState {\n state: LayerFeatureStates;\n stateChanges: LayerFeatureStates;\n deletedStates: {};\n\n constructor() {\n this.state = {};\n this.stateChanges = {};\n this.deletedStates = {};\n }\n\n updateState(sourceLayer: string, featureId: number | string, newState: Object) {\n const feature = String(featureId);\n this.stateChanges[sourceLayer] = this.stateChanges[sourceLayer] || {};\n this.stateChanges[sourceLayer][feature] = this.stateChanges[sourceLayer][feature] || {};\n extend(this.stateChanges[sourceLayer][feature], newState);\n\n if (this.deletedStates[sourceLayer] === null) {\n this.deletedStates[sourceLayer] = {};\n for (const ft in this.state[sourceLayer]) {\n if (ft !== feature) this.deletedStates[sourceLayer][ft] = null;\n }\n } else {\n const featureDeletionQueued = this.deletedStates[sourceLayer] && this.deletedStates[sourceLayer][feature] === null;\n if (featureDeletionQueued) {\n this.deletedStates[sourceLayer][feature] = {};\n for (const prop in this.state[sourceLayer][feature]) {\n if (!newState[prop]) this.deletedStates[sourceLayer][feature][prop] = null;\n }\n } else {\n for (const key in newState) {\n const deletionInQueue = this.deletedStates[sourceLayer] && this.deletedStates[sourceLayer][feature] && this.deletedStates[sourceLayer][feature][key] === null;\n if (deletionInQueue) delete this.deletedStates[sourceLayer][feature][key];\n }\n }\n }\n }\n\n removeFeatureState(sourceLayer: string, featureId?: number | string, key?: string) {\n const sourceLayerDeleted = this.deletedStates[sourceLayer] === null;\n if (sourceLayerDeleted) return;\n\n const feature = String(featureId);\n\n this.deletedStates[sourceLayer] = this.deletedStates[sourceLayer] || {};\n\n if (key && featureId !== undefined) {\n if (this.deletedStates[sourceLayer][feature] !== null) {\n this.deletedStates[sourceLayer][feature] = this.deletedStates[sourceLayer][feature] || {};\n this.deletedStates[sourceLayer][feature][key] = null;\n }\n } else if (featureId !== undefined) {\n const updateInQueue = this.stateChanges[sourceLayer] && this.stateChanges[sourceLayer][feature];\n if (updateInQueue) {\n this.deletedStates[sourceLayer][feature] = {};\n for (key in this.stateChanges[sourceLayer][feature]) this.deletedStates[sourceLayer][feature][key] = null;\n\n } else {\n this.deletedStates[sourceLayer][feature] = null;\n }\n } else {\n this.deletedStates[sourceLayer] = null;\n }\n }\n\n getState(sourceLayer: string, featureId: number | string): FeatureStates {\n const feature = String(featureId);\n const base = this.state[sourceLayer] || {};\n const changes = this.stateChanges[sourceLayer] || {};\n\n const reconciledState = extend({}, base[feature], changes[feature]);\n\n //return empty object if the whole source layer is awaiting deletion\n if (this.deletedStates[sourceLayer] === null) return {};\n else if (this.deletedStates[sourceLayer]) {\n const featureDeletions = this.deletedStates[sourceLayer][featureId];\n if (featureDeletions === null) return {};\n for (const prop in featureDeletions) delete reconciledState[prop];\n }\n return reconciledState;\n }\n\n initializeTileState(tile: Tile, painter: ?Painter) {\n tile.setFeatureState(this.state, painter);\n }\n\n coalesceChanges(tiles: {[_: any]: Tile}, painter: any) {\n //track changes with full state objects, but only for features that got modified\n const featuresChanged: LayerFeatureStates = {};\n\n for (const sourceLayer in this.stateChanges) {\n this.state[sourceLayer] = this.state[sourceLayer] || {};\n const layerStates = {};\n for (const feature in this.stateChanges[sourceLayer]) {\n if (!this.state[sourceLayer][feature]) this.state[sourceLayer][feature] = {};\n extend(this.state[sourceLayer][feature], this.stateChanges[sourceLayer][feature]);\n layerStates[feature] = this.state[sourceLayer][feature];\n }\n featuresChanged[sourceLayer] = layerStates;\n }\n\n for (const sourceLayer in this.deletedStates) {\n this.state[sourceLayer] = this.state[sourceLayer] || {};\n const layerStates = {};\n\n if (this.deletedStates[sourceLayer] === null) {\n for (const ft in this.state[sourceLayer]) {\n layerStates[ft] = {};\n this.state[sourceLayer][ft] = {};\n }\n } else {\n for (const feature in this.deletedStates[sourceLayer]) {\n const deleteWholeFeatureState = this.deletedStates[sourceLayer][feature] === null;\n if (deleteWholeFeatureState) this.state[sourceLayer][feature] = {};\n else if (this.state[sourceLayer][feature]) {\n for (const key of Object.keys(this.deletedStates[sourceLayer][feature])) {\n delete this.state[sourceLayer][feature][key];\n }\n }\n layerStates[feature] = this.state[sourceLayer][feature];\n }\n }\n\n featuresChanged[sourceLayer] = featuresChanged[sourceLayer] || {};\n extend(featuresChanged[sourceLayer], layerStates);\n }\n\n this.stateChanges = {};\n this.deletedStates = {};\n\n if (Object.keys(featuresChanged).length === 0) return;\n\n for (const id in tiles) {\n const tile = tiles[id];\n tile.setFeatureState(featuresChanged, painter);\n }\n }\n}\n\nexport default SourceFeatureState;\n","// @flow\n\nimport DEMData from \"./dem_data.js\";\nimport {vec3} from 'gl-matrix';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport {clamp} from '../util/util.js';\n\nimport type {Vec3} from 'gl-matrix';\n\nclass MipLevel {\n size: number;\n minimums: Array;\n maximums: Array;\n leaves: Array;\n\n constructor(size_: number) {\n this.size = size_;\n this.minimums = [];\n this.maximums = [];\n this.leaves = [];\n }\n\n getElevation(x: number, y: number): { min: number, max: number} {\n const idx = this.toIdx(x, y);\n return {\n min: this.minimums[idx],\n max: this.maximums[idx]\n };\n }\n\n isLeaf(x: number, y: number): number {\n return this.leaves[this.toIdx(x, y)];\n }\n\n toIdx(x: number, y: number): number {\n return y * this.size + x;\n }\n}\n\nfunction aabbRayIntersect(min: Vec3, max: Vec3, pos: Vec3, dir: Vec3): ?number {\n let tMin = 0;\n let tMax = Number.MAX_VALUE;\n\n const epsilon = 1e-15;\n\n for (let i = 0; i < 3; i++) {\n if (Math.abs(dir[i]) < epsilon) {\n // Parallel ray\n if (pos[i] < min[i] || pos[i] > max[i])\n return null;\n } else {\n const ood = 1.0 / dir[i];\n let t1 = (min[i] - pos[i]) * ood;\n let t2 = (max[i] - pos[i]) * ood;\n if (t1 > t2) {\n const temp = t1;\n t1 = t2;\n t2 = temp;\n }\n if (t1 > tMin)\n tMin = t1;\n if (t2 < tMax)\n tMax = t2;\n if (tMin > tMax)\n return null;\n }\n }\n\n return tMin;\n}\n\nfunction triangleRayIntersect(ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, pos: Vec3, dir: Vec3): ?number {\n // Compute barycentric coordinates u and v to find the intersection\n const abX = bx - ax;\n const abY = by - ay;\n const abZ = bz - az;\n\n const acX = cx - ax;\n const acY = cy - ay;\n const acZ = cz - az;\n\n // pvec = cross(dir, a), det = dot(ab, pvec)\n const pvecX = dir[1] * acZ - dir[2] * acY;\n const pvecY = dir[2] * acX - dir[0] * acZ;\n const pvecZ = dir[0] * acY - dir[1] * acX;\n const det = abX * pvecX + abY * pvecY + abZ * pvecZ;\n\n if (Math.abs(det) < 1e-15)\n return null;\n\n const invDet = 1.0 / det;\n const tvecX = pos[0] - ax;\n const tvecY = pos[1] - ay;\n const tvecZ = pos[2] - az;\n const u = (tvecX * pvecX + tvecY * pvecY + tvecZ * pvecZ) * invDet;\n\n if (u < 0.0 || u > 1.0)\n return null;\n\n // qvec = cross(tvec, ab)\n const qvecX = tvecY * abZ - tvecZ * abY;\n const qvecY = tvecZ * abX - tvecX * abZ;\n const qvecZ = tvecX * abY - tvecY * abX;\n const v = (dir[0] * qvecX + dir[1] * qvecY + dir[2] * qvecZ) * invDet;\n\n if (v < 0.0 || u + v > 1.0)\n return null;\n\n return (acX * qvecX + acY * qvecY + acZ * qvecZ) * invDet;\n}\n\nfunction frac(v: number, lo: number, hi: number) {\n return (v - lo) / (hi - lo);\n}\n\nfunction decodeBounds(x: number, y: number, depth: number, boundsMinx: number, boundsMiny: number, boundsMaxx: number, boundsMaxy: number, outMin: Array, outMax: Array) {\n const scale = 1 << depth;\n const rangex = boundsMaxx - boundsMinx;\n const rangey = boundsMaxy - boundsMiny;\n\n const minX = (x + 0) / scale * rangex + boundsMinx;\n const maxX = (x + 1) / scale * rangex + boundsMinx;\n const minY = (y + 0) / scale * rangey + boundsMiny;\n const maxY = (y + 1) / scale * rangey + boundsMiny;\n\n outMin[0] = minX;\n outMin[1] = minY;\n outMax[0] = maxX;\n outMax[1] = maxY;\n}\n\n// A small padding value is used with bounding boxes to extend the bottom below sea level\nconst aabbSkirtPadding = 100;\n\n// A sparse min max quad tree for performing accelerated queries against dem elevation data.\n// Each tree node stores the minimum and maximum elevation of its children nodes and a flag whether the node is a leaf.\n// Node data is stored in non-interleaved arrays where the root is at index 0.\nexport default class DemMinMaxQuadTree {\n maximums: Array;\n minimums: Array;\n leaves: Array;\n childOffsets: Array;\n nodeCount: number;\n dem: DEMData;\n _siblingOffset: Array>;\n\n constructor(dem_: DEMData) {\n this.maximums = [];\n this.minimums = [];\n this.leaves = [];\n this.childOffsets = [];\n this.nodeCount = 0;\n this.dem = dem_;\n\n // Precompute the order of 4 sibling nodes in the memory. Top-left, top-right, bottom-left, bottom-right\n this._siblingOffset = [\n [0, 0],\n [1, 0],\n [0, 1],\n [1, 1]\n ];\n\n if (!this.dem)\n return;\n\n const mips = buildDemMipmap(this.dem);\n const maxLvl = mips.length - 1;\n\n // Create the root node\n const rootMip = mips[maxLvl];\n const min = rootMip.minimums;\n const max = rootMip.maximums;\n const leaves = rootMip.leaves;\n this._addNode(min[0], max[0], leaves[0]);\n\n // Construct the rest of the tree recursively\n this._construct(mips, 0, 0, maxLvl, 0);\n }\n\n // Performs raycast against the tree root only. Min and max coordinates defines the size of the root node\n raycastRoot(minx: number, miny: number, maxx: number, maxy: number, p: Vec3, d: Vec3, exaggeration: number = 1): ?number {\n const min = [minx, miny, -aabbSkirtPadding];\n const max = [maxx, maxy, this.maximums[0] * exaggeration];\n return aabbRayIntersect(min, max, p, d);\n }\n\n raycast(rootMinx: number, rootMiny: number, rootMaxx: number, rootMaxy: number, p: Vec3, d: Vec3, exaggeration: number = 1): ?number {\n if (!this.nodeCount)\n return null;\n\n const t = this.raycastRoot(rootMinx, rootMiny, rootMaxx, rootMaxy, p, d, exaggeration);\n if (t == null)\n return null;\n\n const tHits = [];\n const sortedHits = [];\n const boundsMin = [];\n const boundsMax = [];\n\n const stack = [{\n idx: 0,\n t,\n nodex: 0,\n nodey: 0,\n depth: 0\n }];\n\n // Traverse the tree until something is hit or the ray escapes\n while (stack.length > 0) {\n const {idx, t, nodex, nodey, depth} = stack.pop();\n\n if (this.leaves[idx]) {\n // Create 2 triangles to approximate the surface plane for more precise tests\n decodeBounds(nodex, nodey, depth, rootMinx, rootMiny, rootMaxx, rootMaxy, boundsMin, boundsMax);\n\n const scale = 1 << depth;\n const minxUv = (nodex + 0) / scale;\n const maxxUv = (nodex + 1) / scale;\n const minyUv = (nodey + 0) / scale;\n const maxyUv = (nodey + 1) / scale;\n\n // 4 corner points A, B, C and D defines the (quad) area covered by this node\n const az = sampleElevation(minxUv, minyUv, this.dem) * exaggeration;\n const bz = sampleElevation(maxxUv, minyUv, this.dem) * exaggeration;\n const cz = sampleElevation(maxxUv, maxyUv, this.dem) * exaggeration;\n const dz = sampleElevation(minxUv, maxyUv, this.dem) * exaggeration;\n\n const t0: any = triangleRayIntersect(\n boundsMin[0], boundsMin[1], az, // A\n boundsMax[0], boundsMin[1], bz, // B\n boundsMax[0], boundsMax[1], cz, // C\n p, d);\n\n const t1: any = triangleRayIntersect(\n boundsMax[0], boundsMax[1], cz,\n boundsMin[0], boundsMax[1], dz,\n boundsMin[0], boundsMin[1], az,\n p, d);\n\n const tMin = Math.min(\n t0 !== null ? t0 : Number.MAX_VALUE,\n t1 !== null ? t1 : Number.MAX_VALUE);\n\n // The ray might go below the two surface triangles but hit one of the sides.\n // This covers the case of skirt geometry between two dem tiles of different zoom level\n if (tMin === Number.MAX_VALUE) {\n const hitPos = vec3.scaleAndAdd([], p, d, t);\n const fracx = frac(hitPos[0], boundsMin[0], boundsMax[0]);\n const fracy = frac(hitPos[1], boundsMin[1], boundsMax[1]);\n\n if (bilinearLerp(az, bz, dz, cz, fracx, fracy) >= hitPos[2])\n return t;\n } else {\n return tMin;\n }\n\n continue;\n }\n\n // Perform intersection tests agains each of the 4 child nodes and store results from closest to furthest.\n let hitCount = 0;\n\n for (let i = 0; i < this._siblingOffset.length; i++) {\n\n const childNodeX = (nodex << 1) + this._siblingOffset[i][0];\n const childNodeY = (nodey << 1) + this._siblingOffset[i][1];\n\n // Decode node aabb from the morton code\n decodeBounds(childNodeX, childNodeY, depth + 1, rootMinx, rootMiny, rootMaxx, rootMaxy, boundsMin, boundsMax);\n\n boundsMin[2] = -aabbSkirtPadding;\n boundsMax[2] = this.maximums[this.childOffsets[idx] + i] * exaggeration;\n\n const result = aabbRayIntersect(boundsMin, boundsMax, p, d);\n if (result != null) {\n // Build the result list from furthest to closest hit.\n // The order will be inversed when building the stack\n const tHit: number = result;\n tHits[i] = tHit;\n\n let added = false;\n for (let j = 0; j < hitCount && !added; j++) {\n if (tHit >= tHits[sortedHits[j]]) {\n sortedHits.splice(j, 0, i);\n added = true;\n }\n }\n if (!added)\n sortedHits[hitCount] = i;\n hitCount++;\n }\n }\n\n // Continue recursion from closest to furthest\n for (let i = 0; i < hitCount; i++) {\n const hitIdx = sortedHits[i];\n stack.push({\n idx: this.childOffsets[idx] + hitIdx,\n t: tHits[hitIdx],\n nodex: (nodex << 1) + this._siblingOffset[hitIdx][0],\n nodey: (nodey << 1) + this._siblingOffset[hitIdx][1],\n depth: depth + 1\n });\n }\n }\n\n return null;\n }\n\n _addNode(min: number, max: number, leaf: number): number {\n this.minimums.push(min);\n this.maximums.push(max);\n this.leaves.push(leaf);\n this.childOffsets.push(0);\n return this.nodeCount++;\n }\n\n _construct(mips: Array, x: number, y: number, lvl: number, parentIdx: number) {\n if (mips[lvl].isLeaf(x, y) === 1) {\n return;\n }\n\n // Update parent offset\n if (!this.childOffsets[parentIdx])\n this.childOffsets[parentIdx] = this.nodeCount;\n\n // Construct all 4 children and place them next to each other in memory\n const childLvl = lvl - 1;\n const childMip = mips[childLvl];\n\n let leafMask = 0;\n let firstNodeIdx = 0;\n\n for (let i = 0; i < this._siblingOffset.length; i++) {\n const childX = x * 2 + this._siblingOffset[i][0];\n const childY = y * 2 + this._siblingOffset[i][1];\n\n const elevation = childMip.getElevation(childX, childY);\n const leaf = childMip.isLeaf(childX, childY);\n const nodeIdx = this._addNode(elevation.min, elevation.max, leaf);\n\n if (leaf)\n leafMask |= 1 << i;\n if (!firstNodeIdx)\n firstNodeIdx = nodeIdx;\n }\n\n // Continue construction of the tree recursively to non-leaf nodes.\n for (let i = 0; i < this._siblingOffset.length; i++) {\n if (!(leafMask & (1 << i))) {\n this._construct(mips, x * 2 + this._siblingOffset[i][0], y * 2 + this._siblingOffset[i][1], childLvl, firstNodeIdx + i);\n }\n }\n }\n}\n\nfunction bilinearLerp(p00: any, p10: any, p01: any, p11: any, x: number, y: number): any {\n return interpolate(\n interpolate(p00, p01, y),\n interpolate(p10, p11, y),\n x);\n}\n\n// Sample elevation in normalized uv-space ([0, 0] is the top left)\n// This function does not account for exaggeration\nexport function sampleElevation(fx: number, fy: number, dem: DEMData): number {\n // Sample position in texels\n const demSize = dem.dim;\n const x = clamp(fx * demSize - 0.5, 0, demSize - 1);\n const y = clamp(fy * demSize - 0.5, 0, demSize - 1);\n\n // Compute 4 corner points for bilinear interpolation\n const ixMin = Math.floor(x);\n const iyMin = Math.floor(y);\n const ixMax = Math.min(ixMin + 1, demSize - 1);\n const iyMax = Math.min(iyMin + 1, demSize - 1);\n\n const e00 = dem.get(ixMin, iyMin);\n const e10 = dem.get(ixMax, iyMin);\n const e01 = dem.get(ixMin, iyMax);\n const e11 = dem.get(ixMax, iyMax);\n\n return bilinearLerp(e00, e10, e01, e11, x - ixMin, y - iyMin);\n}\n\nexport function buildDemMipmap(dem: DEMData): Array {\n const demSize = dem.dim;\n\n const elevationDiffThreshold = 5;\n const texelSizeOfMip0 = 8;\n const levelCount = Math.ceil(Math.log2(demSize / texelSizeOfMip0));\n const mips: Array = [];\n\n let blockCount = Math.ceil(Math.pow(2, levelCount));\n const blockSize = 1 / blockCount;\n\n const blockSamples = (x: number, y: number, size: number, exclusive: boolean, outBounds: Array) => {\n const padding = exclusive ? 1 : 0;\n const minx = x * size;\n const maxx = (x + 1) * size - padding;\n const miny = y * size;\n const maxy = (y + 1) * size - padding;\n\n outBounds[0] = minx;\n outBounds[1] = miny;\n outBounds[2] = maxx;\n outBounds[3] = maxy;\n };\n\n // The first mip (0) is built by sampling 4 corner points of each 8x8 texel block\n let mip = new MipLevel(blockCount);\n const blockBounds = [];\n\n for (let idx = 0; idx < blockCount * blockCount; idx++) {\n const y = Math.floor(idx / blockCount);\n const x = idx % blockCount;\n\n blockSamples(x, y, blockSize, false, blockBounds);\n\n const e0 = sampleElevation(blockBounds[0], blockBounds[1], dem); // minx, miny\n const e1 = sampleElevation(blockBounds[2], blockBounds[1], dem); // maxx, miny\n const e2 = sampleElevation(blockBounds[2], blockBounds[3], dem); // maxx, maxy\n const e3 = sampleElevation(blockBounds[0], blockBounds[3], dem); // minx, maxy\n\n mip.minimums.push(Math.min(e0, e1, e2, e3));\n mip.maximums.push(Math.max(e0, e1, e2, e3));\n mip.leaves.push(1);\n }\n\n mips.push(mip);\n\n // Construct the rest of the mip levels from bottom to up\n for (blockCount /= 2; blockCount >= 1; blockCount /= 2) {\n const prevMip = mips[mips.length - 1];\n\n mip = new MipLevel(blockCount);\n\n for (let idx = 0; idx < blockCount * blockCount; idx++) {\n const y = Math.floor(idx / blockCount);\n const x = idx % blockCount;\n\n // Sample elevation of all 4 children mip texels. 4 leaf nodes can be concatenated into a single\n // leaf if the total elevation difference is below the threshold value\n blockSamples(x, y, 2, true, blockBounds);\n\n const e0 = prevMip.getElevation(blockBounds[0], blockBounds[1]);\n const e1 = prevMip.getElevation(blockBounds[2], blockBounds[1]);\n const e2 = prevMip.getElevation(blockBounds[2], blockBounds[3]);\n const e3 = prevMip.getElevation(blockBounds[0], blockBounds[3]);\n\n const l0 = prevMip.isLeaf(blockBounds[0], blockBounds[1]);\n const l1 = prevMip.isLeaf(blockBounds[2], blockBounds[1]);\n const l2 = prevMip.isLeaf(blockBounds[2], blockBounds[3]);\n const l3 = prevMip.isLeaf(blockBounds[0], blockBounds[3]);\n\n const minElevation = Math.min(e0.min, e1.min, e2.min, e3.min);\n const maxElevation = Math.max(e0.max, e1.max, e2.max, e3.max);\n const canConcatenate = l0 && l1 && l2 && l3;\n\n mip.maximums.push(maxElevation);\n mip.minimums.push(minElevation);\n\n if (maxElevation - minElevation <= elevationDiffThreshold && canConcatenate) {\n // All samples have uniform elevation. Mark this as a leaf\n mip.leaves.push(1);\n } else {\n mip.leaves.push(0);\n }\n }\n\n mips.push(mip);\n }\n\n return mips;\n}\n","// @flow\nimport {RGBAImage} from '../util/image.js';\n\nimport {warnOnce, clamp} from '../util/util.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport DemMinMaxQuadTree from './dem_tree.js';\nimport assert from 'assert';\n\n// DEMData is a data structure for decoding, backfilling, and storing elevation data for processing in the hillshade shaders\n// data can be populated either from a pngraw image tile or from serliazed data sent back from a worker. When data is initially\n// loaded from a image tile, we decode the pixel values using the appropriate decoding formula, but we store the\n// elevation data as an Int32 value. we add 65536 (2^16) to eliminate negative values and enable the use of\n// integer overflow when creating the texture used in the hillshadePrepare step.\n\n// DEMData also handles the backfilling of data from a tile's neighboring tiles. This is necessary because we use a pixel's 8\n// surrounding pixel values to compute the slope at that pixel, and we cannot accurately calculate the slope at pixels on a\n// tile's edge without backfilling from neighboring tiles.\n\nexport type DEMEncoding = \"mapbox\" | \"terrarium\";\n\nconst unpackVectors = {\n mapbox: [6553.6, 25.6, 0.1, 10000.0],\n terrarium: [256.0, 1.0, 1.0 / 256.0, 32768.0]\n};\n\nfunction unpackMapbox(r: number, g: number, b: number): number {\n // unpacking formula for mapbox.terrain-rgb:\n // https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb\n return ((r * 256 * 256 + g * 256.0 + b) / 10.0 - 10000.0);\n}\n\nfunction unpackTerrarium(r: number, g: number, b: number): number {\n // unpacking formula for mapzen terrarium:\n // https://aws.amazon.com/public-datasets/terrain/\n return ((r * 256 + g + b / 256) - 32768.0);\n}\n\nexport default class DEMData {\n uid: number;\n pixels: Uint8Array;\n stride: number;\n dim: number;\n encoding: DEMEncoding;\n borderReady: boolean;\n _tree: DemMinMaxQuadTree;\n get tree(): DemMinMaxQuadTree {\n if (!this._tree) this._buildQuadTree();\n return this._tree;\n }\n\n // RGBAImage data has uniform 1px padding on all sides: square tile edge size defines stride\n // and dim is calculated as stride - 2.\n constructor(uid: number, data: ImageData, encoding: DEMEncoding, borderReady: boolean = false, buildQuadTree: boolean = false): void {\n this.uid = uid;\n if (data.height !== data.width) throw new RangeError('DEM tiles must be square');\n if (encoding && encoding !== \"mapbox\" && encoding !== \"terrarium\") return warnOnce(\n `\"${encoding}\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".`\n );\n this.stride = data.height;\n const dim = this.dim = data.height - 2;\n const values = new Uint32Array(data.data.buffer);\n this.pixels = new Uint8Array(data.data.buffer);\n this.encoding = encoding || 'mapbox';\n this.borderReady = borderReady;\n\n if (borderReady) return;\n\n // in order to avoid flashing seams between tiles, here we are initially populating a 1px border of pixels around the image\n // with the data of the nearest pixel from the image. this data is eventually replaced when the tile's neighboring\n // tiles are loaded and the accurate data can be backfilled using DEMData#backfillBorder\n for (let x = 0; x < dim; x++) {\n // left vertical border\n values[this._idx(-1, x)] = values[this._idx(0, x)];\n // right vertical border\n values[this._idx(dim, x)] = values[this._idx(dim - 1, x)];\n // left horizontal border\n values[this._idx(x, -1)] = values[this._idx(x, 0)];\n // right horizontal border\n values[this._idx(x, dim)] = values[this._idx(x, dim - 1)];\n }\n // corners\n values[this._idx(-1, -1)] = values[this._idx(0, 0)];\n values[this._idx(dim, -1)] = values[this._idx(dim - 1, 0)];\n values[this._idx(-1, dim)] = values[this._idx(0, dim - 1)];\n values[this._idx(dim, dim)] = values[this._idx(dim - 1, dim - 1)];\n if (buildQuadTree) this._buildQuadTree();\n }\n\n _buildQuadTree() {\n assert(!this._tree);\n // Construct the implicit sparse quad tree by traversing mips from top to down\n this._tree = new DemMinMaxQuadTree(this);\n }\n\n get(x: number, y: number, clampToEdge: boolean = false): number {\n if (clampToEdge) {\n x = clamp(x, -1, this.dim);\n y = clamp(y, -1, this.dim);\n }\n const index = this._idx(x, y) * 4;\n const unpack = this.encoding === \"terrarium\" ? unpackTerrarium : unpackMapbox;\n return unpack(this.pixels[index], this.pixels[index + 1], this.pixels[index + 2]);\n }\n\n static getUnpackVector(encoding: DEMEncoding): [number, number, number, number] {\n return unpackVectors[encoding];\n }\n\n get unpackVector(): [number, number, number, number] {\n return unpackVectors[this.encoding];\n }\n\n _idx(x: number, y: number): number {\n if (x < -1 || x >= this.dim + 1 || y < -1 || y >= this.dim + 1) throw new RangeError('out of range source coordinates for DEM data');\n return (y + 1) * this.stride + (x + 1);\n }\n\n static pack(altitude: number, encoding: DEMEncoding): [number, number, number, number] {\n const color = [0, 0, 0, 0];\n const vector = DEMData.getUnpackVector(encoding);\n let v = Math.floor((altitude + vector[3]) / vector[2]);\n color[2] = v % 256;\n v = Math.floor(v / 256);\n color[1] = v % 256;\n v = Math.floor(v / 256);\n color[0] = v;\n return color;\n }\n\n getPixels(): RGBAImage {\n return new RGBAImage({width: this.stride, height: this.stride}, this.pixels);\n }\n\n backfillBorder(borderTile: DEMData, dx: number, dy: number): void {\n if (this.dim !== borderTile.dim) throw new Error('dem dimension mismatch');\n\n let xMin = dx * this.dim,\n xMax = dx * this.dim + this.dim,\n yMin = dy * this.dim,\n yMax = dy * this.dim + this.dim;\n\n switch (dx) {\n case -1:\n xMin = xMax - 1;\n break;\n case 1:\n xMax = xMin + 1;\n break;\n }\n\n switch (dy) {\n case -1:\n yMin = yMax - 1;\n break;\n case 1:\n yMax = yMin + 1;\n break;\n }\n\n const ox = -dx * this.dim;\n const oy = -dy * this.dim;\n for (let y = yMin; y < yMax; y++) {\n for (let x = xMin; x < xMax; x++) {\n const i = 4 * this._idx(x, y);\n const j = 4 * this._idx(x + ox, y + oy);\n this.pixels[i + 0] = borderTile.pixels[j + 0];\n this.pixels[i + 1] = borderTile.pixels[j + 1];\n this.pixels[i + 2] = borderTile.pixels[j + 2];\n this.pixels[i + 3] = borderTile.pixels[j + 3];\n }\n }\n }\n\n onDeserialize() {\n if (this._tree) this._tree.dem = this;\n }\n}\n\nregister(DEMData, 'DEMData');\nregister(DemMinMaxQuadTree, 'DemMinMaxQuadTree', {omit: ['dem']});\n","// @flow\n\nimport {OverscaledTileID} from './tile_id.js';\nimport type Tile from './tile.js';\n\n/**\n * A [least-recently-used cache](http://en.wikipedia.org/wiki/Cache_algorithms)\n * with hash lookup made possible by keeping a list of keys in parallel to\n * an array of dictionary of values\n *\n * @private\n */\nclass TileCache {\n max: number;\n data: {[key: string | number]: Array<{ value: Tile, timeout: ?TimeoutID}>};\n order: Array;\n onRemove: (element: Tile) => void;\n /**\n * @param {number} max The max number of permitted values.\n * @private\n * @param {Function} onRemove The callback called with items when they expire.\n */\n constructor(max: number, onRemove: (element: Tile) => void) {\n this.max = max;\n this.onRemove = onRemove;\n this.reset();\n }\n\n /**\n * Clear the cache.\n *\n * @returns {TileCache} Returns itself to allow for method chaining.\n * @private\n */\n reset(): this {\n for (const key in this.data) {\n for (const removedData of this.data[key]) {\n if (removedData.timeout) clearTimeout(removedData.timeout);\n this.onRemove(removedData.value);\n }\n }\n\n this.data = {};\n this.order = [];\n\n return this;\n }\n\n /**\n * Add a key, value combination to the cache, trimming its size if this pushes\n * it over max length.\n *\n * @param {OverscaledTileID} tileID lookup key for the item\n * @param {*} data any value\n *\n * @returns {TileCache} Returns itself to allow for method chaining.\n * @private\n */\n add(tileID: OverscaledTileID, data: Tile, expiryTimeout: number | void): this {\n const key = tileID.wrapped().key;\n if (this.data[key] === undefined) {\n this.data[key] = [];\n }\n\n const dataWrapper = {\n value: data,\n timeout: undefined\n };\n\n if (expiryTimeout !== undefined) {\n dataWrapper.timeout = setTimeout(() => {\n this.remove(tileID, dataWrapper);\n }, expiryTimeout);\n }\n\n this.data[key].push(dataWrapper);\n this.order.push(key);\n\n if (this.order.length > this.max) {\n const removedData = this._getAndRemoveByKey(this.order[0]);\n if (removedData) this.onRemove(removedData);\n }\n\n return this;\n }\n\n /**\n * Determine whether the value attached to `key` is present\n *\n * @param {OverscaledTileID} tileID the key to be looked-up\n * @returns {boolean} whether the cache has this value\n * @private\n */\n has(tileID: OverscaledTileID): boolean {\n return tileID.wrapped().key in this.data;\n }\n\n /**\n * Get the value attached to a specific key and remove data from cache.\n * If the key is not found, returns `null`\n *\n * @param {OverscaledTileID} tileID the key to look up\n * @returns {*} the data, or null if it isn't found\n * @private\n */\n getAndRemove(tileID: OverscaledTileID): ?Tile {\n if (!this.has(tileID)) { return null; }\n return this._getAndRemoveByKey(tileID.wrapped().key);\n }\n\n /*\n * Get and remove the value with the specified key.\n */\n _getAndRemoveByKey(key: number): ?Tile {\n const data = this.data[key].shift();\n if (data.timeout) clearTimeout(data.timeout);\n\n if (this.data[key].length === 0) {\n delete this.data[key];\n }\n this.order.splice(this.order.indexOf(key), 1);\n\n return data.value;\n }\n\n /*\n * Get the value with the specified (wrapped tile) key.\n */\n getByKey(key: number): ?Tile {\n const data = this.data[key];\n return data ? data[0].value : null;\n }\n\n /**\n * Get the value attached to a specific key without removing data\n * from the cache. If the key is not found, returns `null`\n *\n * @param {OverscaledTileID} tileID the key to look up\n * @returns {*} the data, or null if it isn't found\n * @private\n */\n get(tileID: OverscaledTileID): ?Tile {\n if (!this.has(tileID)) { return null; }\n\n const data = this.data[tileID.wrapped().key][0];\n return data.value;\n }\n\n /**\n * Remove a key/value combination from the cache.\n *\n * @param {OverscaledTileID} tileID the key for the pair to delete\n * @param {Tile} value If a value is provided, remove that exact version of the value.\n * @returns {TileCache} this cache\n * @private\n */\n remove(tileID: OverscaledTileID, value: ?{ value: Tile, timeout: ?TimeoutID}): this {\n if (!this.has(tileID)) { return this; }\n const key = tileID.wrapped().key;\n\n const dataIndex = value === undefined ? 0 : this.data[key].indexOf(value);\n const data = this.data[key][dataIndex];\n this.data[key].splice(dataIndex, 1);\n if (data.timeout) clearTimeout(data.timeout);\n if (this.data[key].length === 0) {\n delete this.data[key];\n }\n this.onRemove(data.value);\n this.order.splice(this.order.indexOf(key), 1);\n\n return this;\n }\n\n /**\n * Change the max size of the cache.\n *\n * @param {number} max the max size of the cache\n * @returns {TileCache} this cache\n * @private\n */\n setMaxSize(max: number): TileCache {\n this.max = max;\n\n while (this.order.length > this.max) {\n const removedData = this._getAndRemoveByKey(this.order[0]);\n if (removedData) this.onRemove(removedData);\n }\n\n return this;\n }\n\n /**\n * Remove entries that do not pass a filter function. Used for removing\n * stale tiles from the cache.\n *\n * @private\n * @param {function} filterFn Determines whether the tile is filtered. If the supplied function returns false, the tile will be filtered out.\n */\n filter(filterFn: (tile: Tile) => boolean) {\n const removed = [];\n for (const key in this.data) {\n for (const entry of this.data[key]) {\n if (!filterFn(entry.value)) {\n removed.push(entry);\n }\n }\n }\n for (const r of removed) {\n this.remove(r.value.tileID, r);\n }\n }\n}\n\nexport default TileCache;\n","// @flow\nimport type {DepthFuncType, DepthMaskType, DepthRangeType} from './types.js';\n\nconst ALWAYS = 0x0207;\n\nclass DepthMode {\n func: DepthFuncType;\n mask: DepthMaskType;\n range: DepthRangeType;\n\n // DepthMask enums\n static ReadOnly: boolean;\n static ReadWrite: boolean;\n\n constructor(depthFunc: DepthFuncType, depthMask: DepthMaskType, depthRange: DepthRangeType) {\n this.func = depthFunc;\n this.mask = depthMask;\n this.range = depthRange;\n }\n\n static disabled: $ReadOnly;\n}\n\nDepthMode.ReadOnly = false;\nDepthMode.ReadWrite = true;\n\nDepthMode.disabled = new DepthMode(ALWAYS, DepthMode.ReadOnly, [0, 1]);\n\nexport default DepthMode;\n","// @flow\nimport type {StencilOpConstant, StencilTest} from './types.js';\n\nconst ALWAYS = 0x0207;\nconst KEEP = 0x1E00;\n\nclass StencilMode {\n test: StencilTest;\n ref: number;\n mask: number;\n fail: StencilOpConstant;\n depthFail: StencilOpConstant;\n pass: StencilOpConstant;\n\n constructor(test: StencilTest, ref: number, mask: number, fail: StencilOpConstant,\n depthFail: StencilOpConstant, pass: StencilOpConstant) {\n this.test = test;\n this.ref = ref;\n this.mask = mask;\n this.fail = fail;\n this.depthFail = depthFail;\n this.pass = pass;\n }\n\n static disabled: $ReadOnly;\n}\n\nStencilMode.disabled = new StencilMode({func: ALWAYS, mask: 0}, 0, 0, KEEP, KEEP, KEEP);\n\nexport default StencilMode;\n","// @flow\nimport Color from '../style-spec/util/color.js';\n\nimport type {BlendFuncType, ColorMaskType} from './types.js';\n\nconst ZERO = 0x0000;\nconst ONE = 0x0001;\nconst ONE_MINUS_SRC_ALPHA = 0x0303;\n\nclass ColorMode {\n blendFunction: BlendFuncType;\n blendColor: Color;\n mask: ColorMaskType;\n\n constructor(blendFunction: BlendFuncType, blendColor: Color, mask: ColorMaskType) {\n this.blendFunction = blendFunction;\n this.blendColor = blendColor;\n this.mask = mask;\n }\n\n static Replace: BlendFuncType;\n\n static disabled: $ReadOnly;\n static unblended: $ReadOnly;\n static alphaBlended: $ReadOnly;\n}\n\nColorMode.Replace = [ONE, ZERO];\n\nColorMode.disabled = new ColorMode(ColorMode.Replace, Color.transparent, [false, false, false, false]);\nColorMode.unblended = new ColorMode(ColorMode.Replace, Color.transparent, [true, true, true, true]);\nColorMode.alphaBlended = new ColorMode([ONE, ONE_MINUS_SRC_ALPHA], Color.transparent, [true, true, true, true]);\n\nexport default ColorMode;\n","// @flow\n\nimport type {CullFaceModeType, FrontFaceType} from './types.js';\n\nconst BACK = 0x0405;\nconst FRONT = 0x0404;\nconst CCW = 0x0901;\nconst CW = 0x0900;\n\nclass CullFaceMode {\n enable: boolean;\n mode: CullFaceModeType;\n frontFace: FrontFaceType;\n\n constructor(enable: boolean, mode: CullFaceModeType, frontFace: FrontFaceType) {\n this.enable = enable;\n this.mode = mode;\n this.frontFace = frontFace;\n }\n\n static disabled: $ReadOnly;\n static backCCW: $ReadOnly;\n static backCW: $ReadOnly;\n static frontCW: $ReadOnly;\n static frontCCW: $ReadOnly;\n}\n\nCullFaceMode.disabled = new CullFaceMode(false, BACK, CCW);\nCullFaceMode.backCCW = new CullFaceMode(true, BACK, CCW);\nCullFaceMode.backCW = new CullFaceMode(true, BACK, CW);\nCullFaceMode.frontCW = new CullFaceMode(true, FRONT, CW);\nCullFaceMode.frontCCW = new CullFaceMode(true, FRONT, CCW);\n\nexport default CullFaceMode;\n","// @flow\n\nimport Tile from './tile.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport TileCache from './tile_cache.js';\nimport {asyncAll, keysDifference, values, clamp} from '../util/util.js';\nimport Context from '../gl/context.js';\nimport Point from '@mapbox/point-geometry';\nimport browser from '../util/browser.js';\nimport {OverscaledTileID, CanonicalTileID} from './tile_id.js';\nimport assert from 'assert';\nimport SourceFeatureState from './source_state.js';\nimport {mercatorXfromLng} from '../geo/mercator_coordinate.js';\n\nimport type {Source} from './source.js';\nimport type {SourceSpecification} from '../style-spec/types.js';\nimport type {default as MapboxMap} from '../ui/map.js';\nimport type Style from '../style/style.js';\nimport type Transform from '../geo/transform.js';\nimport type {TileState} from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {FeatureStates} from './source_state.js';\nimport type {QueryGeometry, TilespaceQueryGeometry} from '../style/query_geometry.js';\n\n/**\n * `SourceCache` is responsible for\n *\n * - creating an instance of `Source`\n * - forwarding events from `Source`\n * - caching tiles loaded from an instance of `Source`\n * - loading the tiles needed to render a given viewport\n * - unloading the cached tiles not needed to render a given viewport\n *\n * @private\n */\nclass SourceCache extends Evented {\n id: string;\n map: MapboxMap;\n style: Style;\n\n _source: Source;\n _sourceLoaded: boolean;\n _sourceErrored: boolean;\n _tiles: {[_: string | number]: Tile};\n _prevLng: number | void;\n _cache: TileCache;\n _timers: {[_: any]: TimeoutID};\n _cacheTimers: {[_: any]: TimeoutID};\n _minTileCacheSize: ?number;\n _maxTileCacheSize: ?number;\n _paused: boolean;\n _isRaster: boolean;\n _shouldReloadOnResume: boolean;\n _coveredTiles: {[_: number | string]: boolean};\n transform: Transform;\n used: boolean;\n usedForTerrain: boolean;\n _state: SourceFeatureState;\n _loadedParentTiles: {[_: number | string]: ?Tile};\n _onlySymbols: ?boolean;\n\n static maxUnderzooming: number;\n static maxOverzooming: number;\n\n constructor(id: string, source: Source, onlySymbols?: boolean) {\n super();\n this.id = id;\n this._onlySymbols = onlySymbols;\n\n source.on('data', (e) => {\n // this._sourceLoaded signifies that the TileJSON is loaded if applicable.\n // if the source type does not come with a TileJSON, the flag signifies the\n // source data has loaded (in other words, GeoJSON has been tiled on the worker and is ready)\n if (e.dataType === 'source' && e.sourceDataType === 'metadata') this._sourceLoaded = true;\n\n // for sources with mutable data, this event fires when the underlying data\n // to a source is changed (for example, using [GeoJSONSource#setData](https://docs.mapbox.com/mapbox-gl-js/api/sources/#geojsonsource#setdata) or [ImageSource#setCoordinates](https://docs.mapbox.com/mapbox-gl-js/api/sources/#imagesource#setcoordinates))\n if (this._sourceLoaded && !this._paused && e.dataType === \"source\" && e.sourceDataType === 'content') {\n this.reload();\n if (this.transform) {\n this.update(this.transform);\n }\n }\n });\n\n source.on('error', () => {\n this._sourceErrored = true;\n });\n\n this._source = source;\n this._tiles = {};\n // $FlowFixMe[method-unbinding]\n this._cache = new TileCache(0, this._unloadTile.bind(this));\n this._timers = {};\n this._cacheTimers = {};\n this._minTileCacheSize = source.minTileCacheSize;\n this._maxTileCacheSize = source.maxTileCacheSize;\n this._loadedParentTiles = {};\n\n this._coveredTiles = {};\n this._state = new SourceFeatureState();\n this._isRaster =\n this._source.type === 'raster' ||\n this._source.type === 'raster-dem' ||\n // $FlowFixMe[prop-missing]\n (this._source.type === 'custom' && this._source._dataType === 'raster');\n }\n\n onAdd(map: MapboxMap) {\n this.map = map;\n this._minTileCacheSize = this._minTileCacheSize === undefined && map ? map._minTileCacheSize : this._minTileCacheSize;\n this._maxTileCacheSize = this._maxTileCacheSize === undefined && map ? map._maxTileCacheSize : this._maxTileCacheSize;\n }\n\n /**\n * Return true if no tile data is pending, tiles will not change unless\n * an additional API call is received.\n * @private\n */\n loaded(): boolean {\n if (this._sourceErrored) { return true; }\n if (!this._sourceLoaded) { return false; }\n if (!this._source.loaded()) { return false; }\n for (const t in this._tiles) {\n const tile = this._tiles[t];\n if (tile.state !== 'loaded' && tile.state !== 'errored')\n return false;\n }\n return true;\n }\n\n getSource(): Source {\n return this._source;\n }\n\n pause() {\n this._paused = true;\n }\n\n resume() {\n if (!this._paused) return;\n const shouldReload = this._shouldReloadOnResume;\n this._paused = false;\n this._shouldReloadOnResume = false;\n if (shouldReload) this.reload();\n if (this.transform) this.update(this.transform);\n }\n\n _loadTile(tile: Tile, callback: Callback): void {\n tile.isSymbolTile = this._onlySymbols;\n return this._source.loadTile(tile, callback);\n }\n\n _unloadTile(tile: Tile): void {\n if (this._source.unloadTile)\n return this._source.unloadTile(tile, () => {});\n }\n\n _abortTile(tile: Tile): void {\n if (this._source.abortTile)\n return this._source.abortTile(tile, () => {});\n }\n\n serialize(): SourceSpecification {\n return this._source.serialize();\n }\n\n prepare(context: Context) {\n if (this._source.prepare) {\n this._source.prepare();\n }\n\n this._state.coalesceChanges(this._tiles, this.map ? this.map.painter : null);\n\n for (const i in this._tiles) {\n const tile = this._tiles[i];\n tile.upload(context);\n tile.prepare(this.map.style.imageManager);\n }\n }\n\n /**\n * Return all tile ids ordered with z-order, and cast to numbers\n * @private\n */\n getIds(): Array {\n return values((this._tiles: any)).map((tile: Tile) => tile.tileID).sort(compareTileId).map(id => id.key);\n }\n\n getRenderableIds(symbolLayer?: boolean): Array {\n const renderables: Array = [];\n for (const id in this._tiles) {\n if (this._isIdRenderable(+id, symbolLayer)) renderables.push(this._tiles[id]);\n }\n if (symbolLayer) {\n return renderables.sort((a_: Tile, b_: Tile) => {\n const a = a_.tileID;\n const b = b_.tileID;\n const rotatedA = (new Point(a.canonical.x, a.canonical.y))._rotate(this.transform.angle);\n const rotatedB = (new Point(b.canonical.x, b.canonical.y))._rotate(this.transform.angle);\n return a.overscaledZ - b.overscaledZ || rotatedB.y - rotatedA.y || rotatedB.x - rotatedA.x;\n }).map(tile => tile.tileID.key);\n }\n return renderables.map(tile => tile.tileID).sort(compareTileId).map(id => id.key);\n }\n\n hasRenderableParent(tileID: OverscaledTileID): boolean {\n const parentTile = this.findLoadedParent(tileID, 0);\n if (parentTile) {\n return this._isIdRenderable(parentTile.tileID.key);\n }\n return false;\n }\n\n _isIdRenderable(id: number, symbolLayer?: boolean): boolean {\n return this._tiles[id] && this._tiles[id].hasData() &&\n !this._coveredTiles[id] && (symbolLayer || !this._tiles[id].holdingForFade());\n }\n\n reload() {\n if (this._paused) {\n this._shouldReloadOnResume = true;\n return;\n }\n\n this._cache.reset();\n\n for (const i in this._tiles) {\n if (this._tiles[i].state !== \"errored\") this._reloadTile(+i, 'reloading');\n }\n }\n\n _reloadTile(id: number, state: TileState) {\n const tile = this._tiles[id];\n\n // this potentially does not address all underlying\n // issues https://github.com/mapbox/mapbox-gl-js/issues/4252\n // - hard to tell without repro steps\n if (!tile) return;\n\n // The difference between \"loading\" tiles and \"reloading\" or \"expired\"\n // tiles is that \"reloading\"/\"expired\" tiles are \"renderable\".\n // Therefore, a \"loading\" tile cannot become a \"reloading\" tile without\n // first becoming a \"loaded\" tile.\n if (tile.state !== 'loading') {\n tile.state = state;\n }\n\n // $FlowFixMe[method-unbinding]\n this._loadTile(tile, this._tileLoaded.bind(this, tile, id, state));\n }\n\n _tileLoaded(tile: Tile, id: number, previousState: TileState, err: ?Error) {\n if (err) {\n tile.state = 'errored';\n if ((err: any).status !== 404) this._source.fire(new ErrorEvent(err, {tile}));\n else {\n // continue to try loading parent/children tiles if a tile doesn't exist (404)\n const updateForTerrain = this._source.type === 'raster-dem' && this.usedForTerrain;\n if (updateForTerrain && this.map.painter.terrain) {\n const terrain = this.map.painter.terrain;\n this.update(this.transform, terrain.getScaledDemTileSize(), true);\n terrain.resetTileLookupCache(this.id);\n } else {\n this.update(this.transform);\n }\n }\n return;\n }\n\n tile.timeAdded = browser.now();\n if (previousState === 'expired') tile.refreshedUponExpiration = true;\n this._setTileReloadTimer(id, tile);\n if (this._source.type === 'raster-dem' && tile.dem) this._backfillDEM(tile);\n this._state.initializeTileState(tile, this.map ? this.map.painter : null);\n\n this._source.fire(new Event('data', {dataType: 'source', tile, coord: tile.tileID, 'sourceCacheId': this.id}));\n }\n\n /**\n * For raster terrain source, backfill DEM to eliminate visible tile boundaries\n * @private\n */\n _backfillDEM(tile: Tile) {\n const renderables = this.getRenderableIds();\n for (let i = 0; i < renderables.length; i++) {\n const borderId = renderables[i];\n if (tile.neighboringTiles && tile.neighboringTiles[borderId]) {\n const borderTile = this.getTileByID(borderId);\n fillBorder(tile, borderTile);\n fillBorder(borderTile, tile);\n }\n }\n\n function fillBorder(tile: Tile, borderTile: Tile) {\n if (!tile.dem || tile.dem.borderReady) return;\n tile.needsHillshadePrepare = true;\n tile.needsDEMTextureUpload = true;\n let dx = borderTile.tileID.canonical.x - tile.tileID.canonical.x;\n const dy = borderTile.tileID.canonical.y - tile.tileID.canonical.y;\n const dim = Math.pow(2, tile.tileID.canonical.z);\n const borderId = borderTile.tileID.key;\n if (dx === 0 && dy === 0) return;\n\n if (Math.abs(dy) > 1) {\n return;\n }\n if (Math.abs(dx) > 1) {\n // Adjust the delta coordinate for world wraparound.\n if (Math.abs(dx + dim) === 1) {\n dx += dim;\n } else if (Math.abs(dx - dim) === 1) {\n dx -= dim;\n }\n }\n if (!borderTile.dem || !tile.dem) return;\n tile.dem.backfillBorder(borderTile.dem, dx, dy);\n if (tile.neighboringTiles && tile.neighboringTiles[borderId])\n tile.neighboringTiles[borderId].backfilled = true;\n }\n }\n /**\n * Get a specific tile by TileID\n * @private\n */\n getTile(tileID: OverscaledTileID): Tile {\n return this.getTileByID(tileID.key);\n }\n\n /**\n * Get a specific tile by id\n * @private\n */\n getTileByID(id: number): Tile {\n return this._tiles[id];\n }\n\n /**\n * For a given set of tiles, retain children that are loaded and have a zoom\n * between `zoom` (exclusive) and `maxCoveringZoom` (inclusive)\n * @private\n */\n _retainLoadedChildren(\n idealTiles: {[number | string]: OverscaledTileID},\n zoom: number,\n maxCoveringZoom: number,\n retain: {[number | string]: OverscaledTileID}\n ) {\n for (const id in this._tiles) {\n let tile = this._tiles[id];\n\n // only consider renderable tiles up to maxCoveringZoom\n if (retain[id] ||\n !tile.hasData() ||\n tile.tileID.overscaledZ <= zoom ||\n tile.tileID.overscaledZ > maxCoveringZoom\n ) continue;\n\n // loop through parents and retain the topmost loaded one if found\n let topmostLoadedID = tile.tileID;\n while (tile && tile.tileID.overscaledZ > zoom + 1) {\n const parentID = tile.tileID.scaledTo(tile.tileID.overscaledZ - 1);\n\n tile = this._tiles[parentID.key];\n\n if (tile && tile.hasData()) {\n topmostLoadedID = parentID;\n }\n }\n\n // loop through ancestors of the topmost loaded child to see if there's one that needed it\n let tileID = topmostLoadedID;\n while (tileID.overscaledZ > zoom) {\n tileID = tileID.scaledTo(tileID.overscaledZ - 1);\n\n if (idealTiles[tileID.key]) {\n // found a parent that needed a loaded child; retain that child\n retain[topmostLoadedID.key] = topmostLoadedID;\n break;\n }\n }\n }\n }\n\n /**\n * Find a loaded parent of the given tile (up to minCoveringZoom)\n * @private\n */\n findLoadedParent(tileID: OverscaledTileID, minCoveringZoom: number): ?Tile {\n if (tileID.key in this._loadedParentTiles) {\n const parent = this._loadedParentTiles[tileID.key];\n if (parent && parent.tileID.overscaledZ >= minCoveringZoom) {\n return parent;\n } else {\n return null;\n }\n }\n for (let z = tileID.overscaledZ - 1; z >= minCoveringZoom; z--) {\n const parentTileID = tileID.scaledTo(z);\n const tile = this._getLoadedTile(parentTileID);\n if (tile) {\n return tile;\n }\n }\n }\n\n _getLoadedTile(tileID: OverscaledTileID): ?Tile {\n const tile = this._tiles[tileID.key];\n if (tile && tile.hasData()) {\n return tile;\n }\n // TileCache ignores wrap in lookup.\n const cachedTile = this._cache.getByKey(this._source.reparseOverscaled ? tileID.wrapped().key : tileID.canonical.key);\n return cachedTile;\n }\n\n /**\n * Resizes the tile cache based on the current viewport's size\n * or the minTileCacheSize and maxTileCacheSize options passed during map creation\n *\n * Larger viewports use more tiles and need larger caches. Larger viewports\n * are more likely to be found on devices with more memory and on pages where\n * the map is more important.\n * @private\n */\n updateCacheSize(transform: Transform, tileSize?: number) {\n tileSize = tileSize || this._source.tileSize;\n const widthInTiles = Math.ceil(transform.width / tileSize) + 1;\n const heightInTiles = Math.ceil(transform.height / tileSize) + 1;\n const approxTilesInView = widthInTiles * heightInTiles;\n const commonZoomRange = 5;\n\n const viewDependentMaxSize = Math.floor(approxTilesInView * commonZoomRange);\n const minSize = typeof this._minTileCacheSize === 'number' ? Math.max(this._minTileCacheSize, viewDependentMaxSize) : viewDependentMaxSize;\n const maxSize = typeof this._maxTileCacheSize === 'number' ? Math.min(this._maxTileCacheSize, minSize) : minSize;\n\n this._cache.setMaxSize(maxSize);\n }\n\n handleWrapJump(lng: number) {\n // On top of the regular z/x/y values, TileIDs have a `wrap` value that specify\n // which copy of the world the tile belongs to. For example, at `lng: 10` you\n // might render z/x/y/0 while at `lng: 370` you would render z/x/y/1.\n //\n // When lng values get wrapped (going from `lng: 370` to `long: 10`) you expect\n // to see the same thing on the screen (370 degrees and 10 degrees is the same\n // place in the world) but all the TileIDs will have different wrap values.\n //\n // In order to make this transition seamless, we calculate the rounded difference of\n // \"worlds\" between the last frame and the current frame. If the map panned by\n // a world, then we can assign all the tiles new TileIDs with updated wrap values.\n // For example, assign z/x/y/1 a new id: z/x/y/0. It is the same tile, just rendered\n // in a different position.\n //\n // This enables us to reuse the tiles at more ideal locations and prevent flickering.\n const prevLng = this._prevLng === undefined ? lng : this._prevLng;\n const lngDifference = lng - prevLng;\n const worldDifference = lngDifference / 360;\n const wrapDelta = Math.round(worldDifference);\n this._prevLng = lng;\n\n if (wrapDelta) {\n const tiles: {[_: string | number]: Tile} = {};\n for (const key in this._tiles) {\n const tile = this._tiles[key];\n tile.tileID = tile.tileID.unwrapTo(tile.tileID.wrap + wrapDelta);\n tiles[tile.tileID.key] = tile;\n }\n this._tiles = tiles;\n\n // Reset tile reload timers\n for (const id in this._timers) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n }\n for (const id in this._tiles) {\n const tile = this._tiles[id];\n this._setTileReloadTimer(+id, tile);\n }\n }\n }\n\n /**\n * Removes tiles that are outside the viewport and adds new tiles that\n * are inside the viewport.\n * @private\n * @param {boolean} updateForTerrain Signals to update tiles even if the\n * source is not used (this.used) by layers: it is used for terrain.\n * @param {tileSize} tileSize If needed to get lower resolution ideal cover,\n * override source.tileSize used in tile cover calculation.\n */\n update(transform: Transform, tileSize?: number, updateForTerrain?: boolean) {\n this.transform = transform;\n if (!this._sourceLoaded || this._paused || this.transform.freezeTileCoverage) { return; }\n assert(!(updateForTerrain && !this.usedForTerrain));\n if (this.usedForTerrain && !updateForTerrain) {\n // If source is used for both terrain and hillshade, don't update it twice.\n return;\n }\n\n this.updateCacheSize(transform, tileSize);\n if (this.transform.projection.name !== 'globe') {\n this.handleWrapJump(this.transform.center.lng);\n }\n\n // Covered is a list of retained tiles who's areas are fully covered by other,\n // better, retained tiles. They are not drawn separately.\n this._coveredTiles = {};\n\n let idealTileIDs;\n if (!this.used && !this.usedForTerrain) {\n idealTileIDs = [];\n } else if (this._source.tileID) {\n idealTileIDs = transform.getVisibleUnwrappedCoordinates(this._source.tileID)\n .map((unwrapped) => new OverscaledTileID(unwrapped.canonical.z, unwrapped.wrap, unwrapped.canonical.z, unwrapped.canonical.x, unwrapped.canonical.y));\n } else {\n idealTileIDs = transform.coveringTiles({\n tileSize: tileSize || this._source.tileSize,\n minzoom: this._source.minzoom,\n maxzoom: this._source.maxzoom,\n roundZoom: this._source.roundZoom && !updateForTerrain,\n reparseOverscaled: this._source.reparseOverscaled,\n isTerrainDEM: this.usedForTerrain\n });\n\n if (this._source.hasTile) {\n idealTileIDs = idealTileIDs.filter((coord) => (this._source.hasTile: any)(coord));\n }\n }\n\n // Retain is a list of tiles that we shouldn't delete, even if they are not\n // the most ideal tile for the current viewport. This may include tiles like\n // parent or child tiles that are *already* loaded.\n const retain = this._updateRetainedTiles(idealTileIDs);\n\n if (isRasterType(this._source.type) && idealTileIDs.length !== 0) {\n const parentsForFading: {[_: string | number]: OverscaledTileID} = {};\n const fadingTiles = {};\n const ids = Object.keys(retain);\n for (const id of ids) {\n const tileID = retain[id];\n assert(tileID.key === +id);\n\n const tile = this._tiles[id];\n if (!tile || (tile.fadeEndTime && tile.fadeEndTime <= browser.now())) continue;\n\n // if the tile is loaded but still fading in, find parents to cross-fade with it\n const parentTile = this.findLoadedParent(tileID, Math.max(tileID.overscaledZ - SourceCache.maxOverzooming, this._source.minzoom));\n if (parentTile) {\n this._addTile(parentTile.tileID);\n parentsForFading[parentTile.tileID.key] = parentTile.tileID;\n }\n\n fadingTiles[id] = tileID;\n }\n\n // for children tiles with parent tiles still fading in,\n // retain the children so the parent can fade on top\n const minZoom = idealTileIDs[idealTileIDs.length - 1].overscaledZ;\n for (const id in this._tiles) {\n const childTile = this._tiles[id];\n if (retain[id] || !childTile.hasData()) {\n continue;\n }\n\n let parentID = childTile.tileID;\n while (parentID.overscaledZ > minZoom) {\n parentID = parentID.scaledTo(parentID.overscaledZ - 1);\n const tile = this._tiles[parentID.key];\n if (tile && tile.hasData() && fadingTiles[parentID.key]) {\n retain[id] = childTile.tileID;\n break;\n }\n }\n }\n\n for (const id in parentsForFading) {\n if (!retain[id]) {\n // If a tile is only needed for fading, mark it as covered so that it isn't rendered on it's own.\n this._coveredTiles[id] = true;\n retain[id] = parentsForFading[id];\n }\n }\n }\n\n for (const retainedId in retain) {\n // Make sure retained tiles always clear any existing fade holds\n // so that if they're removed again their fade timer starts fresh.\n this._tiles[retainedId].clearFadeHold();\n }\n\n // Remove the tiles we don't need anymore.\n const remove = keysDifference((this._tiles: any), (retain: any));\n for (const tileID of remove) {\n const tile = this._tiles[tileID];\n if (tile.hasSymbolBuckets && !tile.holdingForFade()) {\n tile.setHoldDuration(this.map._fadeDuration);\n } else if (!tile.hasSymbolBuckets || tile.symbolFadeFinished()) {\n this._removeTile(+tileID);\n }\n }\n\n // Construct a cache of loaded parents\n this._updateLoadedParentTileCache();\n\n if (this._onlySymbols && this._source.afterUpdate) {\n this._source.afterUpdate();\n }\n }\n\n releaseSymbolFadeTiles() {\n for (const id in this._tiles) {\n if (this._tiles[id].holdingForFade()) {\n this._removeTile(+id);\n }\n }\n }\n\n _updateRetainedTiles(idealTileIDs: Array): {[_: number | string]: OverscaledTileID} {\n const retain: {[_: number | string]: OverscaledTileID} = {};\n if (idealTileIDs.length === 0) { return retain; }\n\n const checked: {[_: number | string]: boolean } = {};\n const minZoom = idealTileIDs.reduce((min, id) => Math.min(min, id.overscaledZ), Infinity);\n const maxZoom = idealTileIDs[0].overscaledZ;\n assert(minZoom <= maxZoom);\n const minCoveringZoom = Math.max(maxZoom - SourceCache.maxOverzooming, this._source.minzoom);\n const maxCoveringZoom = Math.max(maxZoom + SourceCache.maxUnderzooming, this._source.minzoom);\n\n const missingTiles = {};\n for (const tileID of idealTileIDs) {\n const tile = this._addTile(tileID);\n\n // retain the tile even if it's not loaded because it's an ideal tile.\n retain[tileID.key] = tileID;\n\n if (tile.hasData()) continue;\n\n if (minZoom < this._source.maxzoom) {\n // save missing tiles that potentially have loaded children\n missingTiles[tileID.key] = tileID;\n }\n }\n\n // retain any loaded children of ideal tiles up to maxCoveringZoom\n this._retainLoadedChildren(missingTiles, minZoom, maxCoveringZoom, retain);\n\n for (const tileID of idealTileIDs) {\n let tile = this._tiles[tileID.key];\n\n if (tile.hasData()) continue;\n\n // The tile we require is not yet loaded or does not exist;\n // Attempt to find children that fully cover it.\n\n if (tileID.canonical.z >= this._source.maxzoom) {\n // We're looking for an overzoomed child tile.\n const childCoord = tileID.children(this._source.maxzoom)[0];\n const childTile = this.getTile(childCoord);\n if (!!childTile && childTile.hasData()) {\n retain[childCoord.key] = childCoord;\n continue; // tile is covered by overzoomed child\n }\n } else {\n // Check if all 4 immediate children are loaded (in other words, the missing ideal tile is covered)\n const children = tileID.children(this._source.maxzoom);\n\n if (retain[children[0].key] &&\n retain[children[1].key] &&\n retain[children[2].key] &&\n retain[children[3].key]) continue; // tile is covered by children\n }\n\n // We couldn't find child tiles that entirely cover the ideal tile; look for parents now.\n\n // As we ascend up the tile pyramid of the ideal tile, we check whether the parent\n // tile has been previously requested (and errored because we only loop over tiles with no data)\n // in order to determine if we need to request its parent.\n let parentWasRequested = tile.wasRequested();\n\n for (let overscaledZ = tileID.overscaledZ - 1; overscaledZ >= minCoveringZoom; --overscaledZ) {\n const parentId = tileID.scaledTo(overscaledZ);\n\n // Break parent tile ascent if this route has been previously checked by another child.\n if (checked[parentId.key]) break;\n checked[parentId.key] = true;\n\n tile = this.getTile(parentId);\n if (!tile && parentWasRequested) {\n tile = this._addTile(parentId);\n }\n if (tile) {\n retain[parentId.key] = parentId;\n // Save the current values, since they're the parent of the next iteration\n // of the parent tile ascent loop.\n parentWasRequested = tile.wasRequested();\n if (tile.hasData()) break;\n }\n }\n }\n\n return retain;\n }\n\n _updateLoadedParentTileCache() {\n this._loadedParentTiles = {};\n\n for (const tileKey in this._tiles) {\n const path = [];\n let parentTile: ?Tile;\n let currentId = this._tiles[tileKey].tileID;\n\n // Find the closest loaded ancestor by traversing the tile tree towards the root and\n // caching results along the way\n while (currentId.overscaledZ > 0) {\n\n // Do we have a cached result from previous traversals?\n if (currentId.key in this._loadedParentTiles) {\n parentTile = this._loadedParentTiles[currentId.key];\n break;\n }\n\n path.push(currentId.key);\n\n // Is the parent loaded?\n const parentId = currentId.scaledTo(currentId.overscaledZ - 1);\n parentTile = this._getLoadedTile(parentId);\n if (parentTile) {\n break;\n }\n\n currentId = parentId;\n }\n\n // Cache the result of this traversal to all newly visited tiles\n for (const key of path) {\n this._loadedParentTiles[key] = parentTile;\n }\n }\n }\n\n /**\n * Add a tile, given its coordinate, to the pyramid.\n * @private\n */\n _addTile(tileID: OverscaledTileID): Tile {\n let tile: ?Tile = this._tiles[tileID.key];\n if (tile) return tile;\n\n tile = this._cache.getAndRemove(tileID);\n if (tile) {\n this._setTileReloadTimer(tileID.key, tile);\n // set the tileID because the cached tile could have had a different wrap value\n tile.tileID = tileID;\n this._state.initializeTileState(tile, this.map ? this.map.painter : null);\n if (this._cacheTimers[tileID.key]) {\n clearTimeout(this._cacheTimers[tileID.key]);\n delete this._cacheTimers[tileID.key];\n this._setTileReloadTimer(tileID.key, tile);\n }\n }\n\n const cached = Boolean(tile);\n if (!cached) {\n const painter = this.map ? this.map.painter : null;\n tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor(), this.transform.tileZoom, painter, this._isRaster);\n // $FlowFixMe[method-unbinding]\n this._loadTile(tile, this._tileLoaded.bind(this, tile, tileID.key, tile.state));\n }\n\n // Impossible, but silence flow.\n if (!tile) return (null: any);\n\n tile.uses++;\n this._tiles[tileID.key] = tile;\n if (!cached) this._source.fire(new Event('dataloading', {tile, coord: tile.tileID, dataType: 'source'}));\n\n return tile;\n }\n\n _setTileReloadTimer(id: number, tile: Tile) {\n if (id in this._timers) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n }\n\n const expiryTimeout = tile.getExpiryTimeout();\n if (expiryTimeout) {\n this._timers[id] = setTimeout(() => {\n this._reloadTile(id, 'expired');\n delete this._timers[id];\n }, expiryTimeout);\n }\n }\n\n /**\n * Remove a tile, given its id, from the pyramid\n * @private\n */\n _removeTile(id: number) {\n const tile = this._tiles[id];\n if (!tile)\n return;\n\n tile.uses--;\n delete this._tiles[id];\n if (this._timers[id]) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n }\n\n if (tile.uses > 0)\n return;\n\n if (tile.hasData() && tile.state !== 'reloading') {\n this._cache.add(tile.tileID, tile, tile.getExpiryTimeout());\n } else {\n tile.aborted = true;\n this._abortTile(tile);\n this._unloadTile(tile);\n }\n }\n\n /**\n * Remove all tiles from this pyramid.\n * @private\n */\n clearTiles() {\n this._shouldReloadOnResume = false;\n this._paused = false;\n\n for (const id in this._tiles)\n this._removeTile(+id);\n\n if (this._source._clear) this._source._clear();\n\n this._cache.reset();\n\n if (this.map && this.usedForTerrain && this.map.painter.terrain) {\n this.map.painter.terrain.resetTileLookupCache(this.id);\n }\n }\n\n /**\n * Search through our current tiles and attempt to find the tiles that cover the given `queryGeometry`.\n *\n * @param {QueryGeometry} queryGeometry\n * @param {boolean} [visualizeQueryGeometry=false]\n * @param {boolean} use3DQuery\n * @returns\n * @private\n */\n tilesIn(queryGeometry: QueryGeometry, use3DQuery: boolean, visualizeQueryGeometry: boolean): TilespaceQueryGeometry[] {\n const tileResults = [];\n\n const transform = this.transform;\n if (!transform) return tileResults;\n\n const isGlobe = transform.projection.name === 'globe';\n const centerX = mercatorXfromLng(transform.center.lng);\n\n for (const tileID in this._tiles) {\n const tile = this._tiles[tileID];\n if (visualizeQueryGeometry) {\n tile.clearQueryDebugViz();\n }\n if (tile.holdingForFade()) {\n // Tiles held for fading are covered by tiles that are closer to ideal\n continue;\n }\n\n // An array of wrap values for the tile [-1, 0, 1]. The default value is 0 but -1 or 1 wrapping\n // might be required in globe view due to globe's surface being continuous.\n let tilesToCheck;\n\n if (isGlobe) {\n // Compare distances to copies of the tile to see if a wrapped one should be used.\n const id = tile.tileID.canonical;\n assert(tile.tileID.wrap === 0);\n\n if (id.z === 0) {\n // Render the zoom level 0 tile twice as the query polygon might span over the antimeridian\n const distances = [\n Math.abs(clamp(centerX, ...tileBoundsX(id, -1)) - centerX),\n Math.abs(clamp(centerX, ...tileBoundsX(id, 1)) - centerX)\n ];\n\n tilesToCheck = [0, distances.indexOf(Math.min(...distances)) * 2 - 1];\n } else {\n const distances = [\n Math.abs(clamp(centerX, ...tileBoundsX(id, -1)) - centerX),\n Math.abs(clamp(centerX, ...tileBoundsX(id, 0)) - centerX),\n Math.abs(clamp(centerX, ...tileBoundsX(id, 1)) - centerX)\n ];\n\n tilesToCheck = [distances.indexOf(Math.min(...distances)) - 1];\n }\n } else {\n tilesToCheck = [0];\n }\n\n for (const wrap of tilesToCheck) {\n const tileResult = queryGeometry.containsTile(tile, transform, use3DQuery, wrap);\n if (tileResult) {\n tileResults.push(tileResult);\n }\n }\n }\n return tileResults;\n }\n\n getVisibleCoordinates(symbolLayer?: boolean): Array {\n const coords = this.getRenderableIds(symbolLayer).map((id) => this._tiles[id].tileID);\n for (const coord of coords) {\n coord.projMatrix = this.transform.calculateProjMatrix(coord.toUnwrapped());\n }\n return coords;\n }\n\n hasTransition(): boolean {\n if (this._source.hasTransition()) {\n return true;\n }\n\n if (isRasterType(this._source.type)) {\n for (const id in this._tiles) {\n const tile = this._tiles[id];\n if (tile.fadeEndTime !== undefined && tile.fadeEndTime >= browser.now()) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Set the value of a particular state for a feature\n * @private\n */\n setFeatureState(sourceLayer?: string, featureId: number | string, state: Object) {\n sourceLayer = sourceLayer || '_geojsonTileLayer';\n this._state.updateState(sourceLayer, featureId, state);\n }\n\n /**\n * Resets the value of a particular state key for a feature\n * @private\n */\n removeFeatureState(sourceLayer?: string, featureId?: number | string, key?: string) {\n sourceLayer = sourceLayer || '_geojsonTileLayer';\n this._state.removeFeatureState(sourceLayer, featureId, key);\n }\n\n /**\n * Get the entire state object for a feature\n * @private\n */\n getFeatureState(sourceLayer?: string, featureId: number | string): FeatureStates {\n sourceLayer = sourceLayer || '_geojsonTileLayer';\n return this._state.getState(sourceLayer, featureId);\n }\n\n /**\n * Sets the set of keys that the tile depends on. This allows tiles to\n * be reloaded when their dependencies change.\n * @private\n */\n setDependencies(tileKey: number, namespace: string, dependencies: Array) {\n const tile = this._tiles[tileKey];\n if (tile) {\n tile.setDependencies(namespace, dependencies);\n }\n }\n\n /**\n * Reloads all tiles that depend on the given keys.\n * @private\n */\n reloadTilesForDependencies(namespaces: Array, keys: Array) {\n for (const id in this._tiles) {\n const tile = this._tiles[id];\n if (tile.hasDependency(namespaces, keys)) {\n this._reloadTile(+id, 'reloading');\n }\n }\n this._cache.filter(tile => !tile.hasDependency(namespaces, keys));\n }\n\n /**\n * Preloads all tiles that will be requested for one or a series of transformations\n *\n * @private\n * @returns {Object} Returns `this` | Promise.\n */\n _preloadTiles(transform: Transform | Array, callback: Callback) {\n if (!this._sourceLoaded) {\n const waitUntilSourceLoaded = () => {\n if (!this._sourceLoaded) return;\n this._source.off('data', waitUntilSourceLoaded);\n this._preloadTiles(transform, callback);\n };\n\n this._source.on('data', waitUntilSourceLoaded);\n return;\n }\n\n const coveringTilesIDs: Map = new Map();\n const transforms = Array.isArray(transform) ? transform : [transform];\n\n const terrain = this.map.painter.terrain;\n const tileSize = this.usedForTerrain && terrain ? terrain.getScaledDemTileSize() : this._source.tileSize;\n\n for (const tr of transforms) {\n const tileIDs = tr.coveringTiles({\n tileSize,\n minzoom: this._source.minzoom,\n maxzoom: this._source.maxzoom,\n roundZoom: this._source.roundZoom && !this.usedForTerrain,\n reparseOverscaled: this._source.reparseOverscaled,\n isTerrainDEM: this.usedForTerrain\n });\n\n for (const tileID of tileIDs) {\n coveringTilesIDs.set(tileID.key, tileID);\n }\n\n if (this.usedForTerrain) {\n tr.updateElevation(false);\n }\n }\n\n const tileIDs = Array.from(coveringTilesIDs.values());\n\n asyncAll(tileIDs, (tileID, done) => {\n const tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor(), this.transform.tileZoom, this.map.painter, this._isRaster);\n this._loadTile(tile, (err) => {\n if (this._source.type === 'raster-dem' && tile.dem) this._backfillDEM(tile);\n done(err, tile);\n });\n }, callback);\n }\n}\n\nSourceCache.maxOverzooming = 10;\nSourceCache.maxUnderzooming = 3;\n\nfunction compareTileId(a: OverscaledTileID, b: OverscaledTileID): number {\n // Different copies of the world are sorted based on their distance to the center.\n // Wrap values are converted to unsigned distances by reserving odd number for copies\n // with negative wrap and even numbers for copies with positive wrap.\n const aWrap = Math.abs(a.wrap * 2) - +(a.wrap < 0);\n const bWrap = Math.abs(b.wrap * 2) - +(b.wrap < 0);\n return a.overscaledZ - b.overscaledZ || bWrap - aWrap || b.canonical.y - a.canonical.y || b.canonical.x - a.canonical.x;\n}\n\nfunction isRasterType(type: string): boolean {\n return type === 'raster' || type === 'image' || type === 'video' || type === 'custom';\n}\n\nfunction tileBoundsX(id: CanonicalTileID, wrap: number): [number, number] {\n const tiles = 1 << id.z;\n return [id.x / tiles + wrap, (id.x + 1) / tiles + wrap];\n}\n\nexport default SourceCache;\n","// @flow\n\nimport MercatorCoordinate, {mercatorZfromAltitude} from '../geo/mercator_coordinate.js';\nimport DEMData from '../data/dem_data.js';\nimport SourceCache from '../source/source_cache.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport EXTENT from '../data/extent.js';\nimport {vec3} from 'gl-matrix';\nimport Point from '@mapbox/point-geometry';\nimport {OverscaledTileID} from '../source/tile_id.js';\n\nimport type Projection from '../geo/projection/projection.js';\nimport type Tile from '../source/tile.js';\nimport type {Vec3} from 'gl-matrix';\n\n/**\n * Options common to {@link Map#queryTerrainElevation} and {@link Map#unproject3d}, used to control how elevation\n * data is returned.\n *\n * @typedef {Object} ElevationQueryOptions\n * @property {boolean} exaggerated When set to `true` returns the value of the elevation with the terrains `exaggeration` on the style already applied,\n * when`false` it returns the raw value of the underlying data without styling applied.\n */\nexport type ElevationQueryOptions = {\n exaggerated: boolean\n};\n\n/**\n * Provides access to elevation data from raster-dem source cache.\n */\nexport class Elevation {\n\n /**\n * Helper that checks whether DEM data is available at a given mercator coordinate.\n * @param {MercatorCoordinate} point Mercator coordinate of the point to check against.\n * @returns {boolean} `true` indicating whether the data is available at `point`, and `false` otherwise.\n */\n isDataAvailableAtPoint(point: MercatorCoordinate): boolean {\n const sourceCache = this._source();\n if (this.isUsingMockSource() || !sourceCache || point.y < 0.0 || point.y > 1.0) {\n return false;\n }\n\n const cache: SourceCache = sourceCache;\n const z = cache.getSource().maxzoom;\n const tiles = 1 << z;\n const wrap = Math.floor(point.x);\n const px = point.x - wrap;\n const x = Math.floor(px * tiles);\n const y = Math.floor(point.y * tiles);\n const demTile = this.findDEMTileFor(new OverscaledTileID(z, wrap, z, x, y));\n\n return !!(demTile && demTile.dem);\n }\n\n /**\n * Helper around `getAtPoint` that guarantees that a numeric value is returned.\n * @param {MercatorCoordinate} point Mercator coordinate of the point.\n * @param {number} defaultIfNotLoaded Value that is returned if the dem tile of the provided point is not loaded.\n * @returns {number} Altitude in meters.\n */\n getAtPointOrZero(point: MercatorCoordinate, defaultIfNotLoaded: number = 0): number {\n return this.getAtPoint(point, defaultIfNotLoaded) || 0;\n }\n\n /**\n * Altitude above sea level in meters at specified point.\n * @param {MercatorCoordinate} point Mercator coordinate of the point.\n * @param {number} defaultIfNotLoaded Value that is returned if the DEM tile of the provided point is not loaded.\n * @param {boolean} exaggerated `true` if styling exaggeration should be applied to the resulting elevation.\n * @returns {number} Altitude in meters.\n * If there is no loaded tile that carries information for the requested\n * point elevation, returns `defaultIfNotLoaded`.\n * Doesn't invoke network request to fetch the data.\n */\n getAtPoint(point: MercatorCoordinate, defaultIfNotLoaded: ?number, exaggerated: boolean = true): ?number {\n if (this.isUsingMockSource()) {\n return null;\n }\n\n // Force a cast to null for both null and undefined\n if (defaultIfNotLoaded == null) defaultIfNotLoaded = null;\n\n const src = this._source();\n if (!src) return defaultIfNotLoaded;\n if (point.y < 0.0 || point.y > 1.0) {\n return defaultIfNotLoaded;\n }\n const cache: SourceCache = src;\n const z = cache.getSource().maxzoom;\n const tiles = 1 << z;\n const wrap = Math.floor(point.x);\n const px = point.x - wrap;\n const tileID = new OverscaledTileID(z, wrap, z, Math.floor(px * tiles), Math.floor(point.y * tiles));\n const demTile = this.findDEMTileFor(tileID);\n if (!(demTile && demTile.dem)) { return defaultIfNotLoaded; }\n const dem: DEMData = demTile.dem;\n const tilesAtTileZoom = 1 << demTile.tileID.canonical.z;\n const x = (px * tilesAtTileZoom - demTile.tileID.canonical.x) * dem.dim;\n const y = (point.y * tilesAtTileZoom - demTile.tileID.canonical.y) * dem.dim;\n const i = Math.floor(x);\n const j = Math.floor(y);\n const exaggeration = exaggerated ? this.exaggeration() : 1;\n\n return exaggeration * interpolate(\n interpolate(dem.get(i, j), dem.get(i, j + 1), y - j),\n interpolate(dem.get(i + 1, j), dem.get(i + 1, j + 1), y - j),\n x - i);\n }\n\n /*\n * x and y are offset within tile, in 0 .. EXTENT coordinate space.\n */\n getAtTileOffset(tileID: OverscaledTileID, x: number, y: number): number {\n const tilesAtTileZoom = 1 << tileID.canonical.z;\n return this.getAtPointOrZero(new MercatorCoordinate(\n tileID.wrap + (tileID.canonical.x + x / EXTENT) / tilesAtTileZoom,\n (tileID.canonical.y + y / EXTENT) / tilesAtTileZoom));\n }\n\n getAtTileOffsetFunc(tileID: OverscaledTileID, lat: number, worldSize: number, projection: Projection): Function {\n return (p => {\n const elevation = this.getAtTileOffset(tileID, p.x, p.y);\n const upVector = projection.upVector(tileID.canonical, p.x, p.y);\n const upVectorScale = projection.upVectorScale(tileID.canonical, lat, worldSize).metersToTile;\n // $FlowFixMe can't yet resolve tuple vs array incompatibilities\n vec3.scale(upVector, upVector, elevation * upVectorScale);\n return upVector;\n });\n }\n\n /*\n * Batch fetch for multiple tile points: points holds input and return value:\n * vec3's items on index 0 and 1 define x and y offset within tile, in [0 .. EXTENT]\n * range, respectively. vec3 item at index 2 is output value, in meters.\n * If a DEM tile that covers tileID is loaded, true is returned, otherwise false.\n * Nearest filter sampling on dem data is done (no interpolation).\n */\n getForTilePoints(tileID: OverscaledTileID, points: Array, interpolated: ?boolean, useDemTile: ?Tile): boolean {\n if (this.isUsingMockSource()) {\n return false;\n }\n\n const helper = DEMSampler.create(this, tileID, useDemTile);\n if (!helper) { return false; }\n\n points.forEach(p => {\n p[2] = this.exaggeration() * helper.getElevationAt(p[0], p[1], interpolated);\n });\n return true;\n }\n\n /**\n * Get elevation minimum and maximum for tile identified by `tileID`.\n * @param {OverscaledTileID} tileID The `tileId` is a sub tile (or covers the same space) of the DEM tile we read the information from.\n * @returns {?{min: number, max: number}} The min and max elevation.\n */\n getMinMaxForTile(tileID: OverscaledTileID): ?{min: number, max: number} {\n if (this.isUsingMockSource()) {\n return null;\n }\n\n const demTile = this.findDEMTileFor(tileID);\n\n if (!(demTile && demTile.dem)) {\n return null;\n }\n\n const dem: DEMData = demTile.dem;\n const tree = dem.tree;\n const demTileID = demTile.tileID;\n const scale = 1 << tileID.canonical.z - demTileID.canonical.z;\n let xOffset = tileID.canonical.x / scale - demTileID.canonical.x;\n let yOffset = tileID.canonical.y / scale - demTileID.canonical.y;\n let index = 0; // Start from DEM tree root.\n for (let i = 0; i < tileID.canonical.z - demTileID.canonical.z; i++) {\n if (tree.leaves[index]) break;\n xOffset *= 2;\n yOffset *= 2;\n const childOffset = 2 * Math.floor(yOffset) + Math.floor(xOffset);\n index = tree.childOffsets[index] + childOffset;\n xOffset = xOffset % 1;\n yOffset = yOffset % 1;\n }\n return {min: this.exaggeration() * tree.minimums[index], max: this.exaggeration() * tree.maximums[index]};\n }\n\n /**\n * Get elevation minimum below MSL for the visible tiles. This function accounts\n * for terrain exaggeration and is conservative based on the maximum DEM error,\n * do not expect accurate values from this function.\n * If no negative elevation is visible, this function returns 0.\n * @returns {number} The min elevation below sea level of all visible tiles.\n */\n getMinElevationBelowMSL(): number {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Performs raycast against visible DEM tiles on the screen and returns the distance travelled along the ray.\n * `x` & `y` components of the position are expected to be in normalized mercator coordinates [0, 1] and z in meters.\n * @param {vec3} position The ray origin.\n * @param {vec3} dir The ray direction.\n * @param {number} exaggeration The terrain exaggeration.\n */\n raycast(position: Vec3, dir: Vec3, exaggeration: number): ?number {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Given a point on screen, returns 3D MercatorCoordinate on terrain.\n * Helper function that wraps `raycast`.\n *\n * @param {Point} screenPoint Screen point in pixels in top-left origin coordinate system.\n * @returns {vec3} If there is intersection with terrain, returns 3D MercatorCoordinate's of\n * intersection, as vec3(x, y, z), otherwise null.\n */ /* eslint no-unused-vars: [\"error\", { \"args\": \"none\" }] */\n pointCoordinate(screenPoint: Point): ?Vec3 {\n throw new Error('Pure virtual method called.');\n }\n\n /*\n * Implementation provides SourceCache of raster-dem source type cache, in\n * order to access already loaded cached tiles.\n */\n _source(): ?SourceCache {\n throw new Error('Pure virtual method called.');\n }\n\n /*\n * Whether the SourceCache instance is a mock source cache.\n * This mock source cache is used solely for the Globe projection and with terrain disabled,\n * where we only want to leverage the draping rendering pipeline without incurring DEM-tile\n * download overhead. This function is useful to skip DEM processing as the mock data source\n * placeholder contains only 0 height.\n */\n isUsingMockSource(): boolean {\n throw new Error('Pure virtual method called.');\n }\n\n /*\n * A multiplier defined by style as terrain exaggeration. Elevation provided\n * by getXXXX methods is multiplied by this.\n */\n exaggeration(): number {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Lookup DEM tile that corresponds to (covers) tileID.\n * @private\n */\n findDEMTileFor(_: OverscaledTileID): ?Tile {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Get list of DEM tiles used to render current frame.\n * @private\n */\n get visibleDemTiles(): Array {\n throw new Error('Getter must be implemented in subclass.');\n }\n}\n\n/**\n * Helper class computes and caches data required to lookup elevation offsets at the tile level.\n */\nexport class DEMSampler {\n _demTile: Tile;\n _dem: DEMData;\n _scale: number;\n _offset: [number, number];\n\n constructor(demTile: Tile, scale: number, offset: [number, number]) {\n this._demTile = demTile;\n // demTile.dem will always exist because the factory method `create` does the check\n // Make flow happy with a cast through any\n this._dem = (((this._demTile.dem): any): DEMData);\n this._scale = scale;\n this._offset = offset;\n }\n\n static create(elevation: Elevation, tileID: OverscaledTileID, useDemTile: ?Tile): ?DEMSampler {\n const demTile = useDemTile || elevation.findDEMTileFor(tileID);\n if (!(demTile && demTile.dem)) { return; }\n const dem: DEMData = demTile.dem;\n const demTileID = demTile.tileID;\n const scale = 1 << tileID.canonical.z - demTileID.canonical.z;\n const xOffset = (tileID.canonical.x / scale - demTileID.canonical.x) * dem.dim;\n const yOffset = (tileID.canonical.y / scale - demTileID.canonical.y) * dem.dim;\n const k = demTile.tileSize / EXTENT / scale;\n\n return new DEMSampler(demTile, k, [xOffset, yOffset]);\n }\n\n tileCoordToPixel(x: number, y: number): Point {\n const px = x * this._scale + this._offset[0];\n const py = y * this._scale + this._offset[1];\n const i = Math.floor(px);\n const j = Math.floor(py);\n return new Point(i, j);\n }\n\n getElevationAt(x: number, y: number, interpolated: ?boolean, clampToEdge: ?boolean): number {\n const px = x * this._scale + this._offset[0];\n const py = y * this._scale + this._offset[1];\n const i = Math.floor(px);\n const j = Math.floor(py);\n const dem = this._dem;\n\n clampToEdge = !!clampToEdge;\n\n return interpolated ? interpolate(\n interpolate(dem.get(i, j, clampToEdge), dem.get(i, j + 1, clampToEdge), py - j),\n interpolate(dem.get(i + 1, j, clampToEdge), dem.get(i + 1, j + 1, clampToEdge), py - j),\n px - i) :\n dem.get(i, j, clampToEdge);\n }\n\n getElevationAtPixel(x: number, y: number, clampToEdge: ?boolean): number {\n return this._dem.get(x, y, !!clampToEdge);\n }\n\n getMeterToDEM(lat: number): number {\n return (1 << this._demTile.tileID.canonical.z) * mercatorZfromAltitude(1, lat) * this._dem.stride;\n }\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport loadGeometry from './load_geometry.js';\nimport toEvaluationFeature from './evaluation_feature.js';\nimport EXTENT from './extent.js';\nimport featureFilter from '../style-spec/feature_filter/index.js';\nimport Grid from 'grid-index';\nimport DictionaryCoder from '../util/dictionary_coder.js';\nimport {VectorTile} from '@mapbox/vector-tile';\nimport Protobuf from 'pbf';\nimport GeoJSONFeature from '../util/vectortile_to_geojson.js';\nimport {arraysIntersect, mapObject, extend} from '../util/util.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport SourceFeatureState from '../source/source_state.js';\nimport {polygonIntersectsBox} from '../util/intersection_tests.js';\nimport {PossiblyEvaluated} from '../style/properties.js';\nimport {FeatureIndexArray} from './array_types.js';\nimport {DEMSampler} from '../terrain/elevation.js';\n\nimport type StyleLayer from '../style/style_layer.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {FeatureStates} from \"../source/source_state\";\nimport type {FeatureFilter} from '../style-spec/feature_filter/index.js';\nimport type Transform from '../geo/transform.js';\nimport type {FilterSpecification, PromoteIdSpecification} from '../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../style/query_geometry.js';\nimport type {FeatureIndex as FeatureIndexStruct} from './array_types.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\nimport type {IVectorTileLayer, IVectorTileFeature} from '@mapbox/vector-tile';\n\ntype QueryParameters = {\n pixelPosMatrix: Float32Array,\n transform: Transform,\n tileResult: TilespaceQueryGeometry,\n tileTransform: TileTransform,\n params: {\n filter: FilterSpecification,\n layers: Array,\n availableImages: Array\n }\n}\n\nexport type QueryResult = {[_: string]: Array<{ featureIndex: number, feature: QueryFeature }>};\n\ntype FeatureIndices = {\n bucketIndex: number,\n sourceLayerIndex: number,\n featureIndex: number,\n layoutVertexArrayOffset: number\n} | FeatureIndexStruct;\n\nclass FeatureIndex {\n tileID: OverscaledTileID;\n x: number;\n y: number;\n z: number;\n grid: Grid;\n featureIndexArray: FeatureIndexArray;\n promoteId: ?PromoteIdSpecification;\n\n rawTileData: ArrayBuffer;\n bucketLayerIDs: Array>;\n\n vtLayers: {[_: string]: IVectorTileLayer};\n vtFeatures: {[_: string]: IVectorTileFeature[]};\n sourceLayerCoder: DictionaryCoder;\n\n constructor(tileID: OverscaledTileID, promoteId?: ?PromoteIdSpecification) {\n this.tileID = tileID;\n this.x = tileID.canonical.x;\n this.y = tileID.canonical.y;\n this.z = tileID.canonical.z;\n this.grid = new Grid(EXTENT, 16, 0);\n this.featureIndexArray = new FeatureIndexArray();\n this.promoteId = promoteId;\n }\n\n insert(feature: IVectorTileFeature, geometry: Array>, featureIndex: number, sourceLayerIndex: number, bucketIndex: number, layoutVertexArrayOffset: number = 0) {\n const key = this.featureIndexArray.length;\n this.featureIndexArray.emplaceBack(featureIndex, sourceLayerIndex, bucketIndex, layoutVertexArrayOffset);\n\n const grid = this.grid;\n\n for (let r = 0; r < geometry.length; r++) {\n const ring = geometry[r];\n\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = 0; i < ring.length; i++) {\n const p = ring[i];\n bbox[0] = Math.min(bbox[0], p.x);\n bbox[1] = Math.min(bbox[1], p.y);\n bbox[2] = Math.max(bbox[2], p.x);\n bbox[3] = Math.max(bbox[3], p.y);\n }\n\n if (bbox[0] < EXTENT &&\n bbox[1] < EXTENT &&\n bbox[2] >= 0 &&\n bbox[3] >= 0) {\n grid.insert(key, bbox[0], bbox[1], bbox[2], bbox[3]);\n }\n }\n }\n\n loadVTLayers(): {[_: string]: IVectorTileLayer} {\n if (!this.vtLayers) {\n this.vtLayers = new VectorTile(new Protobuf(this.rawTileData)).layers;\n this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']);\n this.vtFeatures = {};\n for (const layer in this.vtLayers) {\n this.vtFeatures[layer] = [];\n }\n }\n return this.vtLayers;\n }\n\n // Finds non-symbol features in this tile at a particular position.\n query(args: QueryParameters, styleLayers: {[_: string]: StyleLayer}, serializedLayers: {[_: string]: Object}, sourceFeatureState: SourceFeatureState): QueryResult {\n this.loadVTLayers();\n const params = args.params || {},\n filter = featureFilter(params.filter);\n const tilespaceGeometry = args.tileResult;\n const transform = args.transform;\n\n const bounds = tilespaceGeometry.bufferedTilespaceBounds;\n const queryPredicate = (bx1: number, by1: number, bx2: number, by2: number) => {\n return polygonIntersectsBox(tilespaceGeometry.bufferedTilespaceGeometry, bx1, by1, bx2, by2);\n };\n const matching = this.grid.query(bounds.min.x, bounds.min.y, bounds.max.x, bounds.max.y, queryPredicate);\n matching.sort(topDownFeatureComparator);\n\n let elevationHelper = null;\n if (transform.elevation && matching.length > 0) {\n elevationHelper = DEMSampler.create(transform.elevation, this.tileID);\n }\n\n const result = {};\n let previousIndex;\n for (let k = 0; k < matching.length; k++) {\n const index = matching[k];\n\n // don't check the same feature more than once\n if (index === previousIndex) continue;\n previousIndex = index;\n\n const match = this.featureIndexArray.get(index);\n let featureGeometry = null;\n this.loadMatchingFeature(\n result,\n match,\n filter,\n params.layers,\n params.availableImages,\n styleLayers,\n serializedLayers,\n sourceFeatureState,\n (feature: IVectorTileFeature, styleLayer: StyleLayer, featureState: Object, layoutVertexArrayOffset: number = 0) => {\n if (!featureGeometry) {\n featureGeometry = loadGeometry(feature, this.tileID.canonical, args.tileTransform);\n }\n\n return styleLayer.queryIntersectsFeature(tilespaceGeometry, feature, featureState, featureGeometry, this.z, args.transform, args.pixelPosMatrix, elevationHelper, layoutVertexArrayOffset);\n }\n );\n }\n\n return result;\n }\n\n loadMatchingFeature(\n result: QueryResult,\n featureIndexData: FeatureIndices,\n filter: FeatureFilter,\n filterLayerIDs: Array,\n availableImages: Array,\n styleLayers: {[_: string]: StyleLayer},\n serializedLayers: {[_: string]: Object},\n sourceFeatureState?: SourceFeatureState,\n intersectionTest?: (feature: IVectorTileFeature, styleLayer: StyleLayer, featureState: Object, layoutVertexArrayOffset: number) => boolean | number) {\n\n const {featureIndex, bucketIndex, sourceLayerIndex, layoutVertexArrayOffset} = featureIndexData;\n const layerIDs = this.bucketLayerIDs[bucketIndex];\n if (filterLayerIDs && !arraysIntersect(filterLayerIDs, layerIDs))\n return;\n\n const sourceLayerName = this.sourceLayerCoder.decode(sourceLayerIndex);\n const sourceLayer = this.vtLayers[sourceLayerName];\n const feature = sourceLayer.feature(featureIndex);\n\n if (filter.needGeometry) {\n const evaluationFeature = toEvaluationFeature(feature, true);\n // $FlowFixMe[method-unbinding]\n if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), evaluationFeature, this.tileID.canonical)) {\n return;\n }\n // $FlowFixMe[method-unbinding]\n } else if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature)) {\n return;\n }\n\n const id = this.getId(feature, sourceLayerName);\n\n for (let l = 0; l < layerIDs.length; l++) {\n const layerID = layerIDs[l];\n\n if (filterLayerIDs && filterLayerIDs.indexOf(layerID) < 0) {\n continue;\n }\n\n const styleLayer = styleLayers[layerID];\n\n if (!styleLayer) continue;\n\n let featureState = {};\n if (id !== undefined && sourceFeatureState) {\n // `feature-state` expression evaluation requires feature state to be available\n featureState = sourceFeatureState.getState(styleLayer.sourceLayer || '_geojsonTileLayer', id);\n }\n\n const serializedLayer = extend({}, serializedLayers[layerID]);\n\n serializedLayer.paint = evaluateProperties(serializedLayer.paint, styleLayer.paint, feature, featureState, availableImages);\n serializedLayer.layout = evaluateProperties(serializedLayer.layout, styleLayer.layout, feature, featureState, availableImages);\n\n const intersectionZ = !intersectionTest || intersectionTest(feature, styleLayer, featureState, layoutVertexArrayOffset);\n if (!intersectionZ) {\n // Only applied for non-symbol features\n continue;\n }\n\n const geojsonFeature = new GeoJSONFeature(feature, this.z, this.x, this.y, id);\n geojsonFeature.layer = serializedLayer;\n let layerResult = result[layerID];\n if (layerResult === undefined) {\n layerResult = result[layerID] = [];\n }\n\n layerResult.push({featureIndex, feature: geojsonFeature, intersectionZ});\n }\n }\n\n // Given a set of symbol indexes that have already been looked up,\n // return a matching set of GeoJSONFeatures\n lookupSymbolFeatures(symbolFeatureIndexes: Array,\n serializedLayers: {[string]: StyleLayer},\n bucketIndex: number,\n sourceLayerIndex: number,\n filterSpec: FilterSpecification,\n filterLayerIDs: Array,\n availableImages: Array,\n styleLayers: {[_: string]: StyleLayer}): QueryResult {\n const result = {};\n this.loadVTLayers();\n\n const filter = featureFilter(filterSpec);\n\n for (const symbolFeatureIndex of symbolFeatureIndexes) {\n this.loadMatchingFeature(\n result, {\n bucketIndex,\n sourceLayerIndex,\n featureIndex: symbolFeatureIndex,\n layoutVertexArrayOffset: 0\n },\n filter,\n filterLayerIDs,\n availableImages,\n styleLayers,\n serializedLayers\n );\n\n }\n return result;\n }\n\n loadFeature(featureIndexData: FeatureIndices): IVectorTileFeature {\n const {featureIndex, sourceLayerIndex} = featureIndexData;\n\n this.loadVTLayers();\n const sourceLayerName = this.sourceLayerCoder.decode(sourceLayerIndex);\n\n const featureCache = this.vtFeatures[sourceLayerName];\n if (featureCache[featureIndex]) {\n return featureCache[featureIndex];\n }\n const sourceLayer = this.vtLayers[sourceLayerName];\n const feature = sourceLayer.feature(featureIndex);\n featureCache[featureIndex] = feature;\n\n return feature;\n }\n\n hasLayer(id: string): boolean {\n for (const layerIDs of this.bucketLayerIDs) {\n for (const layerID of layerIDs) {\n if (id === layerID) return true;\n }\n }\n\n return false;\n }\n\n getId(feature: IVectorTileFeature, sourceLayerId: string): string | number | void {\n let id = feature.id;\n if (this.promoteId) {\n const propName = typeof this.promoteId === 'string' ? this.promoteId : this.promoteId[sourceLayerId];\n // $FlowFixMe[incompatible-type] - Flow can't narrow the id type from IVectorTileFeature.id\n if (propName != null) id = feature.properties[propName];\n if (typeof id === 'boolean') id = Number(id);\n }\n return id;\n }\n}\n\nregister(FeatureIndex, 'FeatureIndex', {omit: ['rawTileData', 'sourceLayerCoder']});\n\nexport default FeatureIndex;\n\nfunction evaluateProperties(serializedProperties: mixed, styleLayerProperties: mixed, feature: IVectorTileFeature, featureState: FeatureStates, availableImages: Array) {\n return mapObject(serializedProperties, (property, key) => {\n const prop = styleLayerProperties instanceof PossiblyEvaluated ? styleLayerProperties.get(key) : null;\n return prop && prop.evaluate ? prop.evaluate(feature, featureState, availableImages) : prop;\n });\n}\n\nfunction topDownFeatureComparator(a: number, b: number) {\n return b - a;\n}\n","// @flow\n\nimport {warnOnce, nextPowerOfTwo} from '../util/util.js';\nimport {AlphaImage} from '../util/image.js';\nimport {register} from '../util/web_worker_transfer.js';\n\nimport type {SpritePosition, SpritePositions} from '../util/image.js';\n\ntype DashRange = {|\n isDash: boolean,\n left: number,\n right: number,\n zeroLength: boolean\n|};\n\n/**\n * A LineAtlas lets us reuse rendered dashed lines\n * by writing many of them to a texture and then fetching their positions\n * using .getDash.\n *\n * @param {number} width\n * @param {number} height\n * @private\n */\nclass LineAtlas {\n width: number;\n height: number;\n nextRow: number;\n image: AlphaImage;\n positions: SpritePositions;\n uploaded: boolean;\n\n constructor(width: number, height: number) {\n this.width = width;\n this.height = height;\n this.nextRow = 0;\n this.image = new AlphaImage({width, height});\n this.positions = {};\n this.uploaded = false;\n }\n\n /**\n * Get a dash line pattern.\n *\n * @param {Array} dasharray\n * @param {string} lineCap the type of line caps to be added to dashes\n * @returns {Object} position of dash texture in { y, height, width }\n * @private\n */\n getDash(dasharray: Array, lineCap: string): SpritePosition {\n const key = this.getKey(dasharray, lineCap);\n return this.positions[key];\n }\n\n trim() {\n const width = this.width;\n const height = this.height = nextPowerOfTwo(this.nextRow);\n this.image.resize({width, height});\n }\n\n getKey(dasharray: Array, lineCap: string): string {\n return dasharray.join(',') + lineCap;\n }\n\n getDashRanges(dasharray: Array, lineAtlasWidth: number, stretch: number): Array {\n // If dasharray has an odd length, both the first and last parts\n // are dashes and should be joined seamlessly.\n const oddDashArray = dasharray.length % 2 === 1;\n\n const ranges = [];\n\n let left = oddDashArray ? -dasharray[dasharray.length - 1] * stretch : 0;\n let right = dasharray[0] * stretch;\n let isDash = true;\n\n ranges.push({left, right, isDash, zeroLength: dasharray[0] === 0});\n\n let currentDashLength = dasharray[0];\n for (let i = 1; i < dasharray.length; i++) {\n isDash = !isDash;\n\n const dashLength = dasharray[i];\n left = currentDashLength * stretch;\n currentDashLength += dashLength;\n right = currentDashLength * stretch;\n\n ranges.push({left, right, isDash, zeroLength: dashLength === 0});\n }\n\n return ranges;\n }\n\n addRoundDash(ranges: Array, stretch: number, n: number) {\n const halfStretch = stretch / 2;\n\n for (let y = -n; y <= n; y++) {\n const row = this.nextRow + n + y;\n const index = this.width * row;\n let currIndex = 0;\n let range = ranges[currIndex];\n\n for (let x = 0; x < this.width; x++) {\n if (x / range.right > 1) { range = ranges[++currIndex]; }\n\n const distLeft = Math.abs(x - range.left);\n const distRight = Math.abs(x - range.right);\n const minDist = Math.min(distLeft, distRight);\n let signedDistance;\n\n const distMiddle = y / n * (halfStretch + 1);\n if (range.isDash) {\n const distEdge = halfStretch - Math.abs(distMiddle);\n signedDistance = Math.sqrt(minDist * minDist + distEdge * distEdge);\n } else {\n signedDistance = halfStretch - Math.sqrt(minDist * minDist + distMiddle * distMiddle);\n }\n\n this.image.data[index + x] = Math.max(0, Math.min(255, signedDistance + 128));\n }\n }\n }\n\n addRegularDash(ranges: Array, capLength: number) {\n\n // Collapse any zero-length range\n // Collapse neighbouring same-type parts into a single part\n for (let i = ranges.length - 1; i >= 0; --i) {\n const part = ranges[i];\n const next = ranges[i + 1];\n if (part.zeroLength) {\n ranges.splice(i, 1);\n } else if (next && next.isDash === part.isDash) {\n next.left = part.left;\n ranges.splice(i, 1);\n }\n }\n\n // Combine the first and last parts if possible\n const first = ranges[0];\n const last = ranges[ranges.length - 1];\n if (first.isDash === last.isDash) {\n first.left = last.left - this.width;\n last.right = first.right + this.width;\n }\n\n const index = this.width * this.nextRow;\n let currIndex = 0;\n let range = ranges[currIndex];\n\n for (let x = 0; x < this.width; x++) {\n if (x / range.right > 1) {\n range = ranges[++currIndex];\n }\n\n const distLeft = Math.abs(x - range.left);\n const distRight = Math.abs(x - range.right);\n\n const minDist = Math.min(distLeft, distRight);\n const signedDistance = (range.isDash ? minDist : -minDist) + capLength;\n\n this.image.data[index + x] = Math.max(0, Math.min(255, signedDistance + 128));\n }\n }\n\n addDash(dasharray: Array, lineCap: string): null | SpritePosition {\n const key = this.getKey(dasharray, lineCap);\n if (this.positions[key]) return this.positions[key];\n\n const round = lineCap === 'round';\n const n = round ? 7 : 0;\n const height = 2 * n + 1;\n\n if (this.nextRow + height > this.height) {\n warnOnce('LineAtlas out of space');\n return null;\n }\n\n // dasharray is empty, draws a full line (no dash or no gap length represented, default behavior)\n if (dasharray.length === 0) {\n // insert a single dash range in order to draw a full line\n dasharray.push(1);\n }\n\n let length = 0;\n for (let i = 0; i < dasharray.length; i++) {\n if (dasharray[i] < 0) {\n warnOnce('Negative value is found in line dasharray, replacing values with 0');\n dasharray[i] = 0;\n }\n length += dasharray[i];\n }\n\n if (length !== 0) {\n const stretch = this.width / length;\n const ranges = this.getDashRanges(dasharray, this.width, stretch);\n\n if (round) {\n this.addRoundDash(ranges, stretch, n);\n } else {\n const capLength = lineCap === 'square' ? 0.5 * stretch : 0;\n this.addRegularDash(ranges, capLength);\n }\n }\n\n const y = this.nextRow + n;\n\n this.nextRow += height;\n\n const pos = {\n tl: [y, n],\n br: [length, 0]\n };\n this.positions[key] = pos;\n return pos;\n }\n}\n\nregister(LineAtlas, 'LineAtlas');\n\nexport default LineAtlas;\n","// @flow\n\nimport {SDF_SCALE} from '../render/glyph_manager.js';\nimport {AlphaImage} from '../util/image.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport potpack from 'potpack';\n\nimport type {StyleGlyph} from '../style/style_glyph.js';\n\nconst glyphPadding = 1;\n/*\n The glyph padding is just to prevent sampling errors at the boundaries between\n glyphs in the atlas texture, and for that purpose there's no need to make it\n bigger with high-res SDFs. However, layout is done based on the glyph size\n including this padding, so scaling this padding is the easiest way to keep\n layout exactly the same as the SDF_SCALE changes.\n*/\nconst localGlyphPadding = glyphPadding * SDF_SCALE;\n\nexport type GlyphRect = {\n x: number,\n y: number,\n w: number,\n h: number\n};\n// {glyphID: glyphRect}\nexport type GlyphPositionMap = { [_: number]: GlyphRect };\n\n// {fontStack: glyphPoistionMap}\nexport type GlyphPositions = { [_: string]: GlyphPositionMap };\n\nexport default class GlyphAtlas {\n image: AlphaImage;\n positions: GlyphPositions;\n constructor(stacks: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph }, ascender?: number, descender?: number }}) {\n const positions = {};\n const bins = [];\n\n for (const stack in stacks) {\n const glyphData = stacks[stack];\n const glyphPositionMap = positions[stack] = {};\n\n for (const id in glyphData.glyphs) {\n const src = glyphData.glyphs[+id];\n if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) continue;\n\n const padding = src.metrics.localGlyph ? localGlyphPadding : glyphPadding;\n const bin = {\n x: 0,\n y: 0,\n w: src.bitmap.width + 2 * padding,\n h: src.bitmap.height + 2 * padding\n };\n bins.push(bin);\n glyphPositionMap[id] = bin;\n }\n }\n\n const {w, h} = potpack(bins);\n const image = new AlphaImage({width: w || 1, height: h || 1});\n\n for (const stack in stacks) {\n const glyphData = stacks[stack];\n\n for (const id in glyphData.glyphs) {\n const src = glyphData.glyphs[+id];\n if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) continue;\n const bin = positions[stack][id];\n const padding = src.metrics.localGlyph ? localGlyphPadding : glyphPadding;\n AlphaImage.copy(src.bitmap, image, {x: 0, y: 0}, {x: bin.x + padding, y: bin.y + padding}, src.bitmap);\n }\n }\n\n this.image = image;\n this.positions = positions;\n }\n}\n\nregister(GlyphAtlas, 'GlyphAtlas');\n","// @flow\n\nimport FeatureIndex from '../data/feature_index.js';\n\nimport {performSymbolLayout} from '../symbol/symbol_layout.js';\nimport {CollisionBoxArray} from '../data/array_types.js';\nimport DictionaryCoder from '../util/dictionary_coder.js';\nimport SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport LineBucket from '../data/bucket/line_bucket.js';\nimport FillBucket from '../data/bucket/fill_bucket.js';\nimport FillExtrusionBucket from '../data/bucket/fill_extrusion_bucket.js';\nimport {warnOnce, mapObject, values} from '../util/util.js';\nimport assert from 'assert';\nimport LineAtlas from '../render/line_atlas.js';\nimport ImageAtlas from '../render/image_atlas.js';\nimport GlyphAtlas from '../render/glyph_atlas.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport {CanonicalTileID, OverscaledTileID} from './tile_id.js';\nimport {PerformanceUtils} from '../util/performance.js';\nimport tileTransform from '../geo/projection/tile_transform.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {Bucket} from '../data/bucket.js';\nimport type Actor from '../util/actor.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type StyleLayerIndex from '../style/style_layer_index.js';\nimport type {StyleImage} from '../style/style_image.js';\nimport type {StyleGlyph} from '../style/style_glyph.js';\nimport type {SpritePositions} from '../util/image.js';\nimport type {\n WorkerTileParameters,\n WorkerTileCallback,\n} from '../source/worker_source.js';\nimport type {PromoteIdSpecification} from '../style-spec/types.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\nimport type {IVectorTile} from '@mapbox/vector-tile';\n\nclass WorkerTile {\n tileID: OverscaledTileID;\n uid: number;\n zoom: number;\n tileZoom: number;\n canonical: CanonicalTileID;\n pixelRatio: number;\n tileSize: number;\n source: string;\n promoteId: ?PromoteIdSpecification;\n overscaling: number;\n showCollisionBoxes: boolean;\n collectResourceTiming: boolean;\n returnDependencies: boolean;\n enableTerrain: boolean;\n isSymbolTile: ?boolean;\n projection: Projection;\n tileTransform: TileTransform;\n\n status: 'parsing' | 'done';\n data: IVectorTile;\n collisionBoxArray: CollisionBoxArray;\n\n abort: ?() => void;\n reloadCallback: ?WorkerTileCallback;\n vectorTile: IVectorTile;\n\n constructor(params: WorkerTileParameters) {\n this.tileID = new OverscaledTileID(params.tileID.overscaledZ, params.tileID.wrap, params.tileID.canonical.z, params.tileID.canonical.x, params.tileID.canonical.y);\n this.tileZoom = params.tileZoom;\n this.uid = params.uid;\n this.zoom = params.zoom;\n this.canonical = params.tileID.canonical;\n this.pixelRatio = params.pixelRatio;\n this.tileSize = params.tileSize;\n this.source = params.source;\n this.overscaling = this.tileID.overscaleFactor();\n this.showCollisionBoxes = params.showCollisionBoxes;\n this.collectResourceTiming = !!params.collectResourceTiming;\n this.returnDependencies = !!params.returnDependencies;\n this.promoteId = params.promoteId;\n this.enableTerrain = !!params.enableTerrain;\n this.isSymbolTile = params.isSymbolTile;\n this.tileTransform = tileTransform(params.tileID.canonical, params.projection);\n this.projection = params.projection;\n }\n\n parse(data: IVectorTile, layerIndex: StyleLayerIndex, availableImages: Array, actor: Actor, callback: WorkerTileCallback) {\n const m = PerformanceUtils.beginMeasure('parseTile1');\n this.status = 'parsing';\n this.data = data;\n\n this.collisionBoxArray = new CollisionBoxArray();\n const sourceLayerCoder = new DictionaryCoder(Object.keys(data.layers).sort());\n\n const featureIndex = new FeatureIndex(this.tileID, this.promoteId);\n featureIndex.bucketLayerIDs = [];\n\n const buckets: {[_: string]: Bucket} = {};\n\n // we initially reserve space for a 256x256 atlas, but trim it after processing all line features\n const lineAtlas = new LineAtlas(256, 256);\n\n const options = {\n featureIndex,\n iconDependencies: {},\n patternDependencies: {},\n glyphDependencies: {},\n lineAtlas,\n availableImages\n };\n\n const layerFamilies = layerIndex.familiesBySource[this.source];\n for (const sourceLayerId in layerFamilies) {\n const sourceLayer = data.layers[sourceLayerId];\n if (!sourceLayer) {\n continue;\n }\n\n let anySymbolLayers = false;\n let anyOtherLayers = false;\n for (const family of layerFamilies[sourceLayerId]) {\n if (family[0].type === 'symbol') {\n anySymbolLayers = true;\n } else {\n anyOtherLayers = true;\n }\n }\n\n if (this.isSymbolTile === true && !anySymbolLayers) {\n continue;\n } else if (this.isSymbolTile === false && !anyOtherLayers) {\n continue;\n }\n\n if (sourceLayer.version === 1) {\n warnOnce(`Vector tile source \"${this.source}\" layer \"${sourceLayerId}\" ` +\n `does not use vector tile spec v2 and therefore may have some rendering errors.`);\n }\n\n const sourceLayerIndex = sourceLayerCoder.encode(sourceLayerId);\n const features = [];\n for (let index = 0; index < sourceLayer.length; index++) {\n const feature = sourceLayer.feature(index);\n const id = featureIndex.getId(feature, sourceLayerId);\n features.push({feature, id, index, sourceLayerIndex});\n }\n\n for (const family of layerFamilies[sourceLayerId]) {\n const layer = family[0];\n if (this.isSymbolTile !== undefined && (layer.type === 'symbol') !== this.isSymbolTile) continue;\n\n assert(layer.source === this.source);\n if (layer.minzoom && this.zoom < Math.floor(layer.minzoom)) continue;\n if (layer.maxzoom && this.zoom >= layer.maxzoom) continue;\n if (layer.visibility === 'none') continue;\n\n recalculateLayers(family, this.zoom, availableImages);\n\n const bucket = buckets[layer.id] = layer.createBucket({\n index: featureIndex.bucketLayerIDs.length,\n // $FlowFixMe[incompatible-call] - Flow can't infer proper `family` type from `layer` above\n layers: family,\n zoom: this.zoom,\n canonical: this.canonical,\n pixelRatio: this.pixelRatio,\n overscaling: this.overscaling,\n collisionBoxArray: this.collisionBoxArray,\n sourceLayerIndex,\n sourceID: this.source,\n enableTerrain: this.enableTerrain,\n projection: this.projection.spec,\n availableImages\n });\n\n assert(this.tileTransform.projection.name === this.projection.name);\n bucket.populate(features, options, this.tileID.canonical, this.tileTransform);\n featureIndex.bucketLayerIDs.push(family.map((l) => l.id));\n }\n }\n\n lineAtlas.trim();\n\n let error: ?Error;\n let glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}};\n let iconMap: {[_: string]: StyleImage};\n let patternMap: {[_: string]: StyleImage};\n const taskMetadata = {type: 'maybePrepare', isSymbolTile: this.isSymbolTile, zoom: this.zoom};\n\n const maybePrepare = () => {\n if (error) {\n return callback(error);\n } else if (glyphMap && iconMap && patternMap) {\n const m = PerformanceUtils.beginMeasure('parseTile2');\n const glyphAtlas = new GlyphAtlas(glyphMap);\n const imageAtlas = new ImageAtlas(iconMap, patternMap);\n\n for (const key in buckets) {\n const bucket = buckets[key];\n if (bucket instanceof SymbolBucket) {\n recalculateLayers(bucket.layers, this.zoom, availableImages);\n performSymbolLayout(bucket,\n glyphMap,\n glyphAtlas.positions,\n iconMap,\n imageAtlas.iconPositions,\n this.showCollisionBoxes,\n availableImages,\n this.tileID.canonical,\n this.tileZoom,\n this.projection);\n } else if (bucket.hasPattern &&\n (bucket instanceof LineBucket ||\n bucket instanceof FillBucket ||\n bucket instanceof FillExtrusionBucket)) {\n recalculateLayers(bucket.layers, this.zoom, availableImages);\n // $FlowFixMe[incompatible-type] Flow can't interpret ImagePosition as SpritePosition for some reason here\n const imagePositions: SpritePositions = imageAtlas.patternPositions;\n bucket.addFeatures(options, this.tileID.canonical, imagePositions, availableImages, this.tileTransform);\n }\n }\n\n this.status = 'done';\n callback(null, {\n buckets: values(buckets).filter(b => !b.isEmpty()),\n featureIndex,\n collisionBoxArray: this.collisionBoxArray,\n glyphAtlasImage: glyphAtlas.image,\n lineAtlas,\n imageAtlas,\n // Only used for benchmarking:\n glyphMap: this.returnDependencies ? glyphMap : null,\n iconMap: this.returnDependencies ? iconMap : null,\n glyphPositions: this.returnDependencies ? glyphAtlas.positions : null\n });\n PerformanceUtils.endMeasure(m);\n }\n };\n\n const stacks = mapObject(options.glyphDependencies, (glyphs) => Object.keys(glyphs).map(Number));\n if (Object.keys(stacks).length) {\n actor.send('getGlyphs', {uid: this.uid, stacks}, (err, result) => {\n if (!error) {\n error = err;\n glyphMap = result;\n maybePrepare();\n }\n }, undefined, false, taskMetadata);\n } else {\n glyphMap = {};\n }\n\n const icons = Object.keys(options.iconDependencies);\n if (icons.length) {\n actor.send('getImages', {icons, source: this.source, tileID: this.tileID, type: 'icons'}, (err, result) => {\n if (!error) {\n error = err;\n iconMap = result;\n maybePrepare();\n }\n }, undefined, false, taskMetadata);\n } else {\n iconMap = {};\n }\n\n const patterns = Object.keys(options.patternDependencies);\n if (patterns.length) {\n actor.send('getImages', {icons: patterns, source: this.source, tileID: this.tileID, type: 'patterns'}, (err, result) => {\n if (!error) {\n error = err;\n patternMap = result;\n maybePrepare();\n }\n }, undefined, false, taskMetadata);\n } else {\n patternMap = {};\n }\n\n PerformanceUtils.endMeasure(m);\n\n maybePrepare();\n }\n}\n\nfunction recalculateLayers(layers: $ReadOnlyArray, zoom: number, availableImages: Array) {\n // Layers are shared and may have been used by a WorkerTile with a different zoom.\n const parameters = new EvaluationParameters(zoom);\n for (const layer of layers) {\n layer.recalculate(parameters, availableImages);\n }\n}\n\nexport default WorkerTile;\n","// @flow\n\nimport {getArrayBuffer} from '../util/ajax.js';\n\nimport {VectorTile} from '@mapbox/vector-tile';\nimport Protobuf from 'pbf';\nimport WorkerTile from './worker_tile.js';\nimport {extend} from '../util/util.js';\nimport {getPerformanceMeasurement} from '../util/performance.js';\nimport {Evented} from '../util/evented.js';\nimport tileTransform from '../geo/projection/tile_transform.js';\n\nimport type {\n WorkerSource,\n WorkerTileResult,\n WorkerTileParameters,\n RequestedTileParameters,\n WorkerTileCallback,\n TileParameters\n} from '../source/worker_source.js';\n\nimport type Actor from '../util/actor.js';\nimport type StyleLayerIndex from '../style/style_layer_index.js';\nimport type {Callback} from '../types/callback.js';\nimport type Scheduler from '../util/scheduler.js';\nimport type {IVectorTile} from '@mapbox/vector-tile';\n\nexport type LoadVectorTileResult = {\n rawData: ArrayBuffer;\n vectorTile?: IVectorTile;\n expires?: any;\n cacheControl?: any;\n resourceTiming?: Array;\n};\n\n/**\n * @callback LoadVectorDataCallback\n * @param error\n * @param vectorTile\n * @private\n */\nexport type LoadVectorDataCallback = Callback;\n\nexport type AbortVectorData = () => void;\nexport type LoadVectorData = (params: RequestedTileParameters, callback: LoadVectorDataCallback) => ?AbortVectorData;\nexport class DedupedRequest {\n entries: { [string]: Object };\n scheduler: ?Scheduler;\n\n constructor(scheduler?: Scheduler) {\n this.entries = {};\n this.scheduler = scheduler;\n }\n\n request(key: string, metadata: Object, request: any, callback: LoadVectorDataCallback): (() => void) {\n const entry = this.entries[key] = this.entries[key] || {callbacks: []};\n\n if (entry.result) {\n const [err, result] = entry.result;\n if (this.scheduler) {\n this.scheduler.add(() => {\n callback(err, result);\n }, metadata);\n } else {\n callback(err, result);\n }\n return () => {};\n }\n\n entry.callbacks.push(callback);\n\n if (!entry.cancel) {\n entry.cancel = request((err, result) => {\n entry.result = [err, result];\n for (const cb of entry.callbacks) {\n if (this.scheduler) {\n this.scheduler.add(() => {\n cb(err, result);\n }, metadata);\n } else {\n cb(err, result);\n }\n }\n setTimeout(() => delete this.entries[key], 1000 * 3);\n });\n }\n\n return () => {\n if (entry.result) return;\n entry.callbacks = entry.callbacks.filter(cb => cb !== callback);\n if (!entry.callbacks.length) {\n entry.cancel();\n delete this.entries[key];\n }\n };\n }\n}\n\n/**\n * @private\n */\n// $FlowFixMe[missing-this-annot]\nexport function loadVectorTile(params: RequestedTileParameters, callback: LoadVectorDataCallback, skipParse?: boolean): (() => void) {\n const key = JSON.stringify(params.request);\n\n const makeRequest = (callback: LoadVectorDataCallback) => {\n const request = getArrayBuffer(params.request, (err: ?Error, data: ?ArrayBuffer, cacheControl: ?string, expires: ?string) => {\n if (err) {\n callback(err);\n } else if (data) {\n callback(null, {\n vectorTile: skipParse ? undefined : new VectorTile(new Protobuf(data)),\n rawData: data,\n cacheControl,\n expires\n });\n }\n });\n return () => {\n request.cancel();\n callback();\n };\n };\n\n if (params.data) {\n // if we already got the result earlier (on the main thread), return it directly\n (this.deduped: DedupedRequest).entries[key] = {result: [null, params.data]};\n }\n\n const callbackMetadata = {type: 'parseTile', isSymbolTile: params.isSymbolTile, zoom: params.tileZoom};\n return (this.deduped: DedupedRequest).request(key, callbackMetadata, makeRequest, callback);\n}\n\n/**\n * The {@link WorkerSource} implementation that supports {@link VectorTileSource}.\n * This class is designed to be easily reused to support custom source types\n * for data formats that can be parsed/converted into an in-memory VectorTile\n * representation. To do so, create it with\n * `new VectorTileWorkerSource(actor, styleLayers, customLoadVectorDataFunction)`.\n *\n * @private\n */\nclass VectorTileWorkerSource extends Evented implements WorkerSource {\n actor: Actor;\n layerIndex: StyleLayerIndex;\n availableImages: Array;\n loadVectorData: LoadVectorData;\n loading: {[_: number]: WorkerTile };\n loaded: {[_: number]: WorkerTile };\n deduped: DedupedRequest;\n isSpriteLoaded: boolean;\n scheduler: ?Scheduler;\n\n /**\n * @param [loadVectorData] Optional method for custom loading of a VectorTile\n * object based on parameters passed from the main-thread Source. See\n * {@link VectorTileWorkerSource#loadTile}. The default implementation simply\n * loads the pbf at `params.url`.\n * @private\n */\n constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array, isSpriteLoaded: boolean, loadVectorData: ?LoadVectorData) {\n super();\n this.actor = actor;\n this.layerIndex = layerIndex;\n this.availableImages = availableImages;\n this.loadVectorData = loadVectorData || loadVectorTile;\n this.loading = {};\n this.loaded = {};\n this.deduped = new DedupedRequest(actor.scheduler);\n this.isSpriteLoaded = isSpriteLoaded;\n this.scheduler = actor.scheduler;\n }\n\n /**\n * Implements {@link WorkerSource#loadTile}. Delegates to\n * {@link VectorTileWorkerSource#loadVectorData} (which by default expects\n * a `params.url` property) for fetching and producing a VectorTile object.\n * @private\n */\n loadTile(params: WorkerTileParameters, callback: WorkerTileCallback) {\n const uid = params.uid;\n\n const requestParam = params && params.request;\n const perf = requestParam && requestParam.collectResourceTiming;\n\n const workerTile = this.loading[uid] = new WorkerTile(params);\n workerTile.abort = this.loadVectorData(params, (err, response) => {\n\n const aborted = !this.loading[uid];\n\n delete this.loading[uid];\n\n if (aborted || err || !response) {\n workerTile.status = 'done';\n if (!aborted) this.loaded[uid] = workerTile;\n return callback(err);\n }\n\n const rawTileData = response.rawData;\n const cacheControl = {};\n if (response.expires) cacheControl.expires = response.expires;\n if (response.cacheControl) cacheControl.cacheControl = response.cacheControl;\n\n // response.vectorTile will be present in the GeoJSON worker case (which inherits from this class)\n // because we stub the vector tile interface around JSON data instead of parsing it directly\n workerTile.vectorTile = response.vectorTile || new VectorTile(new Protobuf(rawTileData));\n const parseTile = () => {\n workerTile.parse(workerTile.vectorTile, this.layerIndex, this.availableImages, this.actor, (err, result) => {\n if (err || !result) return callback(err);\n\n const resourceTiming = {};\n if (perf) {\n // Transferring a copy of rawTileData because the worker needs to retain its copy.\n const resourceTimingData = getPerformanceMeasurement(requestParam);\n // it's necessary to eval the result of getEntriesByName() here via parse/stringify\n // late evaluation in the main thread causes TypeError: illegal invocation\n if (resourceTimingData.length > 0) {\n resourceTiming.resourceTiming = JSON.parse(JSON.stringify(resourceTimingData));\n }\n }\n callback(null, extend({rawTileData: rawTileData.slice(0)}, result, cacheControl, resourceTiming));\n });\n };\n\n if (this.isSpriteLoaded) {\n parseTile();\n } else {\n this.once('isSpriteLoaded', () => {\n if (this.scheduler) {\n const metadata = {type: 'parseTile', isSymbolTile: params.isSymbolTile, zoom: params.tileZoom};\n this.scheduler.add(parseTile, metadata);\n } else {\n parseTile();\n }\n });\n }\n\n this.loaded = this.loaded || {};\n this.loaded[uid] = workerTile;\n });\n }\n\n /**\n * Implements {@link WorkerSource#reloadTile}.\n * @private\n */\n reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback) {\n const loaded = this.loaded,\n uid = params.uid,\n vtSource = this;\n if (loaded && loaded[uid]) {\n const workerTile = loaded[uid];\n workerTile.showCollisionBoxes = params.showCollisionBoxes;\n workerTile.enableTerrain = !!params.enableTerrain;\n workerTile.projection = params.projection;\n workerTile.tileTransform = tileTransform(params.tileID.canonical, params.projection);\n\n const done = (err: ?Error, data: ?WorkerTileResult) => {\n const reloadCallback = workerTile.reloadCallback;\n if (reloadCallback) {\n delete workerTile.reloadCallback;\n workerTile.parse(workerTile.vectorTile, vtSource.layerIndex, this.availableImages, vtSource.actor, reloadCallback);\n }\n callback(err, data);\n };\n\n if (workerTile.status === 'parsing') {\n workerTile.reloadCallback = done;\n } else if (workerTile.status === 'done') {\n // if there was no vector tile data on the initial load, don't try and re-parse tile\n if (workerTile.vectorTile) {\n workerTile.parse(workerTile.vectorTile, this.layerIndex, this.availableImages, this.actor, done);\n } else {\n done();\n }\n }\n }\n }\n\n /**\n * Implements {@link WorkerSource#abortTile}.\n *\n * @param params\n * @param params.uid The UID for this tile.\n * @private\n */\n abortTile(params: TileParameters, callback: WorkerTileCallback) {\n const uid = params.uid;\n const tile = this.loading[uid];\n if (tile) {\n if (tile.abort) tile.abort();\n delete this.loading[uid];\n }\n callback();\n }\n\n /**\n * Implements {@link WorkerSource#removeTile}.\n *\n * @param params\n * @param params.uid The UID for this tile.\n * @private\n */\n removeTile(params: TileParameters, callback: WorkerTileCallback) {\n const loaded = this.loaded,\n uid = params.uid;\n if (loaded && loaded[uid]) {\n delete loaded[uid];\n }\n callback();\n }\n}\n\nexport default VectorTileWorkerSource;\n","\nconst ARRAY_TYPES = [\n Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array\n];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nconst VERSION = 1; // serialized format version\nconst HEADER_SIZE = 8;\n\nexport default class KDBush {\n\n /**\n * Creates an index from raw `ArrayBuffer` data.\n * @param {ArrayBuffer} data\n */\n static from(data) {\n if (!(data instanceof ArrayBuffer)) {\n throw new Error('Data must be an instance of ArrayBuffer.');\n }\n const [magic, versionAndType] = new Uint8Array(data, 0, 2);\n if (magic !== 0xdb) {\n throw new Error('Data does not appear to be in a KDBush format.');\n }\n const version = versionAndType >> 4;\n if (version !== VERSION) {\n throw new Error(`Got v${version} data when expected v${VERSION}.`);\n }\n const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n if (!ArrayType) {\n throw new Error('Unrecognized array type.');\n }\n const [nodeSize] = new Uint16Array(data, 2, 1);\n const [numItems] = new Uint32Array(data, 4, 1);\n\n return new KDBush(numItems, nodeSize, ArrayType, data);\n }\n\n /**\n * Creates an index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBuffer} [data] (For internal use only)\n */\n constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {\n if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);\n\n this.numItems = +numItems;\n this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n this.ArrayType = ArrayType;\n this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n\n const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n const padCoords = (8 - idsByteSize % 8) % 8;\n\n if (arrayTypeIndex < 0) {\n throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n }\n\n if (data && (data instanceof ArrayBuffer)) { // reconstruct an index from a buffer\n this.data = data;\n this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n this._pos = numItems * 2;\n this._finished = true;\n } else { // initialize a new index\n this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n this._pos = 0;\n this._finished = false;\n\n // set header\n new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n new Uint32Array(this.data, 4, 1)[0] = numItems;\n }\n }\n\n /**\n * Add a point to the index.\n * @param {number} x\n * @param {number} y\n * @returns {number} An incremental index associated with the added item (starting from `0`).\n */\n add(x, y) {\n const index = this._pos >> 1;\n this.ids[index] = index;\n this.coords[this._pos++] = x;\n this.coords[this._pos++] = y;\n return index;\n }\n\n /**\n * Perform indexing of the added points.\n */\n finish() {\n const numAdded = this._pos >> 1;\n if (numAdded !== this.numItems) {\n throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);\n }\n // kd-sort both arrays for efficient search\n sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n\n this._finished = true;\n return this;\n }\n\n /**\n * Search the index for items within a given bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number[]} An array of indices correponding to the found items.\n */\n range(minX, minY, maxX, maxY) {\n if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n const {ids, coords, nodeSize} = this;\n const stack = [0, ids.length - 1, 0];\n const result = [];\n\n // recursively search for items in range in the kd-sorted arrays\n while (stack.length) {\n const axis = stack.pop() || 0;\n const right = stack.pop() || 0;\n const left = stack.pop() || 0;\n\n // if we reached \"tree node\", search linearly\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n }\n continue;\n }\n\n // otherwise find the middle index\n const m = (left + right) >> 1;\n\n // include the middle item if it's in range\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n // queue search in halves that intersect the query\n if (axis === 0 ? minX <= x : minY <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(1 - axis);\n }\n if (axis === 0 ? maxX >= x : maxY >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(1 - axis);\n }\n }\n\n return result;\n }\n\n /**\n * Search the index for items within a given radius.\n * @param {number} qx\n * @param {number} qy\n * @param {number} r Query radius.\n * @returns {number[]} An array of indices correponding to the found items.\n */\n within(qx, qy, r) {\n if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n const {ids, coords, nodeSize} = this;\n const stack = [0, ids.length - 1, 0];\n const result = [];\n const r2 = r * r;\n\n // recursively search for items within radius in the kd-sorted arrays\n while (stack.length) {\n const axis = stack.pop() || 0;\n const right = stack.pop() || 0;\n const left = stack.pop() || 0;\n\n // if we reached \"tree node\", search linearly\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n }\n continue;\n }\n\n // otherwise find the middle index\n const m = (left + right) >> 1;\n\n // include the middle item if it's in range\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n // queue search in halves that intersect the query\n if (axis === 0 ? qx - r <= x : qy - r <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(1 - axis);\n }\n if (axis === 0 ? qx + r >= x : qy + r >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(1 - axis);\n }\n }\n\n return result;\n }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n if (right - left <= nodeSize) return;\n\n const m = (left + right) >> 1; // middle index\n\n // sort ids and coords around the middle index so that the halves lie\n // either left/right or top/bottom correspondingly (taking turns)\n select(ids, coords, m, left, right, axis);\n\n // recursively kd-sort first half and second half on the opposite axis\n sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n select(ids, coords, k, newLeft, newRight, axis);\n }\n\n const t = coords[2 * k + axis];\n let i = left;\n let j = right;\n\n swapItem(ids, coords, left, k);\n if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n\n while (i < j) {\n swapItem(ids, coords, i, j);\n i++;\n j--;\n while (coords[2 * i + axis] < t) i++;\n while (coords[2 * j + axis] > t) j--;\n }\n\n if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);\n else {\n j++;\n swapItem(ids, coords, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n swap(ids, i, j);\n swap(coords, 2 * i, 2 * j);\n swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n","// @flow\n\nimport {bindAll, isWorker, isSafari} from './util.js';\nimport window from './window.js';\nimport {serialize, deserialize} from './web_worker_transfer.js';\nimport Scheduler from './scheduler.js';\n\nimport type {Transferable} from '../types/transferable.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\n/**\n * An implementation of the [Actor design pattern](http://en.wikipedia.org/wiki/Actor_model)\n * that maintains the relationship between asynchronous tasks and the objects\n * that spin them off - in this case, tasks like parsing parts of styles,\n * owned by the styles\n *\n * @param {WebWorker} target\n * @param {WebWorker} parent\n * @param {string|number} mapId A unique identifier for the Map instance using this Actor.\n * @private\n */\nclass Actor {\n target: any;\n parent: any;\n mapId: ?number;\n callbacks: { number: any };\n name: string;\n cancelCallbacks: { number: Cancelable };\n globalScope: any;\n scheduler: Scheduler;\n\n constructor(target: any, parent: any, mapId: ?number) {\n this.target = target;\n this.parent = parent;\n this.mapId = mapId;\n this.callbacks = {};\n this.cancelCallbacks = {};\n bindAll(['receive'], this);\n // $FlowFixMe[method-unbinding]\n this.target.addEventListener('message', this.receive, false);\n this.globalScope = isWorker() ? target : window;\n this.scheduler = new Scheduler();\n }\n\n /**\n * Sends a message from a main-thread map to a Worker or from a Worker back to\n * a main-thread map instance.\n *\n * @param type The name of the target method to invoke or '[source-type].[source-name].name' for a method on a WorkerSource.\n * @param targetMapId A particular mapId to which to send this message.\n * @private\n */\n send(type: string, data: mixed, callback: ?Function, targetMapId: ?string, mustQueue: boolean = false, callbackMetadata?: Object): ?Cancelable {\n // We're using a string ID instead of numbers because they are being used as object keys\n // anyway, and thus stringified implicitly. We use random IDs because an actor may receive\n // message from multiple other actors which could run in different execution context. A\n // linearly increasing ID could produce collisions.\n const id = Math.round((Math.random() * 1e18)).toString(36).substring(0, 10);\n if (callback) {\n callback.metadata = callbackMetadata;\n this.callbacks[id] = callback;\n }\n const buffers: ?Array = isSafari(this.globalScope) ? undefined : [];\n this.target.postMessage({\n id,\n type,\n hasCallback: !!callback,\n targetMapId,\n mustQueue,\n sourceMapId: this.mapId,\n data: serialize(data, buffers)\n }, buffers);\n return {\n cancel: () => {\n if (callback) {\n // Set the callback to null so that it never fires after the request is aborted.\n delete this.callbacks[id];\n }\n this.target.postMessage({\n id,\n type: '',\n targetMapId,\n sourceMapId: this.mapId\n });\n }\n };\n }\n\n receive(message: Object) {\n const data = message.data,\n id = data.id;\n\n if (!id) {\n return;\n }\n\n if (data.targetMapId && this.mapId !== data.targetMapId) {\n return;\n }\n\n if (data.type === '') {\n // Remove the original request from the queue. This is only possible if it\n // hasn't been kicked off yet. The id will remain in the queue, but because\n // there is no associated task, it will be dropped once it's time to execute it.\n const cancel = this.cancelCallbacks[id];\n delete this.cancelCallbacks[id];\n if (cancel) {\n cancel.cancel();\n }\n } else {\n if (data.mustQueue || isWorker()) {\n // for worker tasks that are often cancelled, such as loadTile, store them before actually\n // processing them. This is necessary because we want to keep receiving messages.\n // Some tasks may take a while in the worker thread, so before executing the next task\n // in our queue, postMessage preempts this and messages can be processed.\n // We're using a MessageChannel object to get throttle the process() flow to one at a time.\n const callback = this.callbacks[id];\n const metadata = (callback && callback.metadata) || {type: \"message\"};\n this.cancelCallbacks[id] = this.scheduler.add(() => this.processTask(id, data), metadata);\n } else {\n // In the main thread, process messages immediately so that other work does not slip in\n // between getting partial data back from workers.\n this.processTask(id, data);\n }\n }\n }\n\n processTask(id: number, task: any) {\n if (task.type === '') {\n // The done() function in the counterpart has been called, and we are now\n // firing the callback in the originating actor, if there is one.\n const callback = this.callbacks[id];\n delete this.callbacks[id];\n if (callback) {\n // If we get a response, but don't have a callback, the request was canceled.\n if (task.error) {\n callback(deserialize(task.error));\n } else {\n callback(null, deserialize(task.data));\n }\n }\n } else {\n const buffers: ?Array = isSafari(this.globalScope) ? undefined : [];\n const done = task.hasCallback ? (err: ?Error, data: mixed) => {\n delete this.cancelCallbacks[id];\n this.target.postMessage({\n id,\n type: '',\n sourceMapId: this.mapId,\n error: err ? serialize(err) : null,\n data: serialize(data, buffers)\n }, buffers);\n } : (_) => {\n };\n\n const params = (deserialize(task.data): any);\n if (this.parent[task.type]) {\n // task.type == 'loadTile', 'removeTile', etc.\n this.parent[task.type](task.sourceMapId, params, done);\n } else if (this.parent.getWorkerSource) {\n // task.type == sourcetype.method\n const keys = task.type.split('.');\n const scope = (this.parent: any).getWorkerSource(task.sourceMapId, keys[0], params.source);\n scope[keys[1]](params, done);\n } else {\n // No function was found.\n done(new Error(`Could not find function ${task.type}`));\n }\n }\n }\n\n remove() {\n this.scheduler.remove();\n // $FlowFixMe[method-unbinding]\n this.target.removeEventListener('message', this.receive, false);\n }\n}\n\nexport default Actor;\n","// @flow\nexport default ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","// @flow\n\nimport type {LayerSpecification} from './types.js';\n\nimport refProperties from './util/ref_properties.js';\n\nfunction stringify(obj: any) {\n if (typeof obj === 'number' || typeof obj === 'boolean' || typeof obj === 'string' || obj === undefined || obj === null)\n return JSON.stringify(obj);\n\n if (Array.isArray(obj)) {\n let str = '[';\n for (const val of obj) {\n str += `${stringify(val)},`;\n }\n return `${str}]`;\n }\n\n let str = '{';\n for (const key of Object.keys(obj).sort()) {\n str += `${key}:${stringify((obj: any)[key])},`;\n }\n return `${str}}`;\n}\n\nfunction getKey(layer: LayerSpecification) {\n let key = '';\n for (const k of refProperties) {\n key += `/${stringify((layer: any)[k])}`;\n }\n return key;\n}\n\n/**\n * Given an array of layers, return an array of arrays of layers where all\n * layers in each group have identical layout-affecting properties. These\n * are the properties that were formerly used by explicit `ref` mechanism\n * for layers: 'type', 'source', 'source-layer', 'minzoom', 'maxzoom',\n * 'filter', and 'layout'.\n *\n * The input is not modified. The output layers are references to the\n * input layers.\n *\n * @private\n * @param {Array} layers\n * @param {Object} [cachedKeys] - an object to keep already calculated keys.\n * @returns {Array>}\n */\nexport default function groupByLayout(layers: Array, cachedKeys: {[id: string]: string}): Array> {\n const groups = {};\n\n for (let i = 0; i < layers.length; i++) {\n\n const k = (cachedKeys && cachedKeys[layers[i].id]) || getKey(layers[i]);\n // update the cache if there is one\n if (cachedKeys)\n cachedKeys[layers[i].id] = k;\n\n let group = groups[k];\n if (!group) {\n group = groups[k] = [];\n }\n group.push(layers[i]);\n }\n\n const result = [];\n\n for (const k in groups) {\n result.push(groups[k]);\n }\n\n return result;\n}\n","// @flow\n\nimport createStyleLayer from './create_style_layer.js';\n\nimport {values} from '../util/util.js';\nimport groupByLayout from '../style-spec/group_by_layout.js';\n\nimport type {TypedStyleLayer} from './style_layer/typed_style_layer.js';\nimport type {LayerSpecification} from '../style-spec/types.js';\n\nexport type LayerConfigs = {[_: string]: LayerSpecification };\nexport type Family = Array;\n\nclass StyleLayerIndex {\n familiesBySource: { [source: string]: { [sourceLayer: string]: Array> } };\n keyCache: { [source: string]: string };\n\n _layerConfigs: LayerConfigs;\n _layers: {[_: string]: TypedStyleLayer };\n\n constructor(layerConfigs: ?Array) {\n this.keyCache = {};\n if (layerConfigs) {\n this.replace(layerConfigs);\n }\n }\n\n replace(layerConfigs: Array) {\n this._layerConfigs = {};\n this._layers = {};\n this.update(layerConfigs, []);\n }\n\n update(layerConfigs: Array, removedIds: Array) {\n for (const layerConfig of layerConfigs) {\n this._layerConfigs[layerConfig.id] = layerConfig;\n\n const layer = this._layers[layerConfig.id] = ((createStyleLayer(layerConfig): any): TypedStyleLayer);\n layer.compileFilter();\n if (this.keyCache[layerConfig.id])\n delete this.keyCache[layerConfig.id];\n }\n for (const id of removedIds) {\n delete this.keyCache[id];\n delete this._layerConfigs[id];\n delete this._layers[id];\n }\n\n this.familiesBySource = {};\n\n const groups = groupByLayout(values(this._layerConfigs), this.keyCache);\n\n for (const layerConfigs of groups) {\n const layers = layerConfigs.map((layerConfig) => this._layers[layerConfig.id]);\n\n const layer = layers[0];\n if (layer.visibility === 'none') {\n continue;\n }\n\n const sourceId = layer.source || '';\n let sourceGroup = this.familiesBySource[sourceId];\n if (!sourceGroup) {\n sourceGroup = this.familiesBySource[sourceId] = {};\n }\n\n const sourceLayerId = layer.sourceLayer || '_geojsonTileLayer';\n let sourceLayerFamilies = sourceGroup[sourceLayerId];\n if (!sourceLayerFamilies) {\n sourceLayerFamilies = sourceGroup[sourceLayerId] = [];\n }\n\n sourceLayerFamilies.push(layers);\n }\n }\n}\n\nexport default StyleLayerIndex;\n","// @flow\n\nimport DEMData from '../data/dem_data.js';\nimport window from '../util/window.js';\n\nimport type Actor from '../util/actor.js';\nimport type {WorkerDEMTileParameters, WorkerDEMTileCallback} from './worker_source.js';\n\nclass RasterDEMTileWorkerSource {\n actor: Actor;\n offscreenCanvas: OffscreenCanvas;\n offscreenCanvasContext: CanvasRenderingContext2D;\n\n loadTile(params: WorkerDEMTileParameters, callback: WorkerDEMTileCallback) {\n const {uid, encoding, rawImageData, padding, buildQuadTree} = params;\n // Main thread will transfer ImageBitmap if offscreen decode with OffscreenCanvas is supported, else it will transfer an already decoded image.\n // Flow struggles to refine ImageBitmap type, likely due to the JSDom shim\n const imagePixels = window.ImageBitmap && rawImageData instanceof window.ImageBitmap ? this.getImageData(rawImageData, padding) : ((rawImageData: any): ImageData);\n const dem = new DEMData(uid, imagePixels, encoding, padding < 1, buildQuadTree);\n callback(null, dem);\n }\n\n getImageData(imgBitmap: ImageBitmap, padding: number): ImageData {\n // Lazily initialize OffscreenCanvas\n if (!this.offscreenCanvas || !this.offscreenCanvasContext) {\n // Dem tiles are typically 256x256\n this.offscreenCanvas = new OffscreenCanvas(imgBitmap.width, imgBitmap.height);\n // $FlowIssue[extra-arg]: internal Flow types don't yet know about willReadFrequently\n this.offscreenCanvasContext = this.offscreenCanvas.getContext('2d', {willReadFrequently: true});\n }\n\n this.offscreenCanvas.width = imgBitmap.width;\n this.offscreenCanvas.height = imgBitmap.height;\n\n this.offscreenCanvasContext.drawImage(imgBitmap, 0, 0, imgBitmap.width, imgBitmap.height);\n // Insert or remove defined padding around the image to allow backfilling for neighboring data.\n const imgData = this.offscreenCanvasContext.getImageData(-padding, -padding, imgBitmap.width + 2 * padding, imgBitmap.height + 2 * padding);\n this.offscreenCanvasContext.clearRect(0, 0, this.offscreenCanvas.width, this.offscreenCanvas.height);\n return imgData;\n }\n}\n\nexport default RasterDEMTileWorkerSource;\n","\nmodule.exports = rewind;\n\nfunction rewind(gj, outer) {\n var type = gj && gj.type, i;\n\n if (type === 'FeatureCollection') {\n for (i = 0; i < gj.features.length; i++) rewind(gj.features[i], outer);\n\n } else if (type === 'GeometryCollection') {\n for (i = 0; i < gj.geometries.length; i++) rewind(gj.geometries[i], outer);\n\n } else if (type === 'Feature') {\n rewind(gj.geometry, outer);\n\n } else if (type === 'Polygon') {\n rewindRings(gj.coordinates, outer);\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < gj.coordinates.length; i++) rewindRings(gj.coordinates[i], outer);\n }\n\n return gj;\n}\n\nfunction rewindRings(rings, outer) {\n if (rings.length === 0) return;\n\n rewindRing(rings[0], outer);\n for (var i = 1; i < rings.length; i++) {\n rewindRing(rings[i], !outer);\n }\n}\n\nfunction rewindRing(ring, dir) {\n var area = 0, err = 0;\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var k = (ring[i][0] - ring[j][0]) * (ring[j][1] + ring[i][1]);\n var m = area + k;\n err += Math.abs(area) >= Math.abs(k) ? area - m + k : k - m + area;\n area = m;\n }\n if (area + err >= 0 !== !!dir) ring.reverse();\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {VectorTileFeature} from '@mapbox/vector-tile';\n// $FlowFixMe[method-unbinding]\nconst toGeoJSON = VectorTileFeature.prototype.toGeoJSON;\nimport EXTENT from '../data/extent.js';\n\nimport type {GeoJSONFeature} from '@mapbox/geojson-types';\nimport type {IVectorTile, IVectorTileLayer, IVectorTileFeature} from '@mapbox/vector-tile';\n\n// The feature type used by geojson-vt and supercluster. Should be extracted to\n// global type and used in module definitions for those two modules.\ntype Feature = {\n type: 1,\n id: mixed,\n tags: {[_: string]: string | number | boolean},\n geometry: Array<[number, number]>,\n} | {\n type: 2 | 3,\n id: mixed,\n tags: {[_: string]: string | number | boolean},\n geometry: Array>,\n}\n\nclass FeatureWrapper implements IVectorTileFeature {\n _feature: Feature;\n\n extent: number;\n type: 1 | 2 | 3;\n id: number;\n properties: {[_: string]: string | number | boolean};\n\n constructor(feature: Feature) {\n this._feature = feature;\n\n this.extent = EXTENT;\n this.type = feature.type;\n this.properties = feature.tags;\n\n // If the feature has a top-level `id` property, copy it over, but only\n // if it can be coerced to an integer, because this wrapper is used for\n // serializing geojson feature data into vector tile PBF data, and the\n // vector tile spec only supports integer values for feature ids --\n // allowing non-integer values here results in a non-compliant PBF\n // that causes an exception when it is parsed with vector-tile-js\n if ('id' in feature && !isNaN(feature.id)) {\n this.id = parseInt(feature.id, 10);\n }\n }\n\n loadGeometry(): Array> {\n if (this._feature.type === 1) {\n const geometry = [];\n for (const point of this._feature.geometry) {\n geometry.push([new Point(point[0], point[1])]);\n }\n return geometry;\n } else {\n const geometry = [];\n for (const ring of this._feature.geometry) {\n const newRing = [];\n for (const point of ring) {\n newRing.push(new Point(point[0], point[1]));\n }\n geometry.push(newRing);\n }\n return geometry;\n }\n }\n\n toGeoJSON(x: number, y: number, z: number): GeoJSONFeature {\n return toGeoJSON.call(this, x, y, z);\n }\n}\n\nclass GeoJSONWrapper implements IVectorTile, IVectorTileLayer {\n layers: {[_: string]: IVectorTileLayer};\n name: string;\n extent: number;\n length: number;\n _features: Array;\n\n constructor(features: Array) {\n this.layers = {'_geojsonTileLayer': this};\n this.name = '_geojsonTileLayer';\n this.extent = EXTENT;\n this.length = features.length;\n this._features = features;\n }\n\n feature(i: number): IVectorTileFeature {\n return new FeatureWrapper(this._features[i]);\n }\n}\n\nexport default GeoJSONWrapper;\n","'use strict'\n\nvar Point = require('@mapbox/point-geometry')\nvar VectorTileFeature = require('@mapbox/vector-tile').VectorTileFeature\n\nmodule.exports = GeoJSONWrapper\n\n// conform to vectortile api\nfunction GeoJSONWrapper (features, options) {\n this.options = options || {}\n this.features = features\n this.length = features.length\n}\n\nGeoJSONWrapper.prototype.feature = function (i) {\n return new FeatureWrapper(this.features[i], this.options.extent)\n}\n\nfunction FeatureWrapper (feature, extent) {\n this.id = typeof feature.id === 'number' ? feature.id : undefined\n this.type = feature.type\n this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry\n this.properties = feature.tags\n this.extent = extent || 4096\n}\n\nFeatureWrapper.prototype.loadGeometry = function () {\n var rings = this.rawGeometry\n this.geometry = []\n\n for (var i = 0; i < rings.length; i++) {\n var ring = rings[i]\n var newRing = []\n for (var j = 0; j < ring.length; j++) {\n newRing.push(new Point(ring[j][0], ring[j][1]))\n }\n this.geometry.push(newRing)\n }\n return this.geometry\n}\n\nFeatureWrapper.prototype.bbox = function () {\n if (!this.geometry) this.loadGeometry()\n\n var rings = this.geometry\n var x1 = Infinity\n var x2 = -Infinity\n var y1 = Infinity\n var y2 = -Infinity\n\n for (var i = 0; i < rings.length; i++) {\n var ring = rings[i]\n\n for (var j = 0; j < ring.length; j++) {\n var coord = ring[j]\n\n x1 = Math.min(x1, coord.x)\n x2 = Math.max(x2, coord.x)\n y1 = Math.min(y1, coord.y)\n y2 = Math.max(y2, coord.y)\n }\n }\n\n return [x1, y1, x2, y2]\n}\n\nFeatureWrapper.prototype.toGeoJSON = VectorTileFeature.prototype.toGeoJSON\n","var Pbf = require('pbf')\nvar GeoJSONWrapper = require('./lib/geojson_wrapper')\n\nmodule.exports = fromVectorTileJs\nmodule.exports.fromVectorTileJs = fromVectorTileJs\nmodule.exports.fromGeojsonVt = fromGeojsonVt\nmodule.exports.GeoJSONWrapper = GeoJSONWrapper\n\n/**\n * Serialize a vector-tile-js-created tile to pbf\n *\n * @param {Object} tile\n * @return {Buffer} uncompressed, pbf-serialized tile data\n */\nfunction fromVectorTileJs (tile) {\n var out = new Pbf()\n writeTile(tile, out)\n return out.finish()\n}\n\n/**\n * Serialized a geojson-vt-created tile to pbf.\n *\n * @param {Object} layers - An object mapping layer names to geojson-vt-created vector tile objects\n * @param {Object} [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`.\n * @param {Number} [options.version=1] - Version of vector-tile spec used\n * @param {Number} [options.extent=4096] - Extent of the vector tile\n * @return {Buffer} uncompressed, pbf-serialized tile data\n */\nfunction fromGeojsonVt (layers, options) {\n options = options || {}\n var l = {}\n for (var k in layers) {\n l[k] = new GeoJSONWrapper(layers[k].features, options)\n l[k].name = k\n l[k].version = options.version\n l[k].extent = options.extent\n }\n return fromVectorTileJs({ layers: l })\n}\n\nfunction writeTile (tile, pbf) {\n for (var key in tile.layers) {\n pbf.writeMessage(3, writeLayer, tile.layers[key])\n }\n}\n\nfunction writeLayer (layer, pbf) {\n pbf.writeVarintField(15, layer.version || 1)\n pbf.writeStringField(1, layer.name || '')\n pbf.writeVarintField(5, layer.extent || 4096)\n\n var i\n var context = {\n keys: [],\n values: [],\n keycache: {},\n valuecache: {}\n }\n\n for (i = 0; i < layer.length; i++) {\n context.feature = layer.feature(i)\n pbf.writeMessage(2, writeFeature, context)\n }\n\n var keys = context.keys\n for (i = 0; i < keys.length; i++) {\n pbf.writeStringField(3, keys[i])\n }\n\n var values = context.values\n for (i = 0; i < values.length; i++) {\n pbf.writeMessage(4, writeValue, values[i])\n }\n}\n\nfunction writeFeature (context, pbf) {\n var feature = context.feature\n\n if (feature.id !== undefined) {\n pbf.writeVarintField(1, feature.id)\n }\n\n pbf.writeMessage(2, writeProperties, context)\n pbf.writeVarintField(3, feature.type)\n pbf.writeMessage(4, writeGeometry, feature)\n}\n\nfunction writeProperties (context, pbf) {\n var feature = context.feature\n var keys = context.keys\n var values = context.values\n var keycache = context.keycache\n var valuecache = context.valuecache\n\n for (var key in feature.properties) {\n var value = feature.properties[key]\n\n var keyIndex = keycache[key]\n if (value === null) continue // don't encode null value properties\n\n if (typeof keyIndex === 'undefined') {\n keys.push(key)\n keyIndex = keys.length - 1\n keycache[key] = keyIndex\n }\n pbf.writeVarint(keyIndex)\n\n var type = typeof value\n if (type !== 'string' && type !== 'boolean' && type !== 'number') {\n value = JSON.stringify(value)\n }\n var valueKey = type + ':' + value\n var valueIndex = valuecache[valueKey]\n if (typeof valueIndex === 'undefined') {\n values.push(value)\n valueIndex = values.length - 1\n valuecache[valueKey] = valueIndex\n }\n pbf.writeVarint(valueIndex)\n }\n}\n\nfunction command (cmd, length) {\n return (length << 3) + (cmd & 0x7)\n}\n\nfunction zigzag (num) {\n return (num << 1) ^ (num >> 31)\n}\n\nfunction writeGeometry (feature, pbf) {\n var geometry = feature.loadGeometry()\n var type = feature.type\n var x = 0\n var y = 0\n var rings = geometry.length\n for (var r = 0; r < rings; r++) {\n var ring = geometry[r]\n var count = 1\n if (type === 1) {\n count = ring.length\n }\n pbf.writeVarint(command(1, count)) // moveto\n // do not write polygon closing path as lineto\n var lineCount = type === 3 ? ring.length - 1 : ring.length\n for (var i = 0; i < lineCount; i++) {\n if (i === 1 && type !== 1) {\n pbf.writeVarint(command(2, lineCount - 1)) // lineto\n }\n var dx = ring[i].x - x\n var dy = ring[i].y - y\n pbf.writeVarint(zigzag(dx))\n pbf.writeVarint(zigzag(dy))\n x += dx\n y += dy\n }\n if (type === 3) {\n pbf.writeVarint(command(7, 1)) // closepath\n }\n }\n}\n\nfunction writeValue (value, pbf) {\n var type = typeof value\n if (type === 'string') {\n pbf.writeStringField(1, value)\n } else if (type === 'boolean') {\n pbf.writeBooleanField(7, value)\n } else if (type === 'number') {\n if (value % 1 !== 0) {\n pbf.writeDoubleField(3, value)\n } else if (value < 0) {\n pbf.writeSVarintField(6, value)\n } else {\n pbf.writeVarintField(5, value)\n }\n }\n}\n","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n minZoom: 0, // min zoom to generate clusters on\n maxZoom: 16, // max zoom level to cluster the points on\n minPoints: 2, // minimum points to form a cluster\n radius: 40, // cluster radius in pixels\n extent: 512, // tile extent (radius is calculated relative to it)\n nodeSize: 64, // size of the KD-tree leaf node, affects performance\n log: false, // whether to log timing info\n\n // whether to generate numeric ids for input features (in vector tiles)\n generateId: false,\n\n // a reduce function for calculating custom cluster properties\n reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n // properties to use for individual points when running the reducer\n map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nconst OFFSET_ZOOM = 2;\nconst OFFSET_ID = 3;\nconst OFFSET_PARENT = 4;\nconst OFFSET_NUM = 5;\nconst OFFSET_PROP = 6;\n\nexport default class Supercluster {\n constructor(options) {\n this.options = Object.assign(Object.create(defaultOptions), options);\n this.trees = new Array(this.options.maxZoom + 1);\n this.stride = this.options.reduce ? 7 : 6;\n this.clusterProps = [];\n }\n\n load(points) {\n const {log, minZoom, maxZoom} = this.options;\n\n if (log) console.time('total time');\n\n const timerId = `prepare ${ points.length } points`;\n if (log) console.time(timerId);\n\n this.points = points;\n\n // generate a cluster object for each point and index input points into a KD-tree\n const data = [];\n\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n if (!p.geometry) continue;\n\n const [lng, lat] = p.geometry.coordinates;\n const x = fround(lngX(lng));\n const y = fround(latY(lat));\n // store internal point/cluster data in flat numeric arrays for performance\n data.push(\n x, y, // projected point coordinates\n Infinity, // the last zoom the point was processed at\n i, // index of the source feature in the original input array\n -1, // parent cluster id\n 1 // number of points in a cluster\n );\n if (this.options.reduce) data.push(0); // noop\n }\n let tree = this.trees[maxZoom + 1] = this._createTree(data);\n\n if (log) console.timeEnd(timerId);\n\n // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n // results in a cluster hierarchy across zoom levels\n for (let z = maxZoom; z >= minZoom; z--) {\n const now = +Date.now();\n\n // create a new set of clusters for the zoom and index them with a KD-tree\n tree = this.trees[z] = this._createTree(this._cluster(tree, z));\n\n if (log) console.log('z%d: %d clusters in %dms', z, tree.numItems, +Date.now() - now);\n }\n\n if (log) console.timeEnd('total time');\n\n return this;\n }\n\n getClusters(bbox, zoom) {\n let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n const minLat = Math.max(-90, Math.min(90, bbox[1]));\n let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n if (bbox[2] - bbox[0] >= 360) {\n minLng = -180;\n maxLng = 180;\n } else if (minLng > maxLng) {\n const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n return easternHem.concat(westernHem);\n }\n\n const tree = this.trees[this._limitZoom(zoom)];\n const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n const data = tree.data;\n const clusters = [];\n for (const id of ids) {\n const k = this.stride * id;\n clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n }\n return clusters;\n }\n\n getChildren(clusterId) {\n const originId = this._getOriginId(clusterId);\n const originZoom = this._getOriginZoom(clusterId);\n const errorMsg = 'No cluster with the specified id.';\n\n const tree = this.trees[originZoom];\n if (!tree) throw new Error(errorMsg);\n\n const data = tree.data;\n if (originId * this.stride >= data.length) throw new Error(errorMsg);\n\n const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n const x = data[originId * this.stride];\n const y = data[originId * this.stride + 1];\n const ids = tree.within(x, y, r);\n const children = [];\n for (const id of ids) {\n const k = id * this.stride;\n if (data[k + OFFSET_PARENT] === clusterId) {\n children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n }\n }\n\n if (children.length === 0) throw new Error(errorMsg);\n\n return children;\n }\n\n getLeaves(clusterId, limit, offset) {\n limit = limit || 10;\n offset = offset || 0;\n\n const leaves = [];\n this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n return leaves;\n }\n\n getTile(z, x, y) {\n const tree = this.trees[this._limitZoom(z)];\n const z2 = Math.pow(2, z);\n const {extent, radius} = this.options;\n const p = radius / extent;\n const top = (y - p) / z2;\n const bottom = (y + 1 + p) / z2;\n\n const tile = {\n features: []\n };\n\n this._addTileFeatures(\n tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n tree.data, x, y, z2, tile);\n\n if (x === 0) {\n this._addTileFeatures(\n tree.range(1 - p / z2, top, 1, bottom),\n tree.data, z2, y, z2, tile);\n }\n if (x === z2 - 1) {\n this._addTileFeatures(\n tree.range(0, top, p / z2, bottom),\n tree.data, -1, y, z2, tile);\n }\n\n return tile.features.length ? tile : null;\n }\n\n getClusterExpansionZoom(clusterId) {\n let expansionZoom = this._getOriginZoom(clusterId) - 1;\n while (expansionZoom <= this.options.maxZoom) {\n const children = this.getChildren(clusterId);\n expansionZoom++;\n if (children.length !== 1) break;\n clusterId = children[0].properties.cluster_id;\n }\n return expansionZoom;\n }\n\n _appendLeaves(result, clusterId, limit, offset, skipped) {\n const children = this.getChildren(clusterId);\n\n for (const child of children) {\n const props = child.properties;\n\n if (props && props.cluster) {\n if (skipped + props.point_count <= offset) {\n // skip the whole cluster\n skipped += props.point_count;\n } else {\n // enter the cluster\n skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n // exit the cluster\n }\n } else if (skipped < offset) {\n // skip a single point\n skipped++;\n } else {\n // add a single point\n result.push(child);\n }\n if (result.length === limit) break;\n }\n\n return skipped;\n }\n\n _createTree(data) {\n const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);\n for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);\n tree.finish();\n tree.data = data;\n return tree;\n }\n\n _addTileFeatures(ids, data, x, y, z2, tile) {\n for (const i of ids) {\n const k = i * this.stride;\n const isCluster = data[k + OFFSET_NUM] > 1;\n\n let tags, px, py;\n if (isCluster) {\n tags = getClusterProperties(data, k, this.clusterProps);\n px = data[k];\n py = data[k + 1];\n } else {\n const p = this.points[data[k + OFFSET_ID]];\n tags = p.properties;\n const [lng, lat] = p.geometry.coordinates;\n px = lngX(lng);\n py = latY(lat);\n }\n\n const f = {\n type: 1,\n geometry: [[\n Math.round(this.options.extent * (px * z2 - x)),\n Math.round(this.options.extent * (py * z2 - y))\n ]],\n tags\n };\n\n // assign id\n let id;\n if (isCluster || this.options.generateId) {\n // optionally generate id for points\n id = data[k + OFFSET_ID];\n } else {\n // keep id if already assigned\n id = this.points[data[k + OFFSET_ID]].id;\n }\n\n if (id !== undefined) f.id = id;\n\n tile.features.push(f);\n }\n }\n\n _limitZoom(z) {\n return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n }\n\n _cluster(tree, zoom) {\n const {radius, extent, reduce, minPoints} = this.options;\n const r = radius / (extent * Math.pow(2, zoom));\n const data = tree.data;\n const nextData = [];\n const stride = this.stride;\n\n // loop through each point\n for (let i = 0; i < data.length; i += stride) {\n // if we've already visited the point at this zoom level, skip it\n if (data[i + OFFSET_ZOOM] <= zoom) continue;\n data[i + OFFSET_ZOOM] = zoom;\n\n // find all nearby points\n const x = data[i];\n const y = data[i + 1];\n const neighborIds = tree.within(data[i], data[i + 1], r);\n\n const numPointsOrigin = data[i + OFFSET_NUM];\n let numPoints = numPointsOrigin;\n\n // count the number of points in a potential cluster\n for (const neighborId of neighborIds) {\n const k = neighborId * stride;\n // filter out neighbors that are already processed\n if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];\n }\n\n // if there were neighbors to merge, and there are enough points to form a cluster\n if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n let wx = x * numPointsOrigin;\n let wy = y * numPointsOrigin;\n\n let clusterProperties;\n let clusterPropIndex = -1;\n\n // encode both zoom and point index on which the cluster originated -- offset by total length of features\n const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;\n\n for (const neighborId of neighborIds) {\n const k = neighborId * stride;\n\n if (data[k + OFFSET_ZOOM] <= zoom) continue;\n data[k + OFFSET_ZOOM] = zoom; // save the zoom (so it doesn't get processed twice)\n\n const numPoints2 = data[k + OFFSET_NUM];\n wx += data[k] * numPoints2; // accumulate coordinates for calculating weighted center\n wy += data[k + 1] * numPoints2;\n\n data[k + OFFSET_PARENT] = id;\n\n if (reduce) {\n if (!clusterProperties) {\n clusterProperties = this._map(data, i, true);\n clusterPropIndex = this.clusterProps.length;\n this.clusterProps.push(clusterProperties);\n }\n reduce(clusterProperties, this._map(data, k));\n }\n }\n\n data[i + OFFSET_PARENT] = id;\n nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);\n if (reduce) nextData.push(clusterPropIndex);\n\n } else { // left points as unclustered\n for (let j = 0; j < stride; j++) nextData.push(data[i + j]);\n\n if (numPoints > 1) {\n for (const neighborId of neighborIds) {\n const k = neighborId * stride;\n if (data[k + OFFSET_ZOOM] <= zoom) continue;\n data[k + OFFSET_ZOOM] = zoom;\n for (let j = 0; j < stride; j++) nextData.push(data[k + j]);\n }\n }\n }\n }\n\n return nextData;\n }\n\n // get index of the point from which the cluster originated\n _getOriginId(clusterId) {\n return (clusterId - this.points.length) >> 5;\n }\n\n // get zoom of the point from which the cluster originated\n _getOriginZoom(clusterId) {\n return (clusterId - this.points.length) % 32;\n }\n\n _map(data, i, clone) {\n if (data[i + OFFSET_NUM] > 1) {\n const props = this.clusterProps[data[i + OFFSET_PROP]];\n return clone ? Object.assign({}, props) : props;\n }\n const original = this.points[data[i + OFFSET_ID]].properties;\n const result = this.options.map(original);\n return clone && result === original ? Object.assign({}, result) : result;\n }\n}\n\nfunction getClusterJSON(data, i, clusterProps) {\n return {\n type: 'Feature',\n id: data[i + OFFSET_ID],\n properties: getClusterProperties(data, i, clusterProps),\n geometry: {\n type: 'Point',\n coordinates: [xLng(data[i]), yLat(data[i + 1])]\n }\n };\n}\n\nfunction getClusterProperties(data, i, clusterProps) {\n const count = data[i + OFFSET_NUM];\n const abbrev =\n count >= 10000 ? `${Math.round(count / 1000) }k` :\n count >= 1000 ? `${Math.round(count / 100) / 10 }k` : count;\n const propIndex = data[i + OFFSET_PROP];\n const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);\n return Object.assign(properties, {\n cluster: true,\n cluster_id: data[i + OFFSET_ID],\n point_count: count,\n point_count_abbreviated: abbrev\n });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin(lat * Math.PI / 180);\n const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n const y2 = (180 - y * 360) * Math.PI / 180;\n return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n","\n// calculate simplification data using optimized Douglas-Peucker algorithm\n\nexport default function simplify(coords, first, last, sqTolerance) {\n var maxSqDist = sqTolerance;\n var mid = (last - first) >> 1;\n var minPosToMid = last - first;\n var index;\n\n var ax = coords[first];\n var ay = coords[first + 1];\n var bx = coords[last];\n var by = coords[last + 1];\n\n for (var i = first + 3; i < last; i += 3) {\n var d = getSqSegDist(coords[i], coords[i + 1], ax, ay, bx, by);\n\n if (d > maxSqDist) {\n index = i;\n maxSqDist = d;\n\n } else if (d === maxSqDist) {\n // a workaround to ensure we choose a pivot close to the middle of the list,\n // reducing recursion depth, for certain degenerate inputs\n // https://github.com/mapbox/geojson-vt/issues/104\n var posToMid = Math.abs(i - mid);\n if (posToMid < minPosToMid) {\n index = i;\n minPosToMid = posToMid;\n }\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 3) simplify(coords, first, index, sqTolerance);\n coords[index + 2] = maxSqDist;\n if (last - index > 3) simplify(coords, index, last, sqTolerance);\n }\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(px, py, x, y, bx, by) {\n\n var dx = bx - x;\n var dy = by - y;\n\n if (dx !== 0 || dy !== 0) {\n\n var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = bx;\n y = by;\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = px - x;\n dy = py - y;\n\n return dx * dx + dy * dy;\n}\n","\nexport default function createFeature(id, type, geom, tags) {\n var feature = {\n id: typeof id === 'undefined' ? null : id,\n type: type,\n geometry: geom,\n tags: tags,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n calcBBox(feature);\n return feature;\n}\n\nfunction calcBBox(feature) {\n var geom = feature.geometry;\n var type = feature.type;\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n calcLineBBox(feature, geom);\n\n } else if (type === 'Polygon' || type === 'MultiLineString') {\n for (var i = 0; i < geom.length; i++) {\n calcLineBBox(feature, geom[i]);\n }\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < geom.length; i++) {\n for (var j = 0; j < geom[i].length; j++) {\n calcLineBBox(feature, geom[i][j]);\n }\n }\n }\n}\n\nfunction calcLineBBox(feature, geom) {\n for (var i = 0; i < geom.length; i += 3) {\n feature.minX = Math.min(feature.minX, geom[i]);\n feature.minY = Math.min(feature.minY, geom[i + 1]);\n feature.maxX = Math.max(feature.maxX, geom[i]);\n feature.maxY = Math.max(feature.maxY, geom[i + 1]);\n }\n}\n","\nimport simplify from './simplify';\nimport createFeature from './feature';\n\n// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data\n\nexport default function convert(data, options) {\n var features = [];\n if (data.type === 'FeatureCollection') {\n for (var i = 0; i < data.features.length; i++) {\n convertFeature(features, data.features[i], options, i);\n }\n\n } else if (data.type === 'Feature') {\n convertFeature(features, data, options);\n\n } else {\n // single geometry or a geometry collection\n convertFeature(features, {geometry: data}, options);\n }\n\n return features;\n}\n\nfunction convertFeature(features, geojson, options, index) {\n if (!geojson.geometry) return;\n\n var coords = geojson.geometry.coordinates;\n var type = geojson.geometry.type;\n var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2);\n var geometry = [];\n var id = geojson.id;\n if (options.promoteId) {\n id = geojson.properties[options.promoteId];\n } else if (options.generateId) {\n id = index || 0;\n }\n if (type === 'Point') {\n convertPoint(coords, geometry);\n\n } else if (type === 'MultiPoint') {\n for (var i = 0; i < coords.length; i++) {\n convertPoint(coords[i], geometry);\n }\n\n } else if (type === 'LineString') {\n convertLine(coords, geometry, tolerance, false);\n\n } else if (type === 'MultiLineString') {\n if (options.lineMetrics) {\n // explode into linestrings to be able to track metrics\n for (i = 0; i < coords.length; i++) {\n geometry = [];\n convertLine(coords[i], geometry, tolerance, false);\n features.push(createFeature(id, 'LineString', geometry, geojson.properties));\n }\n return;\n } else {\n convertLines(coords, geometry, tolerance, false);\n }\n\n } else if (type === 'Polygon') {\n convertLines(coords, geometry, tolerance, true);\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < coords.length; i++) {\n var polygon = [];\n convertLines(coords[i], polygon, tolerance, true);\n geometry.push(polygon);\n }\n } else if (type === 'GeometryCollection') {\n for (i = 0; i < geojson.geometry.geometries.length; i++) {\n convertFeature(features, {\n id: id,\n geometry: geojson.geometry.geometries[i],\n properties: geojson.properties\n }, options, index);\n }\n return;\n } else {\n throw new Error('Input data is not a valid GeoJSON object.');\n }\n\n features.push(createFeature(id, type, geometry, geojson.properties));\n}\n\nfunction convertPoint(coords, out) {\n out.push(projectX(coords[0]));\n out.push(projectY(coords[1]));\n out.push(0);\n}\n\nfunction convertLine(ring, out, tolerance, isPolygon) {\n var x0, y0;\n var size = 0;\n\n for (var j = 0; j < ring.length; j++) {\n var x = projectX(ring[j][0]);\n var y = projectY(ring[j][1]);\n\n out.push(x);\n out.push(y);\n out.push(0);\n\n if (j > 0) {\n if (isPolygon) {\n size += (x0 * y - x * y0) / 2; // area\n } else {\n size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)); // length\n }\n }\n x0 = x;\n y0 = y;\n }\n\n var last = out.length - 3;\n out[2] = 1;\n simplify(out, 0, last, tolerance);\n out[last + 2] = 1;\n\n out.size = Math.abs(size);\n out.start = 0;\n out.end = out.size;\n}\n\nfunction convertLines(rings, out, tolerance, isPolygon) {\n for (var i = 0; i < rings.length; i++) {\n var geom = [];\n convertLine(rings[i], geom, tolerance, isPolygon);\n out.push(geom);\n }\n}\n\nfunction projectX(x) {\n return x / 360 + 0.5;\n}\n\nfunction projectY(y) {\n var sin = Math.sin(y * Math.PI / 180);\n var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;\n return y2 < 0 ? 0 : y2 > 1 ? 1 : y2;\n}\n","\nimport createFeature from './feature';\n\n/* clip features between two axis-parallel lines:\n * | |\n * ___|___ | /\n * / | \\____|____/\n * | |\n */\n\nexport default function clip(features, scale, k1, k2, axis, minAll, maxAll, options) {\n\n k1 /= scale;\n k2 /= scale;\n\n if (minAll >= k1 && maxAll < k2) return features; // trivial accept\n else if (maxAll < k1 || minAll >= k2) return null; // trivial reject\n\n var clipped = [];\n\n for (var i = 0; i < features.length; i++) {\n\n var feature = features[i];\n var geometry = feature.geometry;\n var type = feature.type;\n\n var min = axis === 0 ? feature.minX : feature.minY;\n var max = axis === 0 ? feature.maxX : feature.maxY;\n\n if (min >= k1 && max < k2) { // trivial accept\n clipped.push(feature);\n continue;\n } else if (max < k1 || min >= k2) { // trivial reject\n continue;\n }\n\n var newGeometry = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n clipPoints(geometry, newGeometry, k1, k2, axis);\n\n } else if (type === 'LineString') {\n clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics);\n\n } else if (type === 'MultiLineString') {\n clipLines(geometry, newGeometry, k1, k2, axis, false);\n\n } else if (type === 'Polygon') {\n clipLines(geometry, newGeometry, k1, k2, axis, true);\n\n } else if (type === 'MultiPolygon') {\n for (var j = 0; j < geometry.length; j++) {\n var polygon = [];\n clipLines(geometry[j], polygon, k1, k2, axis, true);\n if (polygon.length) {\n newGeometry.push(polygon);\n }\n }\n }\n\n if (newGeometry.length) {\n if (options.lineMetrics && type === 'LineString') {\n for (j = 0; j < newGeometry.length; j++) {\n clipped.push(createFeature(feature.id, type, newGeometry[j], feature.tags));\n }\n continue;\n }\n\n if (type === 'LineString' || type === 'MultiLineString') {\n if (newGeometry.length === 1) {\n type = 'LineString';\n newGeometry = newGeometry[0];\n } else {\n type = 'MultiLineString';\n }\n }\n if (type === 'Point' || type === 'MultiPoint') {\n type = newGeometry.length === 3 ? 'Point' : 'MultiPoint';\n }\n\n clipped.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n }\n\n return clipped.length ? clipped : null;\n}\n\nfunction clipPoints(geom, newGeom, k1, k2, axis) {\n for (var i = 0; i < geom.length; i += 3) {\n var a = geom[i + axis];\n\n if (a >= k1 && a <= k2) {\n newGeom.push(geom[i]);\n newGeom.push(geom[i + 1]);\n newGeom.push(geom[i + 2]);\n }\n }\n}\n\nfunction clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) {\n\n var slice = newSlice(geom);\n var intersect = axis === 0 ? intersectX : intersectY;\n var len = geom.start;\n var segLen, t;\n\n for (var i = 0; i < geom.length - 3; i += 3) {\n var ax = geom[i];\n var ay = geom[i + 1];\n var az = geom[i + 2];\n var bx = geom[i + 3];\n var by = geom[i + 4];\n var a = axis === 0 ? ax : ay;\n var b = axis === 0 ? bx : by;\n var exited = false;\n\n if (trackMetrics) segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2));\n\n if (a < k1) {\n // ---|--> | (line enters the clip region from the left)\n if (b > k1) {\n t = intersect(slice, ax, ay, bx, by, k1);\n if (trackMetrics) slice.start = len + segLen * t;\n }\n } else if (a > k2) {\n // | <--|--- (line enters the clip region from the right)\n if (b < k2) {\n t = intersect(slice, ax, ay, bx, by, k2);\n if (trackMetrics) slice.start = len + segLen * t;\n }\n } else {\n addPoint(slice, ax, ay, az);\n }\n if (b < k1 && a >= k1) {\n // <--|--- | or <--|-----|--- (line exits the clip region on the left)\n t = intersect(slice, ax, ay, bx, by, k1);\n exited = true;\n }\n if (b > k2 && a <= k2) {\n // | ---|--> or ---|-----|--> (line exits the clip region on the right)\n t = intersect(slice, ax, ay, bx, by, k2);\n exited = true;\n }\n\n if (!isPolygon && exited) {\n if (trackMetrics) slice.end = len + segLen * t;\n newGeom.push(slice);\n slice = newSlice(geom);\n }\n\n if (trackMetrics) len += segLen;\n }\n\n // add the last point\n var last = geom.length - 3;\n ax = geom[last];\n ay = geom[last + 1];\n az = geom[last + 2];\n a = axis === 0 ? ax : ay;\n if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az);\n\n // close the polygon if its endpoints are not the same after clipping\n last = slice.length - 3;\n if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) {\n addPoint(slice, slice[0], slice[1], slice[2]);\n }\n\n // add the final slice\n if (slice.length) {\n newGeom.push(slice);\n }\n}\n\nfunction newSlice(line) {\n var slice = [];\n slice.size = line.size;\n slice.start = line.start;\n slice.end = line.end;\n return slice;\n}\n\nfunction clipLines(geom, newGeom, k1, k2, axis, isPolygon) {\n for (var i = 0; i < geom.length; i++) {\n clipLine(geom[i], newGeom, k1, k2, axis, isPolygon, false);\n }\n}\n\nfunction addPoint(out, x, y, z) {\n out.push(x);\n out.push(y);\n out.push(z);\n}\n\nfunction intersectX(out, ax, ay, bx, by, x) {\n var t = (x - ax) / (bx - ax);\n out.push(x);\n out.push(ay + (by - ay) * t);\n out.push(1);\n return t;\n}\n\nfunction intersectY(out, ax, ay, bx, by, y) {\n var t = (y - ay) / (by - ay);\n out.push(ax + (bx - ax) * t);\n out.push(y);\n out.push(1);\n return t;\n}\n","\nimport clip from './clip';\nimport createFeature from './feature';\n\nexport default function wrap(features, options) {\n var buffer = options.buffer / options.extent;\n var merged = features;\n var left = clip(features, 1, -1 - buffer, buffer, 0, -1, 2, options); // left world copy\n var right = clip(features, 1, 1 - buffer, 2 + buffer, 0, -1, 2, options); // right world copy\n\n if (left || right) {\n merged = clip(features, 1, -buffer, 1 + buffer, 0, -1, 2, options) || []; // center world copy\n\n if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center\n if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center\n }\n\n return merged;\n}\n\nfunction shiftFeatureCoords(features, offset) {\n var newFeatures = [];\n\n for (var i = 0; i < features.length; i++) {\n var feature = features[i],\n type = feature.type;\n\n var newGeometry;\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n newGeometry = shiftCoords(feature.geometry, offset);\n\n } else if (type === 'MultiLineString' || type === 'Polygon') {\n newGeometry = [];\n for (var j = 0; j < feature.geometry.length; j++) {\n newGeometry.push(shiftCoords(feature.geometry[j], offset));\n }\n } else if (type === 'MultiPolygon') {\n newGeometry = [];\n for (j = 0; j < feature.geometry.length; j++) {\n var newPolygon = [];\n for (var k = 0; k < feature.geometry[j].length; k++) {\n newPolygon.push(shiftCoords(feature.geometry[j][k], offset));\n }\n newGeometry.push(newPolygon);\n }\n }\n\n newFeatures.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n\n return newFeatures;\n}\n\nfunction shiftCoords(points, offset) {\n var newPoints = [];\n newPoints.size = points.size;\n\n if (points.start !== undefined) {\n newPoints.start = points.start;\n newPoints.end = points.end;\n }\n\n for (var i = 0; i < points.length; i += 3) {\n newPoints.push(points[i] + offset, points[i + 1], points[i + 2]);\n }\n return newPoints;\n}\n","\n// Transforms the coordinates of each feature in the given tile from\n// mercator-projected space into (extent x extent) tile space.\nexport default function transformTile(tile, extent) {\n if (tile.transformed) return tile;\n\n var z2 = 1 << tile.z,\n tx = tile.x,\n ty = tile.y,\n i, j, k;\n\n for (i = 0; i < tile.features.length; i++) {\n var feature = tile.features[i],\n geom = feature.geometry,\n type = feature.type;\n\n feature.geometry = [];\n\n if (type === 1) {\n for (j = 0; j < geom.length; j += 2) {\n feature.geometry.push(transformPoint(geom[j], geom[j + 1], extent, z2, tx, ty));\n }\n } else {\n for (j = 0; j < geom.length; j++) {\n var ring = [];\n for (k = 0; k < geom[j].length; k += 2) {\n ring.push(transformPoint(geom[j][k], geom[j][k + 1], extent, z2, tx, ty));\n }\n feature.geometry.push(ring);\n }\n }\n }\n\n tile.transformed = true;\n\n return tile;\n}\n\nfunction transformPoint(x, y, extent, z2, tx, ty) {\n return [\n Math.round(extent * (x * z2 - tx)),\n Math.round(extent * (y * z2 - ty))];\n}\n","\nexport default function createTile(features, z, tx, ty, options) {\n var tolerance = z === options.maxZoom ? 0 : options.tolerance / ((1 << z) * options.extent);\n var tile = {\n features: [],\n numPoints: 0,\n numSimplified: 0,\n numFeatures: 0,\n source: null,\n x: tx,\n y: ty,\n z: z,\n transformed: false,\n minX: 2,\n minY: 1,\n maxX: -1,\n maxY: 0\n };\n for (var i = 0; i < features.length; i++) {\n tile.numFeatures++;\n addFeature(tile, features[i], tolerance, options);\n\n var minX = features[i].minX;\n var minY = features[i].minY;\n var maxX = features[i].maxX;\n var maxY = features[i].maxY;\n\n if (minX < tile.minX) tile.minX = minX;\n if (minY < tile.minY) tile.minY = minY;\n if (maxX > tile.maxX) tile.maxX = maxX;\n if (maxY > tile.maxY) tile.maxY = maxY;\n }\n return tile;\n}\n\nfunction addFeature(tile, feature, tolerance, options) {\n\n var geom = feature.geometry,\n type = feature.type,\n simplified = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n for (var i = 0; i < geom.length; i += 3) {\n simplified.push(geom[i]);\n simplified.push(geom[i + 1]);\n tile.numPoints++;\n tile.numSimplified++;\n }\n\n } else if (type === 'LineString') {\n addLine(simplified, geom, tile, tolerance, false, false);\n\n } else if (type === 'MultiLineString' || type === 'Polygon') {\n for (i = 0; i < geom.length; i++) {\n addLine(simplified, geom[i], tile, tolerance, type === 'Polygon', i === 0);\n }\n\n } else if (type === 'MultiPolygon') {\n\n for (var k = 0; k < geom.length; k++) {\n var polygon = geom[k];\n for (i = 0; i < polygon.length; i++) {\n addLine(simplified, polygon[i], tile, tolerance, true, i === 0);\n }\n }\n }\n\n if (simplified.length) {\n var tags = feature.tags || null;\n if (type === 'LineString' && options.lineMetrics) {\n tags = {};\n for (var key in feature.tags) tags[key] = feature.tags[key];\n tags['mapbox_clip_start'] = geom.start / geom.size;\n tags['mapbox_clip_end'] = geom.end / geom.size;\n }\n var tileFeature = {\n geometry: simplified,\n type: type === 'Polygon' || type === 'MultiPolygon' ? 3 :\n type === 'LineString' || type === 'MultiLineString' ? 2 : 1,\n tags: tags\n };\n if (feature.id !== null) {\n tileFeature.id = feature.id;\n }\n tile.features.push(tileFeature);\n }\n}\n\nfunction addLine(result, geom, tile, tolerance, isPolygon, isOuter) {\n var sqTolerance = tolerance * tolerance;\n\n if (tolerance > 0 && (geom.size < (isPolygon ? sqTolerance : tolerance))) {\n tile.numPoints += geom.length / 3;\n return;\n }\n\n var ring = [];\n\n for (var i = 0; i < geom.length; i += 3) {\n if (tolerance === 0 || geom[i + 2] > sqTolerance) {\n tile.numSimplified++;\n ring.push(geom[i]);\n ring.push(geom[i + 1]);\n }\n tile.numPoints++;\n }\n\n if (isPolygon) rewind(ring, isOuter);\n\n result.push(ring);\n}\n\nfunction rewind(ring, clockwise) {\n var area = 0;\n for (var i = 0, len = ring.length, j = len - 2; i < len; j = i, i += 2) {\n area += (ring[i] - ring[j]) * (ring[i + 1] + ring[j + 1]);\n }\n if (area > 0 === clockwise) {\n for (i = 0, len = ring.length; i < len / 2; i += 2) {\n var x = ring[i];\n var y = ring[i + 1];\n ring[i] = ring[len - 2 - i];\n ring[i + 1] = ring[len - 1 - i];\n ring[len - 2 - i] = x;\n ring[len - 1 - i] = y;\n }\n }\n}\n","\nimport convert from './convert'; // GeoJSON conversion and preprocessing\nimport clip from './clip'; // stripe clipping algorithm\nimport wrap from './wrap'; // date line processing\nimport transform from './transform'; // coordinate transformation\nimport createTile from './tile'; // final simplified tile generation\n\nexport default function geojsonvt(data, options) {\n return new GeoJSONVT(data, options);\n}\n\nfunction GeoJSONVT(data, options) {\n options = this.options = extend(Object.create(this.options), options);\n\n var debug = options.debug;\n\n if (debug) console.time('preprocess data');\n\n if (options.maxZoom < 0 || options.maxZoom > 24) throw new Error('maxZoom should be in the 0-24 range');\n if (options.promoteId && options.generateId) throw new Error('promoteId and generateId cannot be used together.');\n\n var features = convert(data, options);\n\n this.tiles = {};\n this.tileCoords = [];\n\n if (debug) {\n console.timeEnd('preprocess data');\n console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints);\n console.time('generate tiles');\n this.stats = {};\n this.total = 0;\n }\n\n features = wrap(features, options);\n\n // start slicing from the top tile down\n if (features.length) this.splitTile(features, 0, 0, 0);\n\n if (debug) {\n if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints);\n console.timeEnd('generate tiles');\n console.log('tiles generated:', this.total, JSON.stringify(this.stats));\n }\n}\n\nGeoJSONVT.prototype.options = {\n maxZoom: 14, // max zoom to preserve detail on\n indexMaxZoom: 5, // max zoom in the tile index\n indexMaxPoints: 100000, // max number of points per tile in the tile index\n tolerance: 3, // simplification tolerance (higher means simpler)\n extent: 4096, // tile extent\n buffer: 64, // tile buffer on each side\n lineMetrics: false, // whether to calculate line metrics\n promoteId: null, // name of a feature property to be promoted to feature.id\n generateId: false, // whether to generate feature ids. Cannot be used with promoteId\n debug: 0 // logging level (0, 1 or 2)\n};\n\nGeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) {\n\n var stack = [features, z, x, y],\n options = this.options,\n debug = options.debug;\n\n // avoid recursion by using a processing queue\n while (stack.length) {\n y = stack.pop();\n x = stack.pop();\n z = stack.pop();\n features = stack.pop();\n\n var z2 = 1 << z,\n id = toID(z, x, y),\n tile = this.tiles[id];\n\n if (!tile) {\n if (debug > 1) console.time('creation');\n\n tile = this.tiles[id] = createTile(features, z, x, y, options);\n this.tileCoords.push({z: z, x: x, y: y});\n\n if (debug) {\n if (debug > 1) {\n console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)',\n z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified);\n console.timeEnd('creation');\n }\n var key = 'z' + z;\n this.stats[key] = (this.stats[key] || 0) + 1;\n this.total++;\n }\n }\n\n // save reference to original geometry in tile so that we can drill down later if we stop now\n tile.source = features;\n\n // if it's the first-pass tiling\n if (!cz) {\n // stop tiling if we reached max zoom, or if the tile is too simple\n if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue;\n\n // if a drilldown to a specific tile\n } else {\n // stop tiling if we reached base zoom or our target tile zoom\n if (z === options.maxZoom || z === cz) continue;\n\n // stop tiling if it's not an ancestor of the target tile\n var m = 1 << (cz - z);\n if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue;\n }\n\n // if we slice further down, no need to keep source geometry\n tile.source = null;\n\n if (features.length === 0) continue;\n\n if (debug > 1) console.time('clipping');\n\n // values we'll use for clipping\n var k1 = 0.5 * options.buffer / options.extent,\n k2 = 0.5 - k1,\n k3 = 0.5 + k1,\n k4 = 1 + k1,\n tl, bl, tr, br, left, right;\n\n tl = bl = tr = br = null;\n\n left = clip(features, z2, x - k1, x + k3, 0, tile.minX, tile.maxX, options);\n right = clip(features, z2, x + k2, x + k4, 0, tile.minX, tile.maxX, options);\n features = null;\n\n if (left) {\n tl = clip(left, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n bl = clip(left, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n left = null;\n }\n\n if (right) {\n tr = clip(right, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n br = clip(right, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n right = null;\n }\n\n if (debug > 1) console.timeEnd('clipping');\n\n stack.push(tl || [], z + 1, x * 2, y * 2);\n stack.push(bl || [], z + 1, x * 2, y * 2 + 1);\n stack.push(tr || [], z + 1, x * 2 + 1, y * 2);\n stack.push(br || [], z + 1, x * 2 + 1, y * 2 + 1);\n }\n};\n\nGeoJSONVT.prototype.getTile = function (z, x, y) {\n var options = this.options,\n extent = options.extent,\n debug = options.debug;\n\n if (z < 0 || z > 24) return null;\n\n var z2 = 1 << z;\n x = ((x % z2) + z2) % z2; // wrap tile x coordinate\n\n var id = toID(z, x, y);\n if (this.tiles[id]) return transform(this.tiles[id], extent);\n\n if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y);\n\n var z0 = z,\n x0 = x,\n y0 = y,\n parent;\n\n while (!parent && z0 > 0) {\n z0--;\n x0 = Math.floor(x0 / 2);\n y0 = Math.floor(y0 / 2);\n parent = this.tiles[toID(z0, x0, y0)];\n }\n\n if (!parent || !parent.source) return null;\n\n // if we found a parent tile containing the original geometry, we can drill down from it\n if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0);\n\n if (debug > 1) console.time('drilling down');\n this.splitTile(parent.source, z0, x0, y0, z, x, y);\n if (debug > 1) console.timeEnd('drilling down');\n\n return this.tiles[id] ? transform(this.tiles[id], extent) : null;\n};\n\nfunction toID(z, x, y) {\n return (((1 << z) * y + x) * 32) + z;\n}\n\nfunction extend(dest, src) {\n for (var i in src) dest[i] = src[i];\n return dest;\n}\n","// @flow\n\nimport {getJSON} from '../util/ajax.js';\n\nimport {getPerformanceMeasurement} from '../util/performance.js';\nimport rewind from '@mapbox/geojson-rewind';\nimport GeoJSONWrapper from './geojson_wrapper.js';\nimport vtpbf from 'vt-pbf';\nimport Supercluster from 'supercluster';\nimport geojsonvt from 'geojson-vt';\nimport assert from 'assert';\nimport VectorTileWorkerSource from './vector_tile_worker_source.js';\nimport {createExpression} from '../style-spec/expression/index.js';\n\nimport type {\n RequestedTileParameters,\n WorkerTileParameters,\n WorkerTileCallback,\n} from '../source/worker_source.js';\n\nimport type Actor from '../util/actor.js';\nimport type StyleLayerIndex from '../style/style_layer_index.js';\n\nimport type {LoadVectorDataCallback} from './vector_tile_worker_source.js';\nimport type {RequestParameters, ResponseCallback} from '../util/ajax.js';\nimport type {Callback} from '../types/callback.js';\nimport type {GeoJSONFeature} from '@mapbox/geojson-types';\n\nexport type GeoJSONWorkerOptions = {\n source: string,\n cluster: boolean,\n superclusterOptions?: Object,\n geojsonVtOptions?: Object,\n clusterProperties?: Object,\n filter?: Array\n};\n\nexport type LoadGeoJSONParameters = GeoJSONWorkerOptions & {\n request?: RequestParameters,\n data?: string\n};\n\nexport type LoadGeoJSON = (params: LoadGeoJSONParameters, callback: ResponseCallback) => void;\n\nexport interface GeoJSONIndex {\n getTile(z: number, x: number, y: number): Object;\n\n // supercluster methods\n getClusterExpansionZoom(clusterId: number): number;\n getChildren(clusterId: number): Array;\n getLeaves(clusterId: number, limit: number, offset: number): Array;\n}\n\n// $FlowFixMe[missing-this-annot]\nfunction loadGeoJSONTile(params: RequestedTileParameters, callback: LoadVectorDataCallback) {\n const canonical = params.tileID.canonical;\n\n if (!this._geoJSONIndex) {\n return callback(null, null); // we couldn't load the file\n }\n\n const geoJSONTile = this._geoJSONIndex.getTile(canonical.z, canonical.x, canonical.y);\n if (!geoJSONTile) {\n return callback(null, null); // nothing in the given tile\n }\n\n const geojsonWrapper = new GeoJSONWrapper(geoJSONTile.features);\n\n // Encode the geojson-vt tile into binary vector tile form. This\n // is a convenience that allows `FeatureIndex` to operate the same way\n // across `VectorTileSource` and `GeoJSONSource` data.\n let pbf = vtpbf(geojsonWrapper);\n if (pbf.byteOffset !== 0 || pbf.byteLength !== pbf.buffer.byteLength) {\n // Compatibility with node Buffer (https://github.com/mapbox/pbf/issues/35)\n pbf = new Uint8Array(pbf);\n }\n\n callback(null, {\n vectorTile: geojsonWrapper,\n rawData: pbf.buffer\n });\n}\n\n/**\n * The {@link WorkerSource} implementation that supports {@link GeoJSONSource}.\n * This class is designed to be easily reused to support custom source types\n * for data formats that can be parsed/converted into an in-memory GeoJSON\n * representation. To do so, create it with\n * `new GeoJSONWorkerSource(actor, layerIndex, customLoadGeoJSONFunction)`.\n * For a full example, see [mapbox-gl-topojson](https://github.com/developmentseed/mapbox-gl-topojson).\n *\n * @private\n */\nclass GeoJSONWorkerSource extends VectorTileWorkerSource {\n loadGeoJSON: LoadGeoJSON;\n _geoJSONIndex: GeoJSONIndex\n\n /**\n * @param [loadGeoJSON] Optional method for custom loading/parsing of\n * GeoJSON based on parameters passed from the main-thread Source.\n * See {@link GeoJSONWorkerSource#loadGeoJSON}.\n * @private\n */\n constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array, isSpriteLoaded: boolean, loadGeoJSON: ?LoadGeoJSON) {\n super(actor, layerIndex, availableImages, isSpriteLoaded, loadGeoJSONTile);\n if (loadGeoJSON) {\n this.loadGeoJSON = loadGeoJSON;\n }\n }\n\n /**\n * Fetches (if appropriate), parses, and index geojson data into tiles. This\n * preparatory method must be called before {@link GeoJSONWorkerSource#loadTile}\n * can correctly serve up tiles.\n *\n * Defers to {@link GeoJSONWorkerSource#loadGeoJSON} for the fetching/parsing,\n * expecting `callback(error, data)` to be called with either an error or a\n * parsed GeoJSON object.\n *\n * When `loadData` requests come in faster than they can be processed,\n * they are coalesced into a single request using the latest data.\n * See {@link GeoJSONWorkerSource#coalesce}\n *\n * @param params\n * @param callback\n * @private\n */\n loadData(params: LoadGeoJSONParameters, callback: Callback<{resourceTiming?: {[_: string]: Array}}>) {\n const requestParam = params && params.request;\n const perf = requestParam && requestParam.collectResourceTiming;\n\n this.loadGeoJSON(params, (err: ?Error, data: ?Object) => {\n if (err || !data) {\n return callback(err);\n } else if (typeof data !== 'object') {\n return callback(new Error(`Input data given to '${params.source}' is not a valid GeoJSON object.`));\n } else {\n rewind(data, true);\n\n try {\n if (params.filter) {\n const compiled = createExpression(params.filter, {type: 'boolean', 'property-type': 'data-driven', overridable: false, transition: false});\n if (compiled.result === 'error')\n throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n\n const features = data.features.filter(feature => compiled.value.evaluate({zoom: 0}, feature));\n data = {type: 'FeatureCollection', features};\n }\n\n this._geoJSONIndex = params.cluster ?\n new Supercluster(getSuperclusterOptions(params)).load(data.features) :\n geojsonvt(data, params.geojsonVtOptions);\n } catch (err) {\n return callback(err);\n }\n\n this.loaded = {};\n\n const result = {};\n if (perf) {\n const resourceTimingData = getPerformanceMeasurement(requestParam);\n // it's necessary to eval the result of getEntriesByName() here via parse/stringify\n // late evaluation in the main thread causes TypeError: illegal invocation\n if (resourceTimingData) {\n result.resourceTiming = {};\n result.resourceTiming[params.source] = JSON.parse(JSON.stringify(resourceTimingData));\n }\n }\n callback(null, result);\n }\n });\n }\n\n /**\n * Implements {@link WorkerSource#reloadTile}.\n *\n * If the tile is loaded, uses the implementation in VectorTileWorkerSource.\n * Otherwise, such as after a setData() call, we load the tile fresh.\n *\n * @param params\n * @param params.uid The UID for this tile.\n * @private\n */\n reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void {\n const loaded = this.loaded,\n uid = params.uid;\n\n if (loaded && loaded[uid]) {\n return super.reloadTile(params, callback);\n } else {\n return this.loadTile(params, callback);\n }\n }\n\n /**\n * Fetch and parse GeoJSON according to the given params. Calls `callback`\n * with `(err, data)`, where `data` is a parsed GeoJSON object.\n *\n * GeoJSON is loaded and parsed from `params.url` if it exists, or else\n * expected as a literal (string or object) `params.data`.\n *\n * @param params\n * @param [params.url] A URL to the remote GeoJSON data.\n * @param [params.data] Literal GeoJSON data. Must be provided if `params.url` is not.\n * @private\n */\n // $FlowFixMe[duplicate-class-member]\n loadGeoJSON(params: LoadGeoJSONParameters, callback: ResponseCallback): void {\n // Because of same origin issues, urls must either include an explicit\n // origin or absolute path.\n // ie: /foo/bar.json or http://example.com/bar.json\n // but not ../foo/bar.json\n if (params.request) {\n getJSON(params.request, callback);\n } else if (typeof params.data === 'string') {\n try {\n return callback(null, JSON.parse(params.data));\n } catch (e) {\n return callback(new Error(`Input data given to '${params.source}' is not a valid GeoJSON object.`));\n }\n } else {\n return callback(new Error(`Input data given to '${params.source}' is not a valid GeoJSON object.`));\n }\n }\n\n getClusterExpansionZoom(params: {clusterId: number}, callback: Callback) {\n try {\n callback(null, this._geoJSONIndex.getClusterExpansionZoom(params.clusterId));\n } catch (e) {\n callback(e);\n }\n }\n\n getClusterChildren(params: {clusterId: number}, callback: Callback>) {\n try {\n callback(null, this._geoJSONIndex.getChildren(params.clusterId));\n } catch (e) {\n callback(e);\n }\n }\n\n getClusterLeaves(params: {clusterId: number, limit: number, offset: number}, callback: Callback>) {\n try {\n callback(null, this._geoJSONIndex.getLeaves(params.clusterId, params.limit, params.offset));\n } catch (e) {\n callback(e);\n }\n }\n}\n\nfunction getSuperclusterOptions({superclusterOptions, clusterProperties}: LoadGeoJSONParameters) {\n if (!clusterProperties || !superclusterOptions) return superclusterOptions;\n\n const mapExpressions = {};\n const reduceExpressions = {};\n const globals = {accumulated: null, zoom: 0};\n const feature = {properties: null};\n const propertyNames = Object.keys(clusterProperties);\n\n for (const key of propertyNames) {\n const [operator, mapExpression] = clusterProperties[key];\n\n const mapExpressionParsed = createExpression(mapExpression);\n const reduceExpressionParsed = createExpression(\n typeof operator === 'string' ? [operator, ['accumulated'], ['get', key]] : operator);\n\n assert(mapExpressionParsed.result === 'success');\n assert(reduceExpressionParsed.result === 'success');\n\n mapExpressions[key] = mapExpressionParsed.value;\n reduceExpressions[key] = reduceExpressionParsed.value;\n }\n\n superclusterOptions.map = (pointProperties) => {\n feature.properties = pointProperties;\n const properties = {};\n for (const key of propertyNames) {\n properties[key] = mapExpressions[key].evaluate(globals, feature);\n }\n return properties;\n };\n superclusterOptions.reduce = (accumulated, clusterProperties) => {\n feature.properties = clusterProperties;\n for (const key of propertyNames) {\n globals.accumulated = accumulated[key];\n accumulated[key] = reduceExpressions[key].evaluate(globals, feature);\n }\n };\n\n return superclusterOptions;\n}\n\nexport default GeoJSONWorkerSource;\n","// @flow\n\nimport Actor from '../util/actor.js';\n\nimport StyleLayerIndex from '../style/style_layer_index.js';\nimport VectorTileWorkerSource from './vector_tile_worker_source.js';\nimport RasterDEMTileWorkerSource from './raster_dem_tile_worker_source.js';\nimport GeoJSONWorkerSource from './geojson_worker_source.js';\nimport assert from 'assert';\nimport {plugin as globalRTLTextPlugin} from './rtl_text_plugin.js';\nimport {enforceCacheSizeLimit} from '../util/tile_request_cache.js';\nimport {extend} from '../util/util.js';\nimport {PerformanceUtils} from '../util/performance.js';\nimport {Event} from '../util/evented.js';\nimport {getProjection} from '../geo/projection/index.js';\n\nimport type {\n WorkerSource,\n WorkerTileParameters,\n WorkerDEMTileParameters,\n WorkerTileCallback,\n WorkerDEMTileCallback,\n TileParameters\n} from '../source/worker_source.js';\n\nimport type {WorkerGlobalScopeInterface} from '../util/web_worker.js';\nimport type {Callback} from '../types/callback.js';\nimport type {LayerSpecification, ProjectionSpecification} from '../style-spec/types.js';\nimport type {PluginState} from './rtl_text_plugin.js';\nimport type Projection from '../geo/projection/projection.js';\n\n/**\n * @private\n */\nexport default class Worker {\n self: WorkerGlobalScopeInterface;\n actor: Actor;\n layerIndexes: {[_: string]: StyleLayerIndex };\n availableImages: {[_: string]: Array };\n workerSourceTypes: {[_: string]: Class };\n workerSources: {[_: string]: {[_: string]: {[_: string]: WorkerSource } } };\n demWorkerSources: {[_: string]: {[_: string]: RasterDEMTileWorkerSource } };\n projections: {[_: string]: Projection };\n defaultProjection: Projection;\n isSpriteLoaded: {[_: string]: boolean };\n referrer: ?string;\n terrain: ?boolean;\n\n constructor(self: WorkerGlobalScopeInterface) {\n PerformanceUtils.measure('workerEvaluateScript');\n this.self = self;\n this.actor = new Actor(self, this);\n\n this.layerIndexes = {};\n this.availableImages = {};\n this.isSpriteLoaded = {};\n\n this.projections = {};\n this.defaultProjection = getProjection({name: 'mercator'});\n\n this.workerSourceTypes = {\n vector: VectorTileWorkerSource,\n geojson: GeoJSONWorkerSource\n };\n\n // [mapId][sourceType][sourceName] => worker source instance\n this.workerSources = {};\n this.demWorkerSources = {};\n\n this.self.registerWorkerSource = (name: string, WorkerSource: Class) => {\n if (this.workerSourceTypes[name]) {\n throw new Error(`Worker source with name \"${name}\" already registered.`);\n }\n this.workerSourceTypes[name] = WorkerSource;\n };\n\n // This is invoked by the RTL text plugin when the download via the `importScripts` call has finished, and the code has been parsed.\n this.self.registerRTLTextPlugin = (rtlTextPlugin: {applyArabicShaping: Function, processBidirectionalText: Function, processStyledBidirectionalText?: Function}) => {\n if (globalRTLTextPlugin.isParsed()) {\n throw new Error('RTL text plugin already registered.');\n }\n globalRTLTextPlugin['applyArabicShaping'] = rtlTextPlugin.applyArabicShaping;\n globalRTLTextPlugin['processBidirectionalText'] = rtlTextPlugin.processBidirectionalText;\n globalRTLTextPlugin['processStyledBidirectionalText'] = rtlTextPlugin.processStyledBidirectionalText;\n };\n }\n\n clearCaches(mapId: string, unused: mixed, callback: WorkerTileCallback) {\n delete this.layerIndexes[mapId];\n delete this.availableImages[mapId];\n delete this.workerSources[mapId];\n delete this.demWorkerSources[mapId];\n callback();\n }\n\n checkIfReady(mapID: string, unused: mixed, callback: WorkerTileCallback) {\n // noop, used to check if a worker is fully set up and ready to receive messages\n callback();\n }\n\n setReferrer(mapID: string, referrer: string) {\n this.referrer = referrer;\n }\n\n spriteLoaded(mapId: string, bool: boolean) {\n this.isSpriteLoaded[mapId] = bool;\n for (const workerSource in this.workerSources[mapId]) {\n const ws = this.workerSources[mapId][workerSource];\n for (const source in ws) {\n if (ws[source] instanceof VectorTileWorkerSource) {\n ws[source].isSpriteLoaded = bool;\n ws[source].fire(new Event('isSpriteLoaded'));\n }\n }\n }\n }\n\n setImages(mapId: string, images: Array, callback: WorkerTileCallback) {\n this.availableImages[mapId] = images;\n for (const workerSource in this.workerSources[mapId]) {\n const ws = this.workerSources[mapId][workerSource];\n for (const source in ws) {\n ws[source].availableImages = images;\n }\n }\n callback();\n }\n\n enableTerrain(mapId: string, enable: boolean, callback: WorkerTileCallback) {\n this.terrain = enable;\n callback();\n }\n\n setProjection(mapId: string, config: ProjectionSpecification) {\n this.projections[mapId] = getProjection(config);\n }\n\n setLayers(mapId: string, layers: Array, callback: WorkerTileCallback) {\n this.getLayerIndex(mapId).replace(layers);\n callback();\n }\n\n updateLayers(mapId: string, params: {layers: Array, removedIds: Array}, callback: WorkerTileCallback) {\n this.getLayerIndex(mapId).update(params.layers, params.removedIds);\n callback();\n }\n\n loadTile(mapId: string, params: WorkerTileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n // $FlowFixMe[method-unbinding]\n const p = this.enableTerrain ? extend({enableTerrain: this.terrain}, params) : params;\n p.projection = this.projections[mapId] || this.defaultProjection;\n this.getWorkerSource(mapId, params.type, params.source).loadTile(p, callback);\n }\n\n loadDEMTile(mapId: string, params: WorkerDEMTileParameters, callback: WorkerDEMTileCallback) {\n // $FlowFixMe[method-unbinding]\n const p = this.enableTerrain ? extend({buildQuadTree: this.terrain}, params) : params;\n this.getDEMWorkerSource(mapId, params.source).loadTile(p, callback);\n }\n\n reloadTile(mapId: string, params: WorkerTileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n // $FlowFixMe[method-unbinding]\n const p = this.enableTerrain ? extend({enableTerrain: this.terrain}, params) : params;\n p.projection = this.projections[mapId] || this.defaultProjection;\n this.getWorkerSource(mapId, params.type, params.source).reloadTile(p, callback);\n }\n\n abortTile(mapId: string, params: TileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n this.getWorkerSource(mapId, params.type, params.source).abortTile(params, callback);\n }\n\n removeTile(mapId: string, params: TileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n this.getWorkerSource(mapId, params.type, params.source).removeTile(params, callback);\n }\n\n removeSource(mapId: string, params: {source: string} & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n assert(params.source);\n\n if (!this.workerSources[mapId] ||\n !this.workerSources[mapId][params.type] ||\n !this.workerSources[mapId][params.type][params.source]) {\n return;\n }\n\n const worker = this.workerSources[mapId][params.type][params.source];\n delete this.workerSources[mapId][params.type][params.source];\n\n if (worker.removeSource !== undefined) {\n worker.removeSource(params, callback);\n } else {\n callback();\n }\n }\n\n /**\n * Load a {@link WorkerSource} script at params.url. The script is run\n * (using importScripts) with `registerWorkerSource` in scope, which is a\n * function taking `(name, workerSourceObject)`.\n * @private\n */\n loadWorkerSource(map: string, params: { url: string }, callback: Callback) {\n try {\n this.self.importScripts(params.url);\n callback();\n } catch (e) {\n callback(e.toString());\n }\n }\n\n syncRTLPluginState(map: string, state: PluginState, callback: Callback) {\n try {\n globalRTLTextPlugin.setState(state);\n const pluginURL = globalRTLTextPlugin.getPluginURL();\n if (\n globalRTLTextPlugin.isLoaded() &&\n !globalRTLTextPlugin.isParsed() &&\n pluginURL != null // Not possible when `isLoaded` is true, but keeps flow happy\n ) {\n this.self.importScripts(pluginURL);\n const complete = globalRTLTextPlugin.isParsed();\n const error = complete ? undefined : new Error(`RTL Text Plugin failed to import scripts from ${pluginURL}`);\n callback(error, complete);\n }\n } catch (e) {\n callback(e.toString());\n }\n }\n\n getAvailableImages(mapId: string): Array {\n let availableImages = this.availableImages[mapId];\n\n if (!availableImages) {\n availableImages = [];\n }\n\n return availableImages;\n }\n\n getLayerIndex(mapId: string): StyleLayerIndex {\n let layerIndexes = this.layerIndexes[mapId];\n if (!layerIndexes) {\n layerIndexes = this.layerIndexes[mapId] = new StyleLayerIndex();\n }\n return layerIndexes;\n }\n\n getWorkerSource(mapId: string, type: string, source: string): WorkerSource {\n if (!this.workerSources[mapId])\n this.workerSources[mapId] = {};\n if (!this.workerSources[mapId][type])\n this.workerSources[mapId][type] = {};\n\n if (!this.workerSources[mapId][type][source]) {\n // use a wrapped actor so that we can attach a target mapId param\n // to any messages invoked by the WorkerSource\n const actor = {\n send: (type: string, data: mixed, callback: any, _: any, mustQueue: boolean, metadata: any) => {\n this.actor.send(type, data, callback, mapId, mustQueue, metadata);\n },\n scheduler: this.actor.scheduler\n };\n this.workerSources[mapId][type][source] = new (this.workerSourceTypes[type]: any)((actor: any), this.getLayerIndex(mapId), this.getAvailableImages(mapId), this.isSpriteLoaded[mapId]);\n }\n\n return this.workerSources[mapId][type][source];\n }\n\n getDEMWorkerSource(mapId: string, source: string): RasterDEMTileWorkerSource {\n if (!this.demWorkerSources[mapId])\n this.demWorkerSources[mapId] = {};\n\n if (!this.demWorkerSources[mapId][source]) {\n this.demWorkerSources[mapId][source] = new RasterDEMTileWorkerSource();\n }\n\n return this.demWorkerSources[mapId][source];\n }\n\n enforceCacheSizeLimit(mapId: string, limit: number) {\n enforceCacheSizeLimit(limit);\n }\n\n getWorkerPerformanceMetrics(mapId: string, params: any, callback: (error: ?Error, result: ?Object) => void) {\n callback(undefined, PerformanceUtils.getWorkerPerformanceMetrics());\n }\n}\n\n/* global self, WorkerGlobalScope */\nif (typeof WorkerGlobalScope !== 'undefined' &&\n typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope) {\n // $FlowFixMe[prop-missing]\n self.worker = new Worker(self);\n}\n","// @flow\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a: ?mixed, b: ?mixed): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}\n\nexport default deepEqual;\n","'use strict';\n\nexports.supported = isSupported;\nexports.notSupportedReason = notSupportedReason;\n\n/**\n * Test whether the current browser supports Mapbox GL JS\n * @param {Object} options\n * @param {boolean} [options.failIfMajorPerformanceCaveat=false] Return `false`\n * if the performance of Mapbox GL JS would be dramatically worse than\n * expected (i.e. a software renderer is would be used)\n * @return {boolean}\n */\nfunction isSupported(options) {\n return !notSupportedReason(options);\n}\n\nfunction notSupportedReason(options) {\n if (!isBrowser()) return 'not a browser';\n if (!isArraySupported()) return 'insufficent Array support';\n if (!isFunctionSupported()) return 'insufficient Function support';\n if (!isObjectSupported()) return 'insufficient Object support';\n if (!isJSONSupported()) return 'insufficient JSON support';\n if (!isWorkerSupported()) return 'insufficient worker support';\n if (!isUint8ClampedArraySupported()) return 'insufficient Uint8ClampedArray support';\n if (!isArrayBufferSupported()) return 'insufficient ArrayBuffer support';\n if (!isCanvasGetImageDataSupported()) return 'insufficient Canvas/getImageData support';\n if (!isWebGLSupportedCached(options && options.failIfMajorPerformanceCaveat)) return 'insufficient WebGL support';\n if (!isNotIE()) return 'insufficient ECMAScript 6 support';\n}\n\nfunction isBrowser() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction isArraySupported() {\n return (\n Array.prototype &&\n Array.prototype.every &&\n Array.prototype.filter &&\n Array.prototype.forEach &&\n Array.prototype.indexOf &&\n Array.prototype.lastIndexOf &&\n Array.prototype.map &&\n Array.prototype.some &&\n Array.prototype.reduce &&\n Array.prototype.reduceRight &&\n Array.isArray\n );\n}\n\nfunction isFunctionSupported() {\n return Function.prototype && Function.prototype.bind;\n}\n\nfunction isObjectSupported() {\n return (\n Object.keys &&\n Object.create &&\n Object.getPrototypeOf &&\n Object.getOwnPropertyNames &&\n Object.isSealed &&\n Object.isFrozen &&\n Object.isExtensible &&\n Object.getOwnPropertyDescriptor &&\n Object.defineProperty &&\n Object.defineProperties &&\n Object.seal &&\n Object.freeze &&\n Object.preventExtensions\n );\n}\n\nfunction isJSONSupported() {\n return 'JSON' in window && 'parse' in JSON && 'stringify' in JSON;\n}\n\nfunction isWorkerSupported() {\n if (!('Worker' in window && 'Blob' in window && 'URL' in window)) {\n return false;\n }\n\n var blob = new Blob([''], { type: 'text/javascript' });\n var workerURL = URL.createObjectURL(blob);\n var supported;\n var worker;\n\n try {\n worker = new Worker(workerURL);\n supported = true;\n } catch (e) {\n supported = false;\n }\n\n if (worker) {\n worker.terminate();\n }\n URL.revokeObjectURL(workerURL);\n\n return supported;\n}\n\n// IE11 only supports `Uint8ClampedArray` as of version\n// [KB2929437](https://support.microsoft.com/en-us/kb/2929437)\nfunction isUint8ClampedArraySupported() {\n return 'Uint8ClampedArray' in window;\n}\n\n// https://github.com/mapbox/mapbox-gl-supported/issues/19\nfunction isArrayBufferSupported() {\n return ArrayBuffer.isView;\n}\n\n// Some browsers or browser extensions block access to canvas data to prevent fingerprinting.\n// Mapbox GL uses this API to load sprites and images in general.\nfunction isCanvasGetImageDataSupported() {\n var canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n var context = canvas.getContext('2d');\n if (!context) {\n return false;\n }\n var imageData = context.getImageData(0, 0, 1, 1);\n return imageData && imageData.width === canvas.width;\n}\n\nvar isWebGLSupportedCache = {};\nfunction isWebGLSupportedCached(failIfMajorPerformanceCaveat) {\n\n if (isWebGLSupportedCache[failIfMajorPerformanceCaveat] === undefined) {\n isWebGLSupportedCache[failIfMajorPerformanceCaveat] = isWebGLSupported(failIfMajorPerformanceCaveat);\n }\n\n return isWebGLSupportedCache[failIfMajorPerformanceCaveat];\n}\n\nisSupported.webGLContextAttributes = {\n antialias: false,\n alpha: true,\n stencil: true,\n depth: true\n};\n\nfunction getWebGLContext(failIfMajorPerformanceCaveat) {\n var canvas = document.createElement('canvas');\n\n var attributes = Object.create(isSupported.webGLContextAttributes);\n attributes.failIfMajorPerformanceCaveat = failIfMajorPerformanceCaveat;\n\n return (\n canvas.getContext('webgl', attributes) ||\n canvas.getContext('experimental-webgl', attributes)\n );\n}\n\nfunction isWebGLSupported(failIfMajorPerformanceCaveat) {\n var gl = getWebGLContext(failIfMajorPerformanceCaveat);\n if (!gl) {\n return false;\n }\n\n // Try compiling a shader and get its compile status. Some browsers like Brave block this API\n // to prevent fingerprinting. Unfortunately, this also means that Mapbox GL won't work.\n var shader;\n try {\n shader = gl.createShader(gl.VERTEX_SHADER);\n } catch (e) {\n // some older browsers throw an exception that `createShader` is not defined\n // so handle this separately from the case where browsers block `createShader`\n // for security reasons\n return false;\n }\n\n if (!shader || gl.isContextLost()) {\n return false;\n }\n gl.shaderSource(shader, 'void main() {}');\n gl.compileShader(shader);\n return gl.getShaderParameter(shader, gl.COMPILE_STATUS) === true;\n}\n\nfunction isNotIE() {\n return !document.documentMode;\n}\n","// @flow strict\n\nimport Point from '@mapbox/point-geometry';\n\nimport window from './window.js';\nimport assert from 'assert';\n\n// refine the return type based on tagName, e.g. 'button' -> HTMLButtonElement\n// $FlowFixMe[method-unbinding]\nexport function create(tagName: T, className: ?string, container?: HTMLElement): $Call {\n const el = window.document.createElement(tagName);\n if (className !== undefined) el.className = className;\n if (container) container.appendChild(el);\n return el;\n}\n\nexport function createSVG(tagName: string, attributes: {[string]: string | number}, container?: Element): Element {\n const el = window.document.createElementNS('http://www.w3.org/2000/svg', tagName);\n for (const name of Object.keys(attributes)) {\n el.setAttributeNS(null, name, attributes[name]);\n }\n if (container) container.appendChild(el);\n return el;\n}\n\nconst docStyle = window.document && window.document.documentElement.style;\nconst selectProp = docStyle && docStyle.userSelect !== undefined ? 'userSelect' : 'WebkitUserSelect';\nlet userSelect;\n\nexport function disableDrag() {\n if (docStyle && selectProp) {\n userSelect = docStyle[selectProp];\n docStyle[selectProp] = 'none';\n }\n}\n\nexport function enableDrag() {\n if (docStyle && selectProp) {\n docStyle[selectProp] = userSelect;\n }\n}\n\n// Suppress the next click, but only if it's immediate.\nfunction suppressClickListener(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n window.removeEventListener('click', suppressClickListener, true);\n}\n\nexport function suppressClick() {\n window.addEventListener('click', suppressClickListener, true);\n window.setTimeout(() => {\n window.removeEventListener('click', suppressClickListener, true);\n }, 0);\n}\n\nexport function mousePos(el: HTMLElement, e: MouseEvent | WheelEvent): Point {\n const rect = el.getBoundingClientRect();\n return getScaledPoint(el, rect, e);\n}\n\nexport function touchPos(el: HTMLElement, touches: TouchList): Array {\n const rect = el.getBoundingClientRect(),\n points = [];\n\n for (let i = 0; i < touches.length; i++) {\n points.push(getScaledPoint(el, rect, touches[i]));\n }\n return points;\n}\n\nexport function mouseButton(e: MouseEvent): number {\n assert(e.type === 'mousedown' || e.type === 'mouseup');\n if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey &&\n window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) {\n // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131:\n // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when\n // using Control + left click\n return 0;\n }\n return e.button;\n}\n\nfunction getScaledPoint(el: HTMLElement, rect: ClientRect, e: MouseEvent | WheelEvent | Touch) {\n // Until we get support for pointer events (https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent)\n // we use this dirty trick which would not work for the case of rotated transforms, but works well for\n // the case of simple scaling.\n // Note: `el.offsetWidth === rect.width` eliminates the `0/0` case.\n const scaling = el.offsetWidth === rect.width ? 1 : el.offsetWidth / rect.width;\n return new Point(\n (e.clientX - rect.left) * scaling,\n (e.clientY - rect.top) * scaling\n );\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nexport function fromValues(m00, m01, m10, m11) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nexport function set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nexport function LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nexport var sub = subtract;","// @flow\n\nimport {RGBAImage} from '../util/image.js';\n\nimport type Map from '../ui/map.js';\n\nexport type StyleImageData = {\n data: RGBAImage,\n version: number,\n hasRenderCallback?: boolean,\n userImage?: StyleImageInterface\n};\n\nexport type StyleImageMetadata = {\n pixelRatio: number,\n sdf: boolean,\n stretchX?: Array<[number, number]>,\n stretchY?: Array<[number, number]>,\n content?: [number, number, number, number]\n};\n\nexport type StyleImage = StyleImageData & StyleImageMetadata;\n\nexport type StyleImageInterface = {\n width: number,\n height: number,\n data: Uint8Array | Uint8ClampedArray,\n render?: () => boolean,\n onAdd?: (map: Map, id: string) => void,\n onRemove?: () => void\n};\n\nexport function renderStyleImage(image: StyleImage): boolean {\n const {userImage} = image;\n if (userImage && userImage.render) {\n const updated = userImage.render();\n if (updated) {\n image.data.replace(new Uint8Array(userImage.data.buffer));\n return true;\n }\n }\n return false;\n}\n\n/**\n * Interface for dynamically generated style images. This is a specification for\n * implementers to model: it is not an exported method or class.\n *\n * Images implementing this interface can be redrawn for every frame. They can be used to animate\n * icons and patterns or make them respond to user input. Style images can implement a\n * {@link StyleImageInterface#render} method. The method is called every frame and\n * can be used to update the image.\n *\n * @interface StyleImageInterface\n * @property {number} width Width in pixels.\n * @property {number} height Height in pixels.\n * @property {Uint8Array | Uint8ClampedArray} data Byte array representing the image. To ensure space for all four channels in an RGBA color, size must be width × height × 4.\n *\n * @see [Example: Add an animated icon to the map.](https://docs.mapbox.com/mapbox-gl-js/example/add-image-animated/)\n *\n * @example\n * const flashingSquare = {\n * width: 64,\n * height: 64,\n * data: new Uint8Array(64 * 64 * 4),\n *\n * onAdd(map) {\n * this.map = map;\n * },\n *\n * render() {\n * // keep repainting while the icon is on the map\n * this.map.triggerRepaint();\n *\n * // alternate between black and white based on the time\n * const value = Math.round(Date.now() / 1000) % 2 === 0 ? 255 : 0;\n *\n * // check if image needs to be changed\n * if (value !== this.previousValue) {\n * this.previousValue = value;\n *\n * const bytesPerPixel = 4;\n * for (let x = 0; x < this.width; x++) {\n * for (let y = 0; y < this.height; y++) {\n * const offset = (y * this.width + x) * bytesPerPixel;\n * this.data[offset + 0] = value;\n * this.data[offset + 1] = value;\n * this.data[offset + 2] = value;\n * this.data[offset + 3] = 255;\n * }\n * }\n *\n * // return true to indicate that the image changed\n * return true;\n * }\n * }\n * };\n *\n * map.addImage('flashing_square', flashingSquare);\n */\n\n/**\n * This method is called once before every frame where the icon will be used.\n * The method can optionally update the image's `data` member with a new image.\n *\n * If the method updates the image it must return `true` to commit the change.\n * If the method returns `false` or nothing the image is assumed to not have changed.\n *\n * If updates are infrequent it maybe easier to use {@link Map#updateImage} to update\n * the image instead of implementing this method.\n *\n * @function\n * @memberof StyleImageInterface\n * @instance\n * @name render\n * @return {boolean} `true` if this method updated the image. `false` if the image was not changed.\n */\n\n/**\n * Optional method called when the layer has been added to the Map with {@link Map#addImage}.\n *\n * @function\n * @memberof StyleImageInterface\n * @instance\n * @name onAdd\n * @param {Map} map The Map this custom layer was just added to.\n */\n\n/**\n * Optional method called when the icon is removed from the map with {@link Map#removeImage}.\n * This gives the image a chance to clean up resources and event listeners.\n *\n * @function\n * @memberof StyleImageInterface\n * @instance\n * @name onRemove\n */\n","// @flow\n\nimport potpack from 'potpack';\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport {RGBAImage} from '../util/image.js';\nimport {ImagePosition} from './image_atlas.js';\nimport Texture from './texture.js';\nimport assert from 'assert';\nimport {renderStyleImage} from '../style/style_image.js';\nimport {warnOnce} from '../util/util.js';\n\nimport type {StyleImage} from '../style/style_image.js';\nimport type Context from '../gl/context.js';\nimport type {Bin} from 'potpack';\nimport type {Callback} from '../types/callback.js';\nimport type {Size} from '../util/image.js';\n\ntype Pattern = {\n bin: Bin,\n position: ImagePosition\n};\n\n// When copied into the atlas texture, image data is padded by one pixel on each side. Icon\n// images are padded with fully transparent pixels, while pattern images are padded with a\n// copy of the image data wrapped from the opposite side. In both cases, this ensures the\n// correct behavior of GL_LINEAR texture sampling mode.\nconst padding = 1;\n\n/*\n ImageManager does three things:\n\n 1. Tracks requests for icon images from tile workers and sends responses when the requests are fulfilled.\n 2. Builds a texture atlas for pattern images.\n 3. Rerenders renderable images once per frame\n\n These are disparate responsibilities and should eventually be handled by different classes. When we implement\n data-driven support for `*-pattern`, we'll likely use per-bucket pattern atlases, and that would be a good time\n to refactor this.\n*/\nclass ImageManager extends Evented {\n images: {[_: string]: StyleImage};\n updatedImages: {[_: string]: boolean};\n callbackDispatchedThisFrame: {[_: string]: boolean};\n loaded: boolean;\n requestors: Array<{ids: Array, callback: Callback<{[_: string]: StyleImage}>}>;\n\n patterns: {[_: string]: Pattern};\n atlasImage: RGBAImage;\n atlasTexture: ?Texture;\n dirty: boolean;\n\n constructor() {\n super();\n this.images = {};\n this.updatedImages = {};\n this.callbackDispatchedThisFrame = {};\n this.loaded = false;\n this.requestors = [];\n\n this.patterns = {};\n this.atlasImage = new RGBAImage({width: 1, height: 1});\n this.dirty = true;\n }\n\n isLoaded(): boolean {\n return this.loaded;\n }\n\n setLoaded(loaded: boolean) {\n if (this.loaded === loaded) {\n return;\n }\n\n this.loaded = loaded;\n\n if (loaded) {\n for (const {ids, callback} of this.requestors) {\n this._notify(ids, callback);\n }\n this.requestors = [];\n }\n }\n\n hasImage(id: string): boolean {\n return !!this.getImage(id);\n }\n\n getImage(id: string): ?StyleImage {\n return this.images[id];\n }\n\n addImage(id: string, image: StyleImage) {\n assert(!this.images[id]);\n if (this._validate(id, image)) {\n this.images[id] = image;\n }\n }\n\n _validate(id: string, image: StyleImage): boolean {\n let valid = true;\n if (!this._validateStretch(image.stretchX, image.data && image.data.width)) {\n this.fire(new ErrorEvent(new Error(`Image \"${id}\" has invalid \"stretchX\" value`)));\n valid = false;\n }\n if (!this._validateStretch(image.stretchY, image.data && image.data.height)) {\n this.fire(new ErrorEvent(new Error(`Image \"${id}\" has invalid \"stretchY\" value`)));\n valid = false;\n }\n if (!this._validateContent(image.content, image)) {\n this.fire(new ErrorEvent(new Error(`Image \"${id}\" has invalid \"content\" value`)));\n valid = false;\n }\n return valid;\n }\n\n _validateStretch(stretch: ?Array<[number, number]> | void, size: number): boolean {\n if (!stretch) return true;\n let last = 0;\n for (const part of stretch) {\n if (part[0] < last || part[1] < part[0] || size < part[1]) return false;\n last = part[1];\n }\n return true;\n }\n\n _validateContent(content: ?[number, number, number, number] | void, image: StyleImage): boolean {\n if (!content) return true;\n if (content.length !== 4) return false;\n if (content[0] < 0 || image.data.width < content[0]) return false;\n if (content[1] < 0 || image.data.height < content[1]) return false;\n if (content[2] < 0 || image.data.width < content[2]) return false;\n if (content[3] < 0 || image.data.height < content[3]) return false;\n if (content[2] < content[0]) return false;\n if (content[3] < content[1]) return false;\n return true;\n }\n\n updateImage(id: string, image: StyleImage) {\n const oldImage = this.images[id];\n assert(oldImage);\n assert(oldImage.data.width === image.data.width);\n assert(oldImage.data.height === image.data.height);\n image.version = oldImage.version + 1;\n this.images[id] = image;\n this.updatedImages[id] = true;\n }\n\n removeImage(id: string) {\n assert(this.images[id]);\n const image = this.images[id];\n delete this.images[id];\n delete this.patterns[id];\n\n if (image.userImage && image.userImage.onRemove) {\n image.userImage.onRemove();\n }\n }\n\n listImages(): Array {\n return Object.keys(this.images);\n }\n\n getImages(ids: Array, callback: Callback<{[_: string]: StyleImage}>) {\n // If the sprite has been loaded, or if all the icon dependencies are already present\n // (i.e. if they've been added via runtime styling), then notify the requestor immediately.\n // Otherwise, delay notification until the sprite is loaded. At that point, if any of the\n // dependencies are still unavailable, we'll just assume they are permanently missing.\n let hasAllDependencies = true;\n if (!this.isLoaded()) {\n for (const id of ids) {\n if (!this.images[id]) {\n hasAllDependencies = false;\n }\n }\n }\n if (this.isLoaded() || hasAllDependencies) {\n this._notify(ids, callback);\n } else {\n this.requestors.push({ids, callback});\n }\n }\n\n _notify(ids: Array, callback: Callback<{[_: string]: StyleImage}>) {\n const response = {};\n\n for (const id of ids) {\n if (!this.images[id]) {\n this.fire(new Event('styleimagemissing', {id}));\n }\n const image = this.images[id];\n if (image) {\n // Clone the image so that our own copy of its ArrayBuffer doesn't get transferred.\n response[id] = {\n data: image.data.clone(),\n pixelRatio: image.pixelRatio,\n sdf: image.sdf,\n version: image.version,\n stretchX: image.stretchX,\n stretchY: image.stretchY,\n content: image.content,\n hasRenderCallback: Boolean(image.userImage && image.userImage.render)\n };\n } else {\n warnOnce(`Image \"${id}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);\n }\n }\n\n callback(null, response);\n }\n\n // Pattern stuff\n\n getPixelSize(): Size {\n const {width, height} = this.atlasImage;\n return {width, height};\n }\n\n getPattern(id: string): ?ImagePosition {\n const pattern = this.patterns[id];\n\n const image = this.getImage(id);\n if (!image) {\n return null;\n }\n\n if (pattern && pattern.position.version === image.version) {\n return pattern.position;\n }\n\n if (!pattern) {\n const w = image.data.width + padding * 2;\n const h = image.data.height + padding * 2;\n const bin = {w, h, x: 0, y: 0};\n const position = new ImagePosition(bin, image);\n this.patterns[id] = {bin, position};\n } else {\n pattern.position.version = image.version;\n }\n\n this._updatePatternAtlas();\n\n return this.patterns[id].position;\n }\n\n bind(context: Context) {\n const gl = context.gl;\n if (!this.atlasTexture) {\n this.atlasTexture = new Texture(context, this.atlasImage, gl.RGBA);\n } else if (this.dirty) {\n this.atlasTexture.update(this.atlasImage);\n this.dirty = false;\n }\n\n if (!this.atlasTexture) return; // Flow can't infer that atlasTexture is defined here\n this.atlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n }\n\n _updatePatternAtlas() {\n const bins = [];\n for (const id in this.patterns) {\n bins.push(this.patterns[id].bin);\n }\n\n const {w, h} = potpack(bins);\n\n const dst = this.atlasImage;\n dst.resize({width: w || 1, height: h || 1});\n\n for (const id in this.patterns) {\n const {bin} = this.patterns[id];\n const x = bin.x + padding;\n const y = bin.y + padding;\n const src = this.images[id].data;\n const w = src.width;\n const h = src.height;\n\n RGBAImage.copy(src, dst, {x: 0, y: 0}, {x, y}, {width: w, height: h});\n\n // Add 1 pixel wrapped padding on each side of the image.\n RGBAImage.copy(src, dst, {x: 0, y: h - 1}, {x, y: y - 1}, {width: w, height: 1}); // T\n RGBAImage.copy(src, dst, {x: 0, y: 0}, {x, y: y + h}, {width: w, height: 1}); // B\n RGBAImage.copy(src, dst, {x: w - 1, y: 0}, {x: x - 1, y}, {width: 1, height: h}); // L\n RGBAImage.copy(src, dst, {x: 0, y: 0}, {x: x + w, y}, {width: 1, height: h}); // R\n }\n\n this.dirty = true;\n }\n\n beginFrame() {\n this.callbackDispatchedThisFrame = {};\n }\n\n dispatchRenderCallbacks(ids: Array) {\n for (const id of ids) {\n\n // the callback for the image was already dispatched for a different frame\n if (this.callbackDispatchedThisFrame[id]) continue;\n this.callbackDispatchedThisFrame[id] = true;\n\n const image = this.images[id];\n assert(image);\n\n const updated = renderStyleImage(image);\n if (updated) {\n this.updateImage(id, image);\n }\n }\n }\n}\n\nexport default ImageManager;\n","// @flow\n\nimport styleSpec from '../style-spec/reference/latest.js';\n\nimport {endsWith, extend, degToRad} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport {\n validateStyle,\n validateLight,\n emitValidationErrors\n} from './validate_style.js';\nimport Color from '../style-spec/util/color.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js';\n\nimport type {StylePropertySpecification} from '../style-spec/style-spec.js';\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {StyleSetterOptions} from '../style/style.js';\nimport type {\n Property,\n PropertyValue,\n TransitionParameters\n} from './properties.js';\n\nimport type {LightSpecification} from '../style-spec/types.js';\n\nexport type LightPosition = {\n x: number,\n y: number,\n z: number,\n azimuthal: number,\n polar: number,\n};\n\n/**\n * Converts spherical coordinates to cartesian LightPosition coordinates.\n *\n * @private\n * @param spherical Spherical coordinates, in [radial, azimuthal, polar]\n * @return LightPosition cartesian coordinates\n */\nexport function sphericalToCartesian([r, azimuthal, polar]: [number, number, number]): LightPosition {\n // We abstract \"north\"/\"up\" (compass-wise) to be 0° when really this is 90° (π/2):\n // correct for that here\n const a = degToRad(azimuthal + 90), p = degToRad(polar);\n\n return {\n x: r * Math.cos(a) * Math.sin(p),\n y: r * Math.sin(a) * Math.sin(p),\n z: r * Math.cos(p),\n azimuthal, polar\n };\n}\n\nclass LightPositionProperty implements Property<[number, number, number], LightPosition> {\n specification: StylePropertySpecification;\n\n constructor() {\n this.specification = styleSpec.light.position;\n }\n\n possiblyEvaluate(value: PropertyValue<[number, number, number], LightPosition>, parameters: EvaluationParameters): LightPosition {\n // $FlowFixMe[method-unbinding]\n return sphericalToCartesian(value.expression.evaluate(parameters));\n }\n\n interpolate(a: LightPosition, b: LightPosition, t: number): LightPosition {\n return {\n x: interpolate(a.x, b.x, t),\n y: interpolate(a.y, b.y, t),\n z: interpolate(a.z, b.z, t),\n azimuthal: interpolate(a.azimuthal, b.azimuthal, t),\n polar: interpolate(a.polar, b.polar, t),\n };\n }\n}\n\ntype Props = {|\n \"anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"position\": LightPositionProperty,\n \"color\": DataConstantProperty,\n \"intensity\": DataConstantProperty,\n|};\n\nconst properties: Properties = new Properties({\n \"anchor\": new DataConstantProperty(styleSpec.light.anchor),\n \"position\": new LightPositionProperty(),\n \"color\": new DataConstantProperty(styleSpec.light.color),\n \"intensity\": new DataConstantProperty(styleSpec.light.intensity),\n});\n\nconst TRANSITION_SUFFIX = '-transition';\n\n/*\n * Represents the light used to light extruded features.\n */\nclass Light extends Evented {\n _transitionable: Transitionable;\n _transitioning: Transitioning;\n properties: PossiblyEvaluated;\n\n constructor(lightOptions?: LightSpecification) {\n super();\n this._transitionable = new Transitionable(properties);\n this.setLight(lightOptions);\n this._transitioning = this._transitionable.untransitioned();\n }\n\n getLight(): LightSpecification {\n return (this._transitionable.serialize(): any);\n }\n\n setLight(light?: LightSpecification, options: StyleSetterOptions = {}) {\n if (this._validate(validateLight, light, options)) {\n return;\n }\n\n for (const name in light) {\n const value = light[name];\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n } else {\n this._transitionable.setValue(name, value);\n }\n }\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n }\n\n hasTransition(): boolean {\n return this._transitioning.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters) {\n this.properties = this._transitioning.possiblyEvaluate(parameters);\n }\n\n _validate(validate: Function, value: mixed, options?: {validate?: boolean}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n\n return emitValidationErrors(this, validate.call(validateStyle, extend({\n value,\n // Workaround for https://github.com/mapbox/mapbox-gl-js/issues/2407\n style: {glyphs: true, sprite: true},\n styleSpec\n })));\n }\n}\n\nexport default Light;\n","// @flow\n\nimport styleSpec from '../style-spec/reference/latest.js';\nimport {endsWith} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js';\n\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {TransitionParameters} from './properties.js';\nimport type {TerrainSpecification} from '../style-spec/types.js';\n\ntype Props = {|\n \"source\": DataConstantProperty,\n \"exaggeration\": DataConstantProperty,\n|};\n\nexport const DrapeRenderMode = {\n deferred: 0,\n elevated: 1\n};\n\nconst properties: Properties = new Properties({\n \"source\": new DataConstantProperty(styleSpec.terrain.source),\n \"exaggeration\": new DataConstantProperty(styleSpec.terrain.exaggeration),\n});\n\nconst TRANSITION_SUFFIX = '-transition';\n\nclass Terrain extends Evented {\n _transitionable: Transitionable;\n _transitioning: Transitioning;\n properties: PossiblyEvaluated;\n drapeRenderMode: number;\n\n constructor(terrainOptions: TerrainSpecification, drapeRenderMode: number) {\n super();\n this._transitionable = new Transitionable(properties);\n this.set(terrainOptions);\n this._transitioning = this._transitionable.untransitioned();\n this.drapeRenderMode = drapeRenderMode;\n }\n\n get(): TerrainSpecification {\n return (this._transitionable.serialize(): any);\n }\n\n set(terrain: TerrainSpecification) {\n for (const name in terrain) {\n const value = terrain[name];\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n } else {\n this._transitionable.setValue(name, value);\n }\n }\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n }\n\n hasTransition(): boolean {\n return this._transitioning.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters) {\n this.properties = this._transitioning.possiblyEvaluate(parameters);\n }\n}\n\nexport default Terrain;\n","// @flow\nimport {vec3} from 'gl-matrix';\nimport MercatorCoordinate from '../geo/mercator_coordinate.js';\nimport {smoothstep} from '../util/util.js';\nimport type LngLat from '../geo/lng_lat.js';\nimport type {UnwrappedTileID} from '../source/tile_id.js';\nimport type Transform from '../geo/transform.js';\n\nexport const FOG_PITCH_START = 45;\nexport const FOG_PITCH_END = 65;\nexport const FOG_SYMBOL_CLIPPING_THRESHOLD = 0.9;\n\nexport type FogState = {\n range: [number, number],\n horizonBlend: number,\n alpha: number\n};\n\n// As defined in _prelude_fog.fragment.glsl#fog_opacity\nexport function getFogOpacity(state: FogState, pos: Array, pitch: number, fov: number): number {\n const fogPitchOpacity = smoothstep(FOG_PITCH_START, FOG_PITCH_END, pitch);\n const [start, end] = getFovAdjustedFogRange(state, fov);\n\n // The output of this function must match _prelude_fog.fragment.glsl\n // For further details, refer to the implementation in the shader code\n const decay = 6;\n const depth = vec3.length(pos);\n const fogRange = (depth - start) / (end - start);\n let falloff = 1.0 - Math.min(1, Math.exp(-decay * fogRange));\n\n falloff *= falloff * falloff;\n falloff = Math.min(1.0, 1.00747 * falloff);\n\n return falloff * fogPitchOpacity * state.alpha;\n}\n\nexport function getFovAdjustedFogRange(state: FogState, fov: number): [number, number] {\n // This function computes a shifted fog range so that the appearance is unchanged\n // when the fov changes. We define range=0 starting at the camera position given\n // the default fov. We avoid starting the fog range at the camera center so that\n // ranges aren't generally negative unless the FOV is modified.\n const shift = 0.5 / Math.tan(fov * 0.5);\n return [state.range[0] + shift, state.range[1] + shift];\n}\n\nexport function getFogOpacityAtTileCoord(state: FogState, x: number, y: number, z: number, tileId: UnwrappedTileID, transform: Transform): number {\n const mat = transform.calculateFogTileMatrix(tileId);\n const pos = [x, y, z];\n vec3.transformMat4(pos, pos, mat);\n\n return getFogOpacity(state, pos, transform.pitch, transform._fov);\n}\n\nexport function getFogOpacityAtLngLat(state: FogState, lngLat: LngLat, transform: Transform): number {\n const meters = MercatorCoordinate.fromLngLat(lngLat);\n const elevation = transform.elevation ? transform.elevation.getAtPointOrZero(meters) : 0;\n const pos = [meters.x, meters.y, elevation];\n vec3.transformMat4(pos, pos, transform.mercatorFogMatrix);\n\n return getFogOpacity(state, pos, transform.pitch, transform._fov);\n}\n","// @flow\n\nimport styleSpec from '../style-spec/reference/latest.js';\nimport {endsWith, extend, smoothstep} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport {validateStyle, validateFog, emitValidationErrors} from './validate_style.js';\nimport {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js';\nimport Color from '../style-spec/util/color.js';\nimport {FOG_PITCH_START, FOG_PITCH_END, getFogOpacityAtLngLat, getFovAdjustedFogRange} from './fog_helpers.js';\nimport type {FogSpecification} from '../style-spec/types.js';\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {TransitionParameters} from './properties.js';\nimport type LngLat from '../geo/lng_lat.js';\nimport type Transform from '../geo/transform.js';\nimport type {StyleSetterOptions} from '../style/style.js';\nimport type {FogState} from './fog_helpers.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\ntype Props = {|\n \"range\": DataConstantProperty<[number, number]>,\n \"color\": DataConstantProperty,\n \"high-color\": DataConstantProperty,\n \"space-color\": DataConstantProperty,\n \"horizon-blend\": DataConstantProperty,\n \"star-intensity\": DataConstantProperty,\n|};\n\nconst fogProperties: Properties = new Properties({\n \"range\": new DataConstantProperty(styleSpec.fog.range),\n \"color\": new DataConstantProperty(styleSpec.fog.color),\n \"high-color\": new DataConstantProperty(styleSpec.fog[\"high-color\"]),\n \"space-color\": new DataConstantProperty(styleSpec.fog[\"space-color\"]),\n \"horizon-blend\": new DataConstantProperty(styleSpec.fog[\"horizon-blend\"]),\n \"star-intensity\": new DataConstantProperty(styleSpec.fog[\"star-intensity\"]),\n});\n\nconst TRANSITION_SUFFIX = '-transition';\n\nclass Fog extends Evented {\n _transitionable: Transitionable;\n _transitioning: Transitioning;\n properties: PossiblyEvaluated;\n\n // Alternate projections do not yet support fog.\n // Hold on to transform so that we know whether a projection is set.\n _transform: Transform;\n\n constructor(fogOptions?: FogSpecification, transform: Transform) {\n super();\n this._transitionable = new Transitionable(fogProperties);\n this.set(fogOptions);\n this._transitioning = this._transitionable.untransitioned();\n this._transform = transform;\n }\n\n get state(): FogState {\n const tr = this._transform;\n const isGlobe = tr.projection.name === 'globe';\n const transitionT = globeToMercatorTransition(tr.zoom);\n const range = this.properties.get('range');\n const globeFixedFogRange = [0.5, 3];\n return {\n range: isGlobe ? [\n interpolate(globeFixedFogRange[0], range[0], transitionT),\n interpolate(globeFixedFogRange[1], range[1], transitionT)\n ] : range,\n horizonBlend: this.properties.get('horizon-blend'),\n alpha: this.properties.get('color').a\n };\n }\n\n get(): FogSpecification {\n return (this._transitionable.serialize(): any);\n }\n\n set(fog?: FogSpecification, options: StyleSetterOptions = {}) {\n if (this._validate(validateFog, fog, options)) {\n return;\n }\n\n for (const name of Object.keys(styleSpec.fog)) {\n // Fallback to use default style specification when the properties wasn't set\n if (fog && fog[name] === undefined) {\n // $FlowFixMe[prop-missing]\n fog[name] = styleSpec.fog[name].default;\n }\n }\n\n for (const name in fog) {\n const value = fog[name];\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n } else {\n this._transitionable.setValue(name, value);\n }\n }\n }\n\n getOpacity(pitch: number): number {\n if (!this._transform.projection.supportsFog) return 0;\n\n const fogColor = (this.properties && this.properties.get('color')) || 1.0;\n const isGlobe = this._transform.projection.name === 'globe';\n const pitchFactor = isGlobe ? 1.0 : smoothstep(FOG_PITCH_START, FOG_PITCH_END, pitch);\n return pitchFactor * fogColor.a;\n }\n\n getOpacityAtLatLng(lngLat: LngLat, transform: Transform): number {\n if (!this._transform.projection.supportsFog) return 0;\n\n return getFogOpacityAtLngLat(this.state, lngLat, transform);\n }\n\n getFovAdjustedRange(fov: number): [number, number] {\n // We can return any arbitrary range because we expect opacity=0 to clean it up\n if (!this._transform.projection.supportsFog) return [0, 1];\n\n return getFovAdjustedFogRange(this.state, fov);\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n }\n\n hasTransition(): boolean {\n return this._transitioning.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters) {\n this.properties = this._transitioning.possiblyEvaluate(parameters);\n }\n\n _validate(validate: Function, value: mixed, options?: {validate?: boolean}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n\n return emitValidationErrors(this, validate.call(validateStyle, extend({\n value,\n style: {glyphs: true, sprite: true},\n styleSpec\n })));\n }\n}\n\nexport default Fog;\n","// @flow\n\nimport {uniqueId, asyncAll} from './util.js';\nimport Actor from './actor.js';\nimport assert from 'assert';\n\nimport type WorkerPool from './worker_pool.js';\n\n/**\n * Responsible for sending messages from a {@link Source} to an associated\n * {@link WorkerSource}.\n *\n * @private\n */\nclass Dispatcher {\n workerPool: WorkerPool;\n actors: Array;\n currentActor: number;\n id: number;\n ready: boolean;\n\n // exposed to allow stubbing in unit tests\n static Actor: Class;\n\n constructor(workerPool: WorkerPool, parent: any) {\n this.workerPool = workerPool;\n this.actors = [];\n this.currentActor = 0;\n this.id = uniqueId();\n const workers = this.workerPool.acquire(this.id);\n for (let i = 0; i < workers.length; i++) {\n const worker = workers[i];\n const actor = new Dispatcher.Actor(worker, parent, this.id);\n actor.name = `Worker ${i}`;\n this.actors.push(actor);\n }\n assert(this.actors.length);\n\n // track whether all workers are instantiated and ready to receive messages;\n // used for optimizations on initial map load\n this.ready = false;\n this.broadcast('checkIfReady', null, () => { this.ready = true; });\n }\n\n /**\n * Broadcast a message to all Workers.\n * @private\n */\n broadcast(type: string, data: mixed, cb?: Function) {\n assert(this.actors.length);\n cb = cb || function () {};\n asyncAll(this.actors, (actor, done) => {\n actor.send(type, data, done);\n }, cb);\n }\n\n /**\n * Acquires an actor to dispatch messages to. The actors are distributed in round-robin fashion.\n * @returns {Actor} An actor object backed by a web worker for processing messages.\n */\n getActor(): Actor {\n assert(this.actors.length);\n this.currentActor = (this.currentActor + 1) % this.actors.length;\n return this.actors[this.currentActor];\n }\n\n remove() {\n this.actors.forEach((actor) => { actor.remove(); });\n this.actors = [];\n this.workerPool.release(this.id);\n }\n}\n\nDispatcher.Actor = Actor;\n\nexport default Dispatcher;\n","// @flow\n\nimport {mat2} from 'gl-matrix';\n\nimport EXTENT from '../data/extent.js';\n\nimport type {OverscaledTileID} from './tile_id.js';\nimport type Transform from '../geo/transform.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\n\n/**\n * Converts a pixel value at a the given zoom level to tile units.\n *\n * The shaders mostly calculate everything in tile units so style\n * properties need to be converted from pixels to tile units using this.\n *\n * For example, a translation by 30 pixels at zoom 6.5 will be a\n * translation by pixelsToTileUnits(30, 6.5) tile units.\n *\n * @returns value in tile units\n * @private\n */\nexport default function(tile: interface {tileID: OverscaledTileID, tileSize: number}, pixelValue: number, z: number): number {\n return pixelValue * (EXTENT / (tile.tileSize * Math.pow(2, z - tile.tileID.overscaledZ)));\n}\n\nexport function getPixelsToTileUnitsMatrix(tile: interface {tileID: OverscaledTileID, tileSize: number, +tileTransform: TileTransform}, transform: Transform): Float32Array {\n const {scale} = tile.tileTransform;\n const s = scale * EXTENT / (tile.tileSize * Math.pow(2, transform.zoom - tile.tileID.overscaledZ + tile.tileID.canonical.z));\n return mat2.scale(new Float32Array(4), transform.inverseAdjustmentMatrix, [s, s]);\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport {getBounds, clamp, polygonizeBounds, bufferConvexPolygon} from '../util/util.js';\nimport {polygonIntersectsBox, polygonContainsPoint} from '../util/intersection_tests.js';\nimport EXTENT from '../data/extent.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type Transform from '../geo/transform.js';\nimport type Tile from '../source/tile.js';\nimport pixelsToTileUnits from '../source/pixels_to_tile_units.js';\nimport {vec3, vec4, mat4} from 'gl-matrix';\nimport {Ray} from '../util/primitives.js';\nimport MercatorCoordinate, {mercatorXfromLng} from '../geo/mercator_coordinate.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport {getTilePoint, getTileVec3} from '../geo/projection/tile_transform.js';\nimport resample from '../geo/projection/resample.js';\nimport {GLOBE_RADIUS} from '../geo/projection/globe_util.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\n\ntype CachedPolygon = {\n // Query rectangle projected on the map plane\n polygon: MercatorCoordinate[];\n\n // A flag tellingwhether the query polygon might span across mercator boundaries [0, 1]\n unwrapped: boolean;\n};\n\n/**\n * A data-class that represents a screenspace query from `Map#queryRenderedFeatures`.\n * All the internal geometries and data are intented to be immutable and read-only.\n * Its lifetime is only for the duration of the query and fixed state of the map while the query is being processed.\n *\n * @class QueryGeometry\n */\nexport class QueryGeometry {\n screenBounds: Point[];\n cameraPoint: Point;\n screenGeometry: Point[];\n screenGeometryMercator: CachedPolygon;\n\n _screenRaycastCache: { [_: number]: CachedPolygon};\n _cameraRaycastCache: { [_: number]: CachedPolygon};\n\n isAboveHorizon: boolean;\n\n constructor(screenBounds: Point[], cameraPoint: Point, aboveHorizon: boolean, transform: Transform) {\n this.screenBounds = screenBounds;\n this.cameraPoint = cameraPoint;\n this._screenRaycastCache = {};\n this._cameraRaycastCache = {};\n this.isAboveHorizon = aboveHorizon;\n\n this.screenGeometry = this.bufferedScreenGeometry(0);\n this.screenGeometryMercator = this._bufferedScreenMercator(0, transform);\n }\n\n /**\n * Factory method to help contruct an instance while accounting for current map state.\n *\n * @static\n * @param {(PointLike | [PointLike, PointLike])} geometry The query geometry.\n * @param {Transform} transform The current map transform.\n * @returns {QueryGeometry} An instance of the QueryGeometry class.\n */\n static createFromScreenPoints(geometry: PointLike | [PointLike, PointLike], transform: Transform): QueryGeometry {\n let screenGeometry;\n let aboveHorizon;\n\n // $FlowFixMe: Flow can't refine that this will be PointLike but we can\n if (geometry instanceof Point || typeof geometry[0] === 'number') {\n // $FlowFixMe\n const pt = Point.convert(geometry);\n screenGeometry = [pt];\n aboveHorizon = transform.isPointAboveHorizon(pt);\n } else {\n // $FlowFixMe\n const tl = Point.convert(geometry[0]);\n // $FlowFixMe\n const br = Point.convert(geometry[1]);\n screenGeometry = [tl, br];\n aboveHorizon = polygonizeBounds(tl, br).every((p) => transform.isPointAboveHorizon(p));\n }\n\n return new QueryGeometry(screenGeometry, transform.getCameraPoint(), aboveHorizon, transform);\n }\n\n /**\n * Returns true if the initial query by the user was a single point.\n *\n * @returns {boolean} Returns `true` if the initial query geometry was a single point.\n */\n isPointQuery(): boolean {\n return this.screenBounds.length === 1;\n }\n\n /**\n * Due to data-driven styling features do not uniform size(eg `circle-radius`) and can be offset differntly\n * from their original location(for example with `*-translate`). This means we have to expand our query region for\n * each tile to account for variation in these properties.\n * Each tile calculates a tile level max padding value (in screenspace pixels) when its parsed, this function\n * lets us calculate a buffered version of the screenspace query geometry for each tile.\n *\n * @param {number} buffer The tile padding in screenspace pixels.\n * @returns {Point[]} The buffered query geometry.\n */\n bufferedScreenGeometry(buffer: number): Point[] {\n return polygonizeBounds(\n this.screenBounds[0],\n this.screenBounds.length === 1 ? this.screenBounds[0] : this.screenBounds[1],\n buffer\n );\n }\n\n /**\n * When the map is pitched, some of the 3D features that intersect a query will not intersect\n * the query at the surface of the earth. Instead the feature may be closer and only intersect\n * the query because it extrudes into the air.\n *\n * This returns a geometry that is a convex polygon that encompasses the query frustum and the point underneath the camera.\n * Similar to `bufferedScreenGeometry`, buffering is added to account for variation in paint properties.\n *\n * Case 1: point underneath camera is exactly behind query volume\n * +----------+\n * | |\n * | |\n * | |\n * + +\n * X X\n * X X\n * X X\n * X X\n * XX.\n *\n * Case 2: point is behind and to the right\n * +----------+\n * | X\n * | X\n * | XX\n * + X\n * XXX XX\n * XXXX X\n * XXX XX\n * XX X\n * XXX.\n *\n * Case 3: point is behind and to the left\n * +----------+\n * X |\n * X |\n * XX |\n * X +\n * X XXXX\n * XX XXX\n * X XXXX\n * X XXXX\n * XXX.\n *\n * @param {number} buffer The tile padding in screenspace pixels.\n * @returns {Point[]} The buffered query geometry.\n */\n bufferedCameraGeometry(buffer: number): Point[] {\n const min = this.screenBounds[0];\n const max = this.screenBounds.length === 1 ? this.screenBounds[0].add(new Point(1, 1)) : this.screenBounds[1];\n const cameraPolygon = polygonizeBounds(min, max, 0, false);\n\n // Only need to account for point underneath camera if its behind query volume\n if (this.cameraPoint.y > max.y) {\n //case 1: insert point in the middle\n if (this.cameraPoint.x > min.x && this.cameraPoint.x < max.x) {\n cameraPolygon.splice(3, 0, this.cameraPoint);\n //case 2: replace btm right point\n } else if (this.cameraPoint.x >= max.x) {\n cameraPolygon[2] = this.cameraPoint;\n //case 3: replace btm left point\n } else if (this.cameraPoint.x <= min.x) {\n cameraPolygon[3] = this.cameraPoint;\n }\n }\n\n return bufferConvexPolygon(cameraPolygon, buffer);\n }\n\n // Creates a convex polygon in screen coordinates that encompasses the query frustum and\n // the camera location at globe's surface. Camera point can be at any side of the query polygon as\n // opposed to `bufferedCameraGeometry` which restricts the location to underneath the polygon.\n bufferedCameraGeometryGlobe(buffer: number): Point[] {\n const min = this.screenBounds[0];\n const max = this.screenBounds.length === 1 ? this.screenBounds[0].add(new Point(1, 1)) : this.screenBounds[1];\n\n // Padding is added to the query polygon before inclusion of the camera location.\n // Otherwise the buffered (narrow) polygon could penetrate the globe creating a lot of false positives\n const cameraPolygon = polygonizeBounds(min, max, buffer);\n\n const camPos = this.cameraPoint.clone();\n const column = (camPos.x > min.x) + (camPos.x > max.x);\n const row = (camPos.y > min.y) + (camPos.y > max.y);\n const sector = row * 3 + column;\n\n switch (sector) {\n case 0: // replace top-left point (closed polygon)\n cameraPolygon[0] = camPos;\n cameraPolygon[4] = camPos.clone();\n break;\n case 1: // insert point in the middle of top-left and top-right\n cameraPolygon.splice(1, 0, camPos);\n break;\n case 2: // replace top-right point\n cameraPolygon[1] = camPos;\n break;\n case 3: // insert point in the middle of top-left and bottom-left\n cameraPolygon.splice(4, 0, camPos);\n break;\n case 5: // insert point in the middle of top-right and bottom-right\n cameraPolygon.splice(2, 0, camPos);\n break;\n case 6: // replace bottom-left point\n cameraPolygon[3] = camPos;\n break;\n case 7: // insert point in the middle of bottom-left and bottom-right\n cameraPolygon.splice(3, 0, camPos);\n break;\n case 8: // replace bottom-right point\n cameraPolygon[2] = camPos;\n break;\n }\n\n return cameraPolygon;\n }\n\n /**\n * Checks if a tile is contained within this query geometry.\n *\n * @param {Tile} tile The tile to check.\n * @param {Transform} transform The current map transform.\n * @param {boolean} use3D A boolean indicating whether to query 3D features.\n * @param {number} cameraWrap A wrap value for offsetting the camera position.\n * @returns {?TilespaceQueryGeometry} Returns `undefined` if the tile does not intersect.\n */\n containsTile(tile: Tile, transform: Transform, use3D: boolean, cameraWrap: number = 0): ?TilespaceQueryGeometry {\n // The buffer around the query geometry is applied in screen-space.\n // transform._pixelsPerMercatorPixel is used to compensate any extra scaling applied from the currently active projection.\n // Floating point errors when projecting into tilespace could leave a feature\n // outside the query volume even if it looks like it overlaps visually, a 1px bias value overcomes that.\n const bias = 1;\n const padding = tile.queryPadding / transform._pixelsPerMercatorPixel + bias;\n\n const cachedQuery = use3D ?\n this._bufferedCameraMercator(padding, transform) :\n this._bufferedScreenMercator(padding, transform);\n\n let wrap = tile.tileID.wrap + (cachedQuery.unwrapped ? cameraWrap : 0);\n const geometryForTileCheck = cachedQuery.polygon.map((p) => getTilePoint(tile.tileTransform, p, wrap));\n\n if (!polygonIntersectsBox(geometryForTileCheck, 0, 0, EXTENT, EXTENT)) {\n return undefined;\n }\n\n wrap = tile.tileID.wrap + (this.screenGeometryMercator.unwrapped ? cameraWrap : 0);\n const tilespaceVec3s = this.screenGeometryMercator.polygon.map((p) => getTileVec3(tile.tileTransform, p, wrap));\n const tilespaceGeometry = tilespaceVec3s.map((v) => new Point(v[0], v[1]));\n\n const cameraMercator = transform.getFreeCameraOptions().position || new MercatorCoordinate(0, 0, 0);\n const tilespaceCameraPosition = getTileVec3(tile.tileTransform, cameraMercator, wrap);\n const tilespaceRays = tilespaceVec3s.map((tileVec) => {\n const dir = vec3.sub(tileVec, tileVec, tilespaceCameraPosition);\n vec3.normalize(dir, dir);\n return new Ray(tilespaceCameraPosition, dir);\n });\n const pixelToTileUnitsFactor = pixelsToTileUnits(tile, 1, transform.zoom) * transform._pixelsPerMercatorPixel;\n\n return {\n queryGeometry: this,\n tilespaceGeometry,\n tilespaceRays,\n bufferedTilespaceGeometry: geometryForTileCheck,\n bufferedTilespaceBounds: clampBoundsToTileExtents(getBounds(geometryForTileCheck)),\n tile,\n tileID: tile.tileID,\n pixelToTileUnitsFactor\n };\n }\n\n /**\n * These methods add caching on top of the terrain raycasting provided by `Transform#pointCoordinate3d`.\n * Tiles come with different values of padding, however its very likely that multiple tiles share the same value of padding\n * based on the style. In that case we want to reuse the result from a previously computed terrain raycast.\n */\n\n _bufferedScreenMercator(padding: number, transform: Transform): CachedPolygon {\n const key = cacheKey(padding);\n if (this._screenRaycastCache[key]) {\n return this._screenRaycastCache[key];\n } else {\n let poly: CachedPolygon;\n\n if (transform.projection.name === 'globe') {\n poly = this._projectAndResample(this.bufferedScreenGeometry(padding), transform);\n } else {\n poly = {\n polygon: this.bufferedScreenGeometry(padding).map((p) => transform.pointCoordinate3D(p)),\n unwrapped: true\n };\n }\n\n this._screenRaycastCache[key] = poly;\n return poly;\n }\n }\n\n _bufferedCameraMercator(padding: number, transform: Transform): CachedPolygon {\n const key = cacheKey(padding);\n if (this._cameraRaycastCache[key]) {\n return this._cameraRaycastCache[key];\n } else {\n let poly: CachedPolygon;\n\n if (transform.projection.name === 'globe') {\n poly = this._projectAndResample(this.bufferedCameraGeometryGlobe(padding), transform);\n } else {\n poly = {\n polygon: this.bufferedCameraGeometry(padding).map((p) => transform.pointCoordinate3D(p)),\n unwrapped: true\n };\n }\n\n this._cameraRaycastCache[key] = poly;\n return poly;\n }\n }\n\n _projectAndResample(polygon: Point[], transform: Transform): CachedPolygon {\n // Handle a special case where either north or south pole is inside the query polygon\n const polePolygon: ?CachedPolygon = projectPolygonCoveringPoles(polygon, transform);\n\n if (polePolygon) {\n return polePolygon;\n }\n\n // Resample the polygon by adding intermediate points so that straight lines of the shape\n // are correctly projected on the surface of the globe.\n const resampled = unwrapQueryPolygon(resamplePolygon(polygon, transform).map(p => new Point(wrap(p.x), p.y)), transform);\n\n return {\n polygon: resampled.polygon.map(p => new MercatorCoordinate(p.x, p.y)),\n unwrapped: resampled.unwrapped\n };\n }\n}\n\n// Checks whether the provided polygon is crossing the antimeridian line and unwraps it if necessary.\n// The resulting polygon is continuous\nexport function unwrapQueryPolygon(polygon: Point[], tr: Transform): {polygon: Point[], unwrapped: boolean} {\n let unwrapped = false;\n\n // Traverse edges of the polygon and unwrap vertices that are crossing the antimeridian.\n let maxX = -Infinity;\n let startEdge = 0;\n\n for (let e = 0; e < polygon.length - 1; e++) {\n if (polygon[e].x > maxX) {\n maxX = polygon[e].x;\n startEdge = e;\n }\n }\n\n for (let i = 0; i < polygon.length - 1; i++) {\n const edge = (startEdge + i) % (polygon.length - 1);\n const a = polygon[edge];\n const b = polygon[edge + 1];\n\n if (Math.abs(a.x - b.x) > 0.5) {\n // A straight line drawn on the globe can't have longer length than 0.5 on the x-axis\n // without crossing the antimeridian\n if (a.x < b.x) {\n a.x += 1;\n\n if (edge === 0) {\n // First and last points are duplicate for closed polygons\n polygon[polygon.length - 1].x += 1;\n }\n } else {\n b.x += 1;\n\n if (edge + 1 === polygon.length - 1) {\n polygon[0].x += 1;\n }\n }\n\n unwrapped = true;\n }\n }\n\n const cameraX = mercatorXfromLng(tr.center.lng);\n if (unwrapped && cameraX < Math.abs(cameraX - 1)) {\n polygon.forEach(p => { p.x -= 1; });\n }\n\n return {\n polygon,\n unwrapped\n };\n}\n\n// Special function for handling scenarios where one of the poles is inside the query polygon.\n// Finding projection of these kind of polygons is more involving as projecting just the corners will\n// produce a degenerate (self-intersecting, non-continuous, etc.) polygon in mercator coordinates\nexport function projectPolygonCoveringPoles(polygon: Point[], tr: Transform): ?CachedPolygon {\n const matrix = mat4.multiply([], tr.pixelMatrix, tr.globeMatrix);\n\n // Transform north and south pole coordinates to the screen to see if they're\n // inside the query polygon\n const northPole = [0, -GLOBE_RADIUS, 0, 1];\n const southPole = [0, GLOBE_RADIUS, 0, 1];\n const center = [0, 0, 0, 1];\n\n vec4.transformMat4(northPole, northPole, matrix);\n vec4.transformMat4(southPole, southPole, matrix);\n vec4.transformMat4(center, center, matrix);\n\n const screenNp = new Point(northPole[0] / northPole[3], northPole[1] / northPole[3]);\n const screenSp = new Point(southPole[0] / southPole[3], southPole[1] / southPole[3]);\n const containsNp = polygonContainsPoint(polygon, screenNp) && northPole[3] < center[3];\n const containsSp = polygonContainsPoint(polygon, screenSp) && southPole[3] < center[3];\n\n if (!containsNp && !containsSp) {\n return null;\n }\n\n // Project corner points of the polygon and traverse the ring to find the edge that's\n // crossing the zero longitude border.\n const result = findEdgeCrossingAntimeridian(polygon, tr, containsNp ? -1 : 1);\n\n if (!result) {\n return null;\n }\n\n // Start constructing the new polygon by resampling edges until the crossing edge\n const {idx, t} = result;\n let partA = idx > 1 ? resamplePolygon(polygon.slice(0, idx), tr) : [];\n let partB = idx < polygon.length ? resamplePolygon(polygon.slice(idx), tr) : [];\n\n partA = partA.map(p => new Point(wrap(p.x), p.y));\n partB = partB.map(p => new Point(wrap(p.x), p.y));\n\n // Resample first section of the ring (up to the edge that crosses the 0-line)\n const resampled = [...partA];\n\n if (resampled.length === 0) {\n resampled.push(partB[partB.length - 1]);\n }\n\n // Find location of the crossing by interpolating mercator coordinates.\n // This will produce slightly off result as the crossing edge is not actually\n // linear on the globe.\n const a = resampled[resampled.length - 1];\n const b = partB.length === 0 ? partA[0] : partB[0];\n const intersectionY = interpolate(a.y, b.y, t);\n\n let mid;\n\n if (containsNp) {\n mid = [\n new Point(0, intersectionY),\n new Point(0, 0),\n new Point(1, 0),\n new Point(1, intersectionY)\n ];\n } else {\n mid = [\n new Point(1, intersectionY),\n new Point(1, 1),\n new Point(0, 1),\n new Point(0, intersectionY)\n ];\n }\n\n resampled.push(...mid);\n\n // Resample to the second section of the ring\n if (partB.length === 0) {\n resampled.push(partA[0]);\n } else {\n resampled.push(...partB);\n }\n\n return {\n polygon: resampled.map(p => new MercatorCoordinate(p.x, p.y)),\n unwrapped: false\n };\n}\n\nfunction resamplePolygon(polygon: Point[], transform: Transform): Point[] {\n // Choose a tolerance value for the resampling logic that produces sufficiently\n // accurate polygons without creating too many points. The value 1 / 256 was chosen\n // based on empirical testing\n const tolerance = 1.0 / 256.0;\n return resample(\n polygon,\n p => {\n const mc = transform.pointCoordinate3D(p);\n p.x = mc.x;\n p.y = mc.y;\n },\n tolerance);\n}\n\nfunction wrap(mercatorX: number): number {\n return mercatorX < 0 ? 1 + (mercatorX % 1) : mercatorX % 1;\n}\n\nfunction findEdgeCrossingAntimeridian(polygon: Point[], tr: Transform, direction: number): ?{idx: number, t: number} {\n for (let i = 1; i < polygon.length; i++) {\n const a = wrap(tr.pointCoordinate3D(polygon[i - 1]).x);\n const b = wrap(tr.pointCoordinate3D(polygon[i]).x);\n\n // direction < 0: mercator coordinate 0 will be crossed from left\n // direction > 0: mercator coordinate 1 will be crossed from right\n if (direction < 0) {\n if (a < b) {\n return {idx: i, t: -a / (b - 1 - a)};\n }\n } else {\n if (b < a) {\n return {idx: i, t: (1 - a) / (b + 1 - a)};\n }\n }\n }\n\n return null;\n}\n\n//Padding is in screen pixels and is only used as a coarse check, so 2 decimal places of precision should be good enough for a cache.\nfunction cacheKey(padding: number): number {\n return (padding * 100) | 0;\n}\n\nexport type TilespaceQueryGeometry = {\n queryGeometry: QueryGeometry,\n tilespaceGeometry: Point[],\n tilespaceRays: Ray[],\n bufferedTilespaceGeometry: Point[],\n bufferedTilespaceBounds: { min: Point, max: Point},\n tile: Tile,\n tileID: OverscaledTileID,\n pixelToTileUnitsFactor: number\n};\n\nfunction clampBoundsToTileExtents(bounds: {min: Point, max: Point}): {min: Point, max: Point} {\n bounds.min.x = clamp(bounds.min.x, 0, EXTENT);\n bounds.min.y = clamp(bounds.min.y, 0, EXTENT);\n\n bounds.max.x = clamp(bounds.max.x, 0, EXTENT);\n bounds.max.y = clamp(bounds.max.y, 0, EXTENT);\n return bounds;\n}\n","// @flow\n\nimport {pick, extend} from '../util/util.js';\n\nimport {getJSON, ResourceType} from '../util/ajax.js';\nimport browser from '../util/browser.js';\n\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\nimport type {TileJSON} from '../types/tilejson.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\nexport default function(options: any, requestManager: RequestManager, language: ?string, worldview: ?string, callback: Callback): Cancelable {\n const loaded = function(err: ?Error, tileJSON: ?Object) {\n if (err) {\n return callback(err);\n } else if (tileJSON) {\n // Prefer TileJSON tiles, if both URL and tiles options are set\n if (options.url && tileJSON.tiles && options.tiles) delete options.tiles;\n\n const result: any = pick(\n // explicit source options take precedence over TileJSON\n extend(tileJSON, options),\n ['tiles', 'minzoom', 'maxzoom', 'attribution', 'mapbox_logo', 'bounds', 'scheme', 'tileSize', 'encoding']\n );\n\n if (tileJSON.vector_layers) {\n result.vectorLayers = tileJSON.vector_layers;\n result.vectorLayerIds = result.vectorLayers.map((layer) => { return layer.id; });\n }\n\n result.tiles = requestManager.canonicalizeTileset(result, options.url);\n callback(null, result);\n }\n };\n\n if (options.url) {\n return getJSON(requestManager.transformRequest(requestManager.normalizeSourceURL(options.url, null, language, worldview), ResourceType.Source), loaded);\n } else {\n return browser.frame(() => loaded(null, options));\n }\n}\n","// @flow\n\nimport LngLatBounds from '../geo/lng_lat_bounds.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\n\nimport type {CanonicalTileID} from './tile_id.js';\n\nclass TileBounds {\n bounds: LngLatBounds;\n minzoom: number;\n maxzoom: number;\n\n constructor(bounds: [number, number, number, number], minzoom: ?number, maxzoom: ?number) {\n this.bounds = LngLatBounds.convert(this.validateBounds(bounds));\n this.minzoom = minzoom || 0;\n this.maxzoom = maxzoom || 24;\n }\n\n validateBounds(bounds: [number, number, number, number]): [number, number, number, number] {\n // make sure the bounds property contains valid longitude and latitudes\n if (!Array.isArray(bounds) || bounds.length !== 4) return [-180, -90, 180, 90];\n return [Math.max(-180, bounds[0]), Math.max(-90, bounds[1]), Math.min(180, bounds[2]), Math.min(90, bounds[3])];\n }\n\n contains(tileID: CanonicalTileID): boolean {\n const worldSize = Math.pow(2, tileID.z);\n const level = {\n minX: Math.floor(mercatorXfromLng(this.bounds.getWest()) * worldSize),\n minY: Math.floor(mercatorYfromLat(this.bounds.getNorth()) * worldSize),\n maxX: Math.ceil(mercatorXfromLng(this.bounds.getEast()) * worldSize),\n maxY: Math.ceil(mercatorYfromLat(this.bounds.getSouth()) * worldSize)\n };\n const hit = tileID.x >= level.minX && tileID.x < level.maxX && tileID.y >= level.minY && tileID.y < level.maxY;\n return hit;\n }\n}\n\nexport default TileBounds;\n","// @flow\nimport assert from 'assert';\n\nimport type {StructArray} from '../util/struct_array.js';\nimport type {TriangleIndexArray, LineIndexArray, LineStripIndexArray} from '../data/index_array_type.js';\nimport type Context from '../gl/context.js';\n\nclass IndexBuffer {\n context: Context;\n buffer: ?WebGLBuffer;\n dynamicDraw: boolean;\n\n constructor(context: Context, array: TriangleIndexArray | LineIndexArray | LineStripIndexArray, dynamicDraw?: boolean) {\n this.context = context;\n const gl = context.gl;\n this.buffer = gl.createBuffer();\n this.dynamicDraw = Boolean(dynamicDraw);\n\n // The bound index buffer is part of vertex array object state. We don't want to\n // modify whatever VAO happens to be currently bound, so make sure the default\n // vertex array provided by the context is bound instead.\n this.context.unbindVAO();\n\n context.bindElementBuffer.set(this.buffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, array.arrayBuffer, this.dynamicDraw ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);\n\n if (!this.dynamicDraw) {\n array.destroy();\n }\n }\n\n bind() {\n this.context.bindElementBuffer.set(this.buffer);\n }\n\n updateData(array: StructArray) {\n const gl = this.context.gl;\n assert(this.dynamicDraw);\n // The right VAO will get this buffer re-bound later in VertexArrayObject#bind\n // See https://github.com/mapbox/mapbox-gl-js/issues/5620\n this.context.unbindVAO();\n this.bind();\n gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, array.arrayBuffer);\n }\n\n destroy() {\n const gl = this.context.gl;\n if (this.buffer) {\n gl.deleteBuffer(this.buffer);\n delete this.buffer;\n }\n }\n}\n\nexport default IndexBuffer;\n","// @flow\n\nimport assert from 'assert';\n\nimport type {\n StructArray,\n StructArrayMember\n} from '../util/struct_array.js';\n\nimport type Program from '../render/program.js';\nimport type Context from '../gl/context.js';\n\n/**\n * @enum {string} AttributeType\n * @private\n * @readonly\n */\nconst AttributeType = {\n Int8: 'BYTE',\n Uint8: 'UNSIGNED_BYTE',\n Int16: 'SHORT',\n Uint16: 'UNSIGNED_SHORT',\n Int32: 'INT',\n Uint32: 'UNSIGNED_INT',\n Float32: 'FLOAT'\n};\n\n/**\n * The `VertexBuffer` class turns a `StructArray` into a WebGL buffer. Each member of the StructArray's\n * Struct type is converted to a WebGL atribute.\n * @private\n */\nclass VertexBuffer {\n length: number;\n attributes: $ReadOnlyArray;\n itemSize: number;\n dynamicDraw: ?boolean;\n context: Context;\n buffer: ?WebGLBuffer;\n\n /**\n * @param dynamicDraw Whether this buffer will be repeatedly updated.\n * @private\n */\n constructor(context: Context, array: StructArray, attributes: $ReadOnlyArray, dynamicDraw?: boolean) {\n this.length = array.length;\n this.attributes = attributes;\n this.itemSize = array.bytesPerElement;\n this.dynamicDraw = dynamicDraw;\n\n this.context = context;\n const gl = context.gl;\n this.buffer = gl.createBuffer();\n context.bindVertexBuffer.set(this.buffer);\n gl.bufferData(gl.ARRAY_BUFFER, array.arrayBuffer, this.dynamicDraw ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);\n\n if (!this.dynamicDraw) {\n array.destroy();\n }\n }\n\n bind() {\n this.context.bindVertexBuffer.set(this.buffer);\n }\n\n updateData(array: StructArray) {\n assert(array.length === this.length);\n const gl = this.context.gl;\n this.bind();\n gl.bufferSubData(gl.ARRAY_BUFFER, 0, array.arrayBuffer);\n }\n\n enableAttributes(gl: WebGLRenderingContext, program: Program<*>) {\n for (let j = 0; j < this.attributes.length; j++) {\n const member = this.attributes[j];\n const attribIndex: number | void = program.attributes[member.name];\n if (attribIndex !== undefined) {\n gl.enableVertexAttribArray(attribIndex);\n }\n }\n }\n\n /**\n * Set the attribute pointers in a WebGL context.\n * @param gl The WebGL context.\n * @param program The active WebGL program.\n * @param vertexOffset Index of the starting vertex of the segment.\n */\n setVertexAttribPointers(gl: WebGLRenderingContext, program: Program<*>, vertexOffset: ?number) {\n for (let j = 0; j < this.attributes.length; j++) {\n const member = this.attributes[j];\n const attribIndex: number | void = program.attributes[member.name];\n\n if (attribIndex !== undefined) {\n gl.vertexAttribPointer(\n attribIndex,\n member.components,\n (gl: any)[AttributeType[member.type]],\n false,\n this.itemSize,\n member.offset + (this.itemSize * (vertexOffset || 0))\n );\n }\n }\n }\n\n /**\n * Destroy the GL buffer bound to the given WebGL context.\n */\n destroy() {\n const gl = this.context.gl;\n if (this.buffer) {\n gl.deleteBuffer(this.buffer);\n delete this.buffer;\n }\n }\n}\n\nexport default VertexBuffer;\n","// @flow\n\nimport Color from '../style-spec/util/color.js';\nimport assert from 'assert';\n\nimport type Context from './context.js';\nimport type {\n BlendFuncType,\n BlendEquationType,\n ColorMaskType,\n DepthRangeType,\n DepthMaskType,\n StencilFuncType,\n StencilOpType,\n DepthFuncType,\n TextureUnitType,\n ViewportType,\n CullFaceModeType,\n FrontFaceType,\n} from './types.js';\n\nexport interface Value {\n current: T;\n default: T;\n dirty: boolean;\n get(): T;\n setDefault(): void;\n set(value: T): void;\n}\n\nclass BaseValue implements Value {\n gl: WebGLRenderingContext;\n current: T;\n default: T;\n dirty: boolean;\n\n constructor(context: Context) {\n this.gl = context.gl;\n this.default = this.getDefault();\n this.current = this.default;\n this.dirty = false;\n }\n\n get(): T {\n return this.current;\n }\n set(value: T) { // eslint-disable-line\n // overridden in child classes;\n }\n\n getDefault(): T {\n return this.default; // overriden in child classes\n }\n setDefault() {\n this.set(this.default);\n }\n}\n\nexport class ClearColor extends BaseValue {\n getDefault(): Color {\n return Color.transparent;\n }\n set(v: Color) {\n const c = this.current;\n if (v.r === c.r && v.g === c.g && v.b === c.b && v.a === c.a && !this.dirty) return;\n this.gl.clearColor(v.r, v.g, v.b, v.a);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ClearDepth extends BaseValue {\n getDefault(): number {\n return 1;\n }\n set(v: number) {\n if (v === this.current && !this.dirty) return;\n this.gl.clearDepth(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ClearStencil extends BaseValue {\n getDefault(): number {\n return 0;\n }\n set(v: number) {\n if (v === this.current && !this.dirty) return;\n this.gl.clearStencil(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ColorMask extends BaseValue {\n getDefault(): ColorMaskType {\n return [true, true, true, true];\n }\n set(v: ColorMaskType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && v[3] === c[3] && !this.dirty) return;\n this.gl.colorMask(v[0], v[1], v[2], v[3]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthMask extends BaseValue {\n getDefault(): DepthMaskType {\n return true;\n }\n set(v: DepthMaskType): void {\n if (v === this.current && !this.dirty) return;\n this.gl.depthMask(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilMask extends BaseValue {\n getDefault(): number {\n return 0xFF;\n }\n set(v: number): void {\n if (v === this.current && !this.dirty) return;\n this.gl.stencilMask(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilFunc extends BaseValue {\n getDefault(): StencilFuncType {\n return {\n func: this.gl.ALWAYS,\n ref: 0,\n mask: 0xFF\n };\n }\n set(v: StencilFuncType): void {\n const c = this.current;\n if (v.func === c.func && v.ref === c.ref && v.mask === c.mask && !this.dirty) return;\n // Assume UNSIGNED_INT_24_8 storage, with 8 bits dedicated to stencil.\n // Please revise your stencil values if this threshold is triggered.\n assert(v.ref >= 0 && v.ref <= 255);\n this.gl.stencilFunc(v.func, v.ref, v.mask);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilOp extends BaseValue {\n getDefault(): StencilOpType {\n const gl = this.gl;\n return [gl.KEEP, gl.KEEP, gl.KEEP];\n }\n set(v: StencilOpType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && !this.dirty) return;\n this.gl.stencilOp(v[0], v[1], v[2]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilTest extends BaseValue {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.STENCIL_TEST);\n } else {\n gl.disable(gl.STENCIL_TEST);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthRange extends BaseValue {\n getDefault(): DepthRangeType {\n return [0, 1];\n }\n set(v: DepthRangeType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && !this.dirty) return;\n this.gl.depthRange(v[0], v[1]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthTest extends BaseValue {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.DEPTH_TEST);\n } else {\n gl.disable(gl.DEPTH_TEST);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthFunc extends BaseValue {\n getDefault(): DepthFuncType {\n return this.gl.LESS;\n }\n set(v: DepthFuncType) {\n if (v === this.current && !this.dirty) return;\n this.gl.depthFunc(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class Blend extends BaseValue {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.BLEND);\n } else {\n gl.disable(gl.BLEND);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BlendFunc extends BaseValue {\n getDefault(): BlendFuncType {\n const gl = this.gl;\n return [gl.ONE, gl.ZERO];\n }\n set(v: BlendFuncType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && !this.dirty) return;\n this.gl.blendFunc(v[0], v[1]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BlendColor extends BaseValue {\n getDefault(): Color {\n return Color.transparent;\n }\n set(v: Color) {\n const c = this.current;\n if (v.r === c.r && v.g === c.g && v.b === c.b && v.a === c.a && !this.dirty) return;\n this.gl.blendColor(v.r, v.g, v.b, v.a);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BlendEquation extends BaseValue {\n getDefault(): BlendEquationType {\n return this.gl.FUNC_ADD;\n }\n set(v: BlendEquationType) {\n if (v === this.current && !this.dirty) return;\n this.gl.blendEquation(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class CullFace extends BaseValue {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.CULL_FACE);\n } else {\n gl.disable(gl.CULL_FACE);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class CullFaceSide extends BaseValue {\n getDefault(): CullFaceModeType {\n return this.gl.BACK;\n }\n set(v: CullFaceModeType) {\n if (v === this.current && !this.dirty) return;\n this.gl.cullFace(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class FrontFace extends BaseValue {\n getDefault(): FrontFaceType {\n return this.gl.CCW;\n }\n set(v: FrontFaceType) {\n if (v === this.current && !this.dirty) return;\n this.gl.frontFace(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class Program extends BaseValue {\n getDefault(): WebGLProgram | null {\n return null;\n }\n set(v: ?WebGLProgram) {\n if (v === this.current && !this.dirty) return;\n this.gl.useProgram(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ActiveTextureUnit extends BaseValue {\n getDefault(): TextureUnitType {\n return this.gl.TEXTURE0;\n }\n set(v: TextureUnitType) {\n if (v === this.current && !this.dirty) return;\n this.gl.activeTexture(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class Viewport extends BaseValue {\n getDefault(): ViewportType {\n const gl = this.gl;\n return [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight];\n }\n set(v: ViewportType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && v[3] === c[3] && !this.dirty) return;\n this.gl.viewport(v[0], v[1], v[2], v[3]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindFramebuffer extends BaseValue {\n getDefault(): WebGLFramebuffer | null {\n return null;\n }\n set(v: ?WebGLFramebuffer) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindRenderbuffer extends BaseValue {\n getDefault(): WebGLRenderbuffer | null {\n return null;\n }\n set(v: ?WebGLRenderbuffer) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindRenderbuffer(gl.RENDERBUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindTexture extends BaseValue {\n getDefault(): WebGLTexture | null {\n return null;\n }\n set(v: ?WebGLTexture) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindTexture(gl.TEXTURE_2D, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindVertexBuffer extends BaseValue {\n getDefault(): WebGLBuffer | null {\n return null;\n }\n set(v: ?WebGLBuffer) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindBuffer(gl.ARRAY_BUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindElementBuffer extends BaseValue {\n getDefault(): WebGLBuffer | null {\n return null;\n }\n set(v: ?WebGLBuffer) {\n // Always rebind\n const gl = this.gl;\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindVertexArrayOES extends BaseValue {\n vao: any;\n\n constructor(context: Context) {\n super(context);\n this.vao = context.extVertexArrayObject;\n }\n getDefault(): any {\n return null;\n }\n set(v: any) {\n if (!this.vao || (v === this.current && !this.dirty)) return;\n this.vao.bindVertexArrayOES(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class PixelStoreUnpack extends BaseValue {\n getDefault(): number {\n return 4;\n }\n set(v: number) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class PixelStoreUnpackPremultiplyAlpha extends BaseValue {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean): void {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, (v: any));\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class PixelStoreUnpackFlipY extends BaseValue {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean): void {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, (v: any));\n this.current = v;\n this.dirty = false;\n }\n}\n\nclass FramebufferAttachment extends BaseValue {\n parent: WebGLFramebuffer;\n context: Context;\n\n constructor(context: Context, parent: WebGLFramebuffer) {\n super(context);\n this.context = context;\n this.parent = parent;\n }\n getDefault(): null {\n return null;\n }\n}\n\nexport class ColorAttachment extends FramebufferAttachment {\n setDirty() {\n this.dirty = true;\n }\n set(v: ?WebGLTexture): void {\n if (v === this.current && !this.dirty) return;\n this.context.bindFramebuffer.set(this.parent);\n // note: it's possible to attach a renderbuffer to the color\n // attachment point, but thus far MBGL only uses textures for color\n const gl = this.gl;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, v, 0);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthAttachment extends FramebufferAttachment {\n attachment(): number { return this.gl.DEPTH_ATTACHMENT; }\n set(v: ?WebGLRenderbuffer): void {\n if (v === this.current && !this.dirty) return;\n this.context.bindFramebuffer.set(this.parent);\n // note: it's possible to attach a texture to the depth attachment\n // point, but thus far MBGL only uses renderbuffers for depth\n const gl = this.gl;\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, this.attachment(), gl.RENDERBUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthStencilAttachment extends DepthAttachment {\n attachment(): number { return this.gl.DEPTH_STENCIL_ATTACHMENT; }\n}\n","// @flow\nimport window from './window.js';\n\nlet supportsOffscreenCanvas: ?boolean;\n\nexport default function offscreenCanvasSupported(): boolean {\n if (supportsOffscreenCanvas == null) {\n supportsOffscreenCanvas = window.OffscreenCanvas &&\n new window.OffscreenCanvas(1, 1).getContext('2d') &&\n typeof window.createImageBitmap === 'function';\n }\n\n return supportsOffscreenCanvas;\n}\n","// @flow\nimport {ColorAttachment, DepthAttachment} from './value.js';\n\nimport type Context from './context.js';\nimport assert from 'assert';\n\nclass Framebuffer {\n context: Context;\n width: number;\n height: number;\n framebuffer: WebGLFramebuffer;\n colorAttachment: ColorAttachment;\n depthAttachment: DepthAttachment;\n\n constructor(context: Context, width: number, height: number, hasDepth: boolean) {\n this.context = context;\n this.width = width;\n this.height = height;\n const gl = context.gl;\n const fbo = this.framebuffer = ((gl.createFramebuffer(): any): WebGLFramebuffer);\n\n this.colorAttachment = new ColorAttachment(context, fbo);\n if (hasDepth) {\n this.depthAttachment = new DepthAttachment(context, fbo);\n }\n assert(gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE);\n }\n\n destroy() {\n const gl = this.context.gl;\n\n const texture = this.colorAttachment.get();\n if (texture) gl.deleteTexture(texture);\n\n if (this.depthAttachment) {\n const renderbuffer = this.depthAttachment.get();\n if (renderbuffer) gl.deleteRenderbuffer(renderbuffer);\n }\n\n gl.deleteFramebuffer(this.framebuffer);\n }\n}\n\nexport default Framebuffer;\n","// @flow\nimport IndexBuffer from './index_buffer.js';\n\nimport VertexBuffer from './vertex_buffer.js';\nimport Framebuffer from './framebuffer.js';\nimport DepthMode from './depth_mode.js';\nimport StencilMode from './stencil_mode.js';\nimport ColorMode from './color_mode.js';\nimport CullFaceMode from './cull_face_mode.js';\nimport {deepEqual} from '../util/util.js';\nimport {ClearColor, ClearDepth, ClearStencil, ColorMask, DepthMask, StencilMask, StencilFunc, StencilOp, StencilTest, DepthRange, DepthTest, DepthFunc, Blend, BlendFunc, BlendColor, BlendEquation, CullFace, CullFaceSide, FrontFace, Program, ActiveTextureUnit, Viewport, BindFramebuffer, BindRenderbuffer, BindTexture, BindVertexBuffer, BindElementBuffer, BindVertexArrayOES, PixelStoreUnpack, PixelStoreUnpackPremultiplyAlpha, PixelStoreUnpackFlipY} from './value.js';\n\nimport type {TriangleIndexArray, LineIndexArray, LineStripIndexArray} from '../data/index_array_type.js';\nimport type {\n StructArray,\n StructArrayMember\n} from '../util/struct_array.js';\nimport type Color from '../style-spec/util/color.js';\n\ntype ClearArgs = {\n color?: Color,\n depth?: number,\n stencil?: number\n};\n\nclass Context {\n gl: WebGLRenderingContext;\n isWebGL2: boolean;\n extVertexArrayObject: any;\n currentNumAttributes: ?number;\n maxTextureSize: number;\n\n clearColor: ClearColor;\n clearDepth: ClearDepth;\n clearStencil: ClearStencil;\n colorMask: ColorMask;\n depthMask: DepthMask;\n stencilMask: StencilMask;\n stencilFunc: StencilFunc;\n stencilOp: StencilOp;\n stencilTest: StencilTest;\n depthRange: DepthRange;\n depthTest: DepthTest;\n depthFunc: DepthFunc;\n blend: Blend;\n blendFunc: BlendFunc;\n blendColor: BlendColor;\n blendEquation: BlendEquation;\n cullFace: CullFace;\n cullFaceSide: CullFaceSide;\n frontFace: FrontFace;\n program: Program;\n activeTexture: ActiveTextureUnit;\n viewport: Viewport;\n bindFramebuffer: BindFramebuffer;\n bindRenderbuffer: BindRenderbuffer;\n bindTexture: BindTexture;\n bindVertexBuffer: BindVertexBuffer;\n bindElementBuffer: BindElementBuffer;\n bindVertexArrayOES: BindVertexArrayOES;\n pixelStoreUnpack: PixelStoreUnpack;\n pixelStoreUnpackPremultiplyAlpha: PixelStoreUnpackPremultiplyAlpha;\n pixelStoreUnpackFlipY: PixelStoreUnpackFlipY;\n renderer: ?string;\n vendor: ?string;\n\n extTextureFilterAnisotropic: any;\n extTextureFilterAnisotropicMax: any;\n extTextureHalfFloat: any;\n extRenderToTextureHalfFloat: any;\n extStandardDerivatives: any;\n extDebugRendererInfo: any;\n extTimerQuery: any;\n\n extTextureFilterAnisotropicForceOff: boolean;\n extStandardDerivativesForceOff: boolean;\n\n constructor(gl: WebGLRenderingContext, isWebGL2: boolean = false) {\n this.gl = gl;\n this.isWebGL2 = isWebGL2;\n this.extVertexArrayObject = this.gl.getExtension('OES_vertex_array_object');\n\n if (isWebGL2) {\n /* $FlowFixMe[cannot-resolve-name] */ // Not adding dependency to webgl2 yet.\n const gl2 = (gl: WebGL2RenderingContext);\n this.extVertexArrayObject = {\n createVertexArrayOES: gl2.createVertexArray.bind(gl),\n deleteVertexArrayOES: gl2.deleteVertexArray.bind(gl),\n bindVertexArrayOES: gl2.bindVertexArray.bind(gl)\n };\n }\n\n this.clearColor = new ClearColor(this);\n this.clearDepth = new ClearDepth(this);\n this.clearStencil = new ClearStencil(this);\n this.colorMask = new ColorMask(this);\n this.depthMask = new DepthMask(this);\n this.stencilMask = new StencilMask(this);\n this.stencilFunc = new StencilFunc(this);\n this.stencilOp = new StencilOp(this);\n this.stencilTest = new StencilTest(this);\n this.depthRange = new DepthRange(this);\n this.depthTest = new DepthTest(this);\n this.depthFunc = new DepthFunc(this);\n this.blend = new Blend(this);\n this.blendFunc = new BlendFunc(this);\n this.blendColor = new BlendColor(this);\n this.blendEquation = new BlendEquation(this);\n this.cullFace = new CullFace(this);\n this.cullFaceSide = new CullFaceSide(this);\n this.frontFace = new FrontFace(this);\n this.program = new Program(this);\n this.activeTexture = new ActiveTextureUnit(this);\n this.viewport = new Viewport(this);\n this.bindFramebuffer = new BindFramebuffer(this);\n this.bindRenderbuffer = new BindRenderbuffer(this);\n this.bindTexture = new BindTexture(this);\n this.bindVertexBuffer = new BindVertexBuffer(this);\n this.bindElementBuffer = new BindElementBuffer(this);\n this.bindVertexArrayOES = this.extVertexArrayObject && new BindVertexArrayOES(this);\n this.pixelStoreUnpack = new PixelStoreUnpack(this);\n this.pixelStoreUnpackPremultiplyAlpha = new PixelStoreUnpackPremultiplyAlpha(this);\n this.pixelStoreUnpackFlipY = new PixelStoreUnpackFlipY(this);\n\n this.extTextureFilterAnisotropic = (\n gl.getExtension('EXT_texture_filter_anisotropic') ||\n gl.getExtension('MOZ_EXT_texture_filter_anisotropic') ||\n gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic')\n );\n if (this.extTextureFilterAnisotropic) {\n this.extTextureFilterAnisotropicMax = gl.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n }\n this.extTextureFilterAnisotropicForceOff = false;\n this.extStandardDerivativesForceOff = false;\n\n this.extDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');\n if (this.extDebugRendererInfo) {\n this.renderer = gl.getParameter(this.extDebugRendererInfo.UNMASKED_RENDERER_WEBGL);\n this.vendor = gl.getParameter(this.extDebugRendererInfo.UNMASKED_VENDOR_WEBGL);\n }\n\n if (!isWebGL2) this.extTextureHalfFloat = gl.getExtension('OES_texture_half_float');\n if (isWebGL2 || (this.extTextureHalfFloat && gl.getExtension('OES_texture_half_float_linear'))) {\n this.extRenderToTextureHalfFloat = gl.getExtension('EXT_color_buffer_half_float');\n }\n this.extStandardDerivatives = isWebGL2 || gl.getExtension('OES_standard_derivatives');\n\n this.extTimerQuery = gl.getExtension('EXT_disjoint_timer_query');\n this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n }\n\n setDefault() {\n this.unbindVAO();\n\n this.clearColor.setDefault();\n this.clearDepth.setDefault();\n this.clearStencil.setDefault();\n this.colorMask.setDefault();\n this.depthMask.setDefault();\n this.stencilMask.setDefault();\n this.stencilFunc.setDefault();\n this.stencilOp.setDefault();\n this.stencilTest.setDefault();\n this.depthRange.setDefault();\n this.depthTest.setDefault();\n this.depthFunc.setDefault();\n this.blend.setDefault();\n this.blendFunc.setDefault();\n this.blendColor.setDefault();\n this.blendEquation.setDefault();\n this.cullFace.setDefault();\n this.cullFaceSide.setDefault();\n this.frontFace.setDefault();\n this.program.setDefault();\n this.activeTexture.setDefault();\n this.bindFramebuffer.setDefault();\n this.pixelStoreUnpack.setDefault();\n this.pixelStoreUnpackPremultiplyAlpha.setDefault();\n this.pixelStoreUnpackFlipY.setDefault();\n }\n\n setDirty() {\n this.clearColor.dirty = true;\n this.clearDepth.dirty = true;\n this.clearStencil.dirty = true;\n this.colorMask.dirty = true;\n this.depthMask.dirty = true;\n this.stencilMask.dirty = true;\n this.stencilFunc.dirty = true;\n this.stencilOp.dirty = true;\n this.stencilTest.dirty = true;\n this.depthRange.dirty = true;\n this.depthTest.dirty = true;\n this.depthFunc.dirty = true;\n this.blend.dirty = true;\n this.blendFunc.dirty = true;\n this.blendColor.dirty = true;\n this.blendEquation.dirty = true;\n this.cullFace.dirty = true;\n this.cullFaceSide.dirty = true;\n this.frontFace.dirty = true;\n this.program.dirty = true;\n this.activeTexture.dirty = true;\n this.viewport.dirty = true;\n this.bindFramebuffer.dirty = true;\n this.bindRenderbuffer.dirty = true;\n this.bindTexture.dirty = true;\n this.bindVertexBuffer.dirty = true;\n this.bindElementBuffer.dirty = true;\n if (this.extVertexArrayObject) {\n this.bindVertexArrayOES.dirty = true;\n }\n this.pixelStoreUnpack.dirty = true;\n this.pixelStoreUnpackPremultiplyAlpha.dirty = true;\n this.pixelStoreUnpackFlipY.dirty = true;\n }\n\n createIndexBuffer(array: TriangleIndexArray | LineIndexArray | LineStripIndexArray, dynamicDraw?: boolean): IndexBuffer {\n return new IndexBuffer(this, array, dynamicDraw);\n }\n\n createVertexBuffer(array: StructArray, attributes: $ReadOnlyArray, dynamicDraw?: boolean): VertexBuffer {\n return new VertexBuffer(this, array, attributes, dynamicDraw);\n }\n\n createRenderbuffer(storageFormat: number, width: number, height: number): ?WebGLRenderbuffer {\n const gl = this.gl;\n\n const rbo = gl.createRenderbuffer();\n this.bindRenderbuffer.set(rbo);\n gl.renderbufferStorage(gl.RENDERBUFFER, storageFormat, width, height);\n this.bindRenderbuffer.set(null);\n\n return rbo;\n }\n\n createFramebuffer(width: number, height: number, hasDepth: boolean): Framebuffer {\n return new Framebuffer(this, width, height, hasDepth);\n }\n\n clear({color, depth, stencil}: ClearArgs) {\n const gl = this.gl;\n let mask = 0;\n\n if (color) {\n mask |= gl.COLOR_BUFFER_BIT;\n this.clearColor.set(color);\n this.colorMask.set([true, true, true, true]);\n }\n\n if (typeof depth !== 'undefined') {\n mask |= gl.DEPTH_BUFFER_BIT;\n\n // Workaround for platforms where clearDepth doesn't seem to work\n // without reseting the depthRange. See https://github.com/mapbox/mapbox-gl-js/issues/3437\n this.depthRange.set([0, 1]);\n\n this.clearDepth.set(depth);\n this.depthMask.set(true);\n }\n\n if (typeof stencil !== 'undefined') {\n mask |= gl.STENCIL_BUFFER_BIT;\n this.clearStencil.set(stencil);\n this.stencilMask.set(0xFF);\n }\n\n gl.clear(mask);\n }\n\n setCullFace(cullFaceMode: $ReadOnly) {\n if (cullFaceMode.enable === false) {\n this.cullFace.set(false);\n } else {\n this.cullFace.set(true);\n this.cullFaceSide.set(cullFaceMode.mode);\n this.frontFace.set(cullFaceMode.frontFace);\n }\n }\n\n setDepthMode(depthMode: $ReadOnly) {\n if (depthMode.func === this.gl.ALWAYS && !depthMode.mask) {\n this.depthTest.set(false);\n } else {\n this.depthTest.set(true);\n this.depthFunc.set(depthMode.func);\n this.depthMask.set(depthMode.mask);\n this.depthRange.set(depthMode.range);\n }\n }\n\n setStencilMode(stencilMode: $ReadOnly) {\n if (stencilMode.test.func === this.gl.ALWAYS && !stencilMode.mask) {\n this.stencilTest.set(false);\n } else {\n this.stencilTest.set(true);\n this.stencilMask.set(stencilMode.mask);\n this.stencilOp.set([stencilMode.fail, stencilMode.depthFail, stencilMode.pass]);\n this.stencilFunc.set({\n func: stencilMode.test.func,\n ref: stencilMode.ref,\n mask: stencilMode.test.mask\n });\n }\n }\n\n setColorMode(colorMode: $ReadOnly) {\n if (deepEqual(colorMode.blendFunction, ColorMode.Replace)) {\n this.blend.set(false);\n } else {\n this.blend.set(true);\n this.blendFunc.set(colorMode.blendFunction);\n this.blendColor.set(colorMode.blendColor);\n }\n\n this.colorMask.set(colorMode.mask);\n }\n\n unbindVAO() {\n // Unbinding the VAO prevents other things (custom layers, new buffer creation) from\n // unintentionally changing the state of the last VAO used.\n if (this.extVertexArrayObject) {\n this.bindVertexArrayOES.set(null);\n }\n }\n}\n\nexport default Context;\n","// @flow\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\n\nimport {extend, pick} from '../util/util.js';\nimport loadTileJSON from './load_tilejson.js';\nimport {postTurnstileEvent} from '../util/mapbox.js';\nimport TileBounds from './tile_bounds.js';\nimport {ResourceType} from '../util/ajax.js';\nimport browser from '../util/browser.js';\nimport {cacheEntryPossiblyAdded} from '../util/tile_request_cache.js';\nimport {DedupedRequest, loadVectorTile} from './vector_tile_worker_source.js';\n\nimport type {Source} from './source.js';\nimport type {OverscaledTileID} from './tile_id.js';\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {VectorSourceSpecification, PromoteIdSpecification} from '../style-spec/types.js';\nimport type Actor from '../util/actor.js';\nimport type {LoadVectorTileResult} from './vector_tile_worker_source.js';\nimport type {WorkerTileResult} from './worker_source.js';\n\n/**\n * A source containing vector tiles in [Mapbox Vector Tile format](https://docs.mapbox.com/vector-tiles/reference/).\n * See the [Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector) for detailed documentation of options.\n *\n * @example\n * map.addSource('some id', {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v8'\n * });\n *\n * @example\n * map.addSource('some id', {\n * type: 'vector',\n * tiles: ['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt'],\n * minzoom: 6,\n * maxzoom: 14\n * });\n *\n * @example\n * map.getSource('some id').setUrl(\"mapbox://mapbox.mapbox-streets-v8\");\n *\n * @example\n * map.getSource('some id').setTiles(['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt']);\n * @see [Example: Add a vector tile source](https://docs.mapbox.com/mapbox-gl-js/example/vector-source/)\n * @see [Example: Add a third party vector tile source](https://docs.mapbox.com/mapbox-gl-js/example/third-party/)\n */\nclass VectorTileSource extends Evented implements Source {\n type: 'vector';\n id: string;\n minzoom: number;\n maxzoom: number;\n url: string;\n scheme: string;\n tileSize: number;\n promoteId: ?PromoteIdSpecification;\n\n _options: VectorSourceSpecification;\n _collectResourceTiming: boolean;\n dispatcher: Dispatcher;\n map: Map;\n bounds: ?[number, number, number, number];\n tiles: Array;\n tileBounds: TileBounds;\n reparseOverscaled: boolean | void;\n isTileClipped: boolean | void;\n _tileJSONRequest: ?Cancelable;\n _loaded: boolean;\n _tileWorkers: {[string]: Actor};\n _deduped: DedupedRequest;\n\n constructor(id: string, options: VectorSourceSpecification & {collectResourceTiming: boolean}, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.dispatcher = dispatcher;\n\n this.type = 'vector';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.scheme = 'xyz';\n this.tileSize = 512;\n this.reparseOverscaled = true;\n this.isTileClipped = true;\n this._loaded = false;\n\n extend(this, pick(options, ['url', 'scheme', 'tileSize', 'promoteId']));\n this._options = extend({type: 'vector'}, options);\n\n this._collectResourceTiming = options.collectResourceTiming;\n\n if (this.tileSize !== 512) {\n throw new Error('vector tile sources must have a tileSize of 512');\n }\n\n this.setEventedParent(eventedParent);\n\n this._tileWorkers = {};\n this._deduped = new DedupedRequest();\n }\n\n load(callback?: Callback) {\n this._loaded = false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n const language = Array.isArray(this.map._language) ? this.map._language.join() : this.map._language;\n const worldview = this.map._worldview;\n this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, language, worldview, (err, tileJSON) => {\n this._tileJSONRequest = null;\n this._loaded = true;\n if (err) {\n if (language) console.warn(`Ensure that your requested language string is a valid BCP-47 code or list of codes. Found: ${language}`);\n if (worldview && worldview.length !== 2) console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${worldview}`);\n\n this.fire(new ErrorEvent(err));\n } else if (tileJSON) {\n extend(this, tileJSON);\n if (tileJSON.bounds) this.tileBounds = new TileBounds(tileJSON.bounds, this.minzoom, this.maxzoom);\n postTurnstileEvent(tileJSON.tiles, this.map._requestManager._customAccessToken);\n\n // `content` is included here to prevent a race condition where `Style#_updateSources` is called\n // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives\n // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n\n if (callback) callback(err);\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n // $FlowFixMe[method-unbinding]\n hasTile(tileID: OverscaledTileID): boolean {\n return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map) {\n this.map = map;\n this.load();\n }\n\n /**\n * Reloads the source data and re-renders the map.\n *\n * @example\n * map.getSource('source-id').reload();\n */\n // $FlowFixMe[method-unbinding]\n reload() {\n this.cancelTileJSONRequest();\n this.load(() => this.map.style._clearSource(this.id));\n }\n\n /**\n * Sets the source `tiles` property and re-renders the map.\n *\n * @param {string[]} tiles An array of one or more tile source URLs, as in the TileJSON spec.\n * @returns {VectorTileSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('source-id', {\n * type: 'vector',\n * tiles: ['https://some_end_point.net/{z}/{x}/{y}.mvt'],\n * minzoom: 6,\n * maxzoom: 14\n * });\n *\n * // Set the endpoint associated with a vector tile source.\n * map.getSource('source-id').setTiles(['https://another_end_point.net/{z}/{x}/{y}.mvt']);\n */\n setTiles(tiles: Array): this {\n this._options.tiles = tiles;\n this.reload();\n\n return this;\n }\n\n /**\n * Sets the source `url` property and re-renders the map.\n *\n * @param {string} url A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\n * @returns {VectorTileSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('source-id', {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v7'\n * });\n *\n * // Update vector tile source to a new URL endpoint\n * map.getSource('source-id').setUrl(\"mapbox://mapbox.mapbox-streets-v8\");\n */\n setUrl(url: string): this {\n this.url = url;\n this._options.url = url;\n this.reload();\n\n return this;\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove() {\n this.cancelTileJSONRequest();\n }\n\n serialize(): VectorSourceSpecification {\n return extend({}, this._options);\n }\n\n loadTile(tile: Tile, callback: Callback) {\n const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme));\n const request = this.map._requestManager.transformRequest(url, ResourceType.Tile);\n\n const params = {\n request,\n data: undefined,\n uid: tile.uid,\n tileID: tile.tileID,\n tileZoom: tile.tileZoom,\n zoom: tile.tileID.overscaledZ,\n tileSize: this.tileSize * tile.tileID.overscaleFactor(),\n type: this.type,\n source: this.id,\n pixelRatio: browser.devicePixelRatio,\n showCollisionBoxes: this.map.showCollisionBoxes,\n promoteId: this.promoteId,\n isSymbolTile: tile.isSymbolTile\n };\n params.request.collectResourceTiming = this._collectResourceTiming;\n\n if (!tile.actor || tile.state === 'expired') {\n tile.actor = this._tileWorkers[url] = this._tileWorkers[url] || this.dispatcher.getActor();\n\n // if workers are not ready to receive messages yet, use the idle time to preemptively\n // load tiles on the main thread and pass the result instead of requesting a worker to do so\n if (!this.dispatcher.ready) {\n const cancel = loadVectorTile.call({deduped: this._deduped}, params, (err: ?Error, data: ?LoadVectorTileResult) => {\n if (err || !data) {\n done.call(this, err);\n } else {\n // the worker will skip the network request if the data is already there\n params.data = {\n cacheControl: data.cacheControl,\n expires: data.expires,\n rawData: data.rawData.slice(0)\n };\n if (tile.actor) tile.actor.send('loadTile', params, done.bind(this), undefined, true);\n }\n }, true);\n tile.request = {cancel};\n\n } else {\n tile.request = tile.actor.send('loadTile', params, done.bind(this), undefined, true);\n }\n\n } else if (tile.state === 'loading') {\n // schedule tile reloading after it has been loaded\n tile.reloadCallback = callback;\n\n } else {\n tile.request = tile.actor.send('reloadTile', params, done.bind(this));\n }\n\n // $FlowFixMe[missing-this-annot]\n function done(err: ?Error, data: ?WorkerTileResult) {\n delete tile.request;\n\n if (tile.aborted)\n return callback(null);\n\n // $FlowFixMe[prop-missing] - generic Error type doesn't have status\n if (err && err.status !== 404) {\n return callback(err);\n }\n\n if (data && data.resourceTiming)\n tile.resourceTiming = data.resourceTiming;\n\n if (this.map._refreshExpiredTiles && data) tile.setExpiryData(data);\n tile.loadVectorData(data, this.map.painter);\n\n cacheEntryPossiblyAdded(this.dispatcher);\n\n callback(null);\n\n if (tile.reloadCallback) {\n this.loadTile(tile, tile.reloadCallback);\n tile.reloadCallback = null;\n }\n }\n }\n\n // $FlowFixMe[method-unbinding]\n abortTile(tile: Tile) {\n if (tile.request) {\n tile.request.cancel();\n delete tile.request;\n }\n if (tile.actor) {\n tile.actor.send('abortTile', {uid: tile.uid, type: this.type, source: this.id});\n }\n }\n\n // $FlowFixMe[method-unbinding]\n unloadTile(tile: Tile) {\n tile.unloadVectorData();\n if (tile.actor) {\n tile.actor.send('removeTile', {uid: tile.uid, type: this.type, source: this.id});\n }\n }\n\n hasTransition(): boolean {\n return false;\n }\n\n // $FlowFixMe[method-unbinding]\n afterUpdate() {\n this._tileWorkers = {};\n }\n\n cancelTileJSONRequest() {\n if (!this._tileJSONRequest) return;\n this._tileJSONRequest.cancel();\n this._tileJSONRequest = null;\n }\n}\n\nexport default VectorTileSource;\n","// @flow\n\nimport {extend, pick} from '../util/util.js';\n\nimport {getImage, ResourceType} from '../util/ajax.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport loadTileJSON from './load_tilejson.js';\nimport {postTurnstileEvent} from '../util/mapbox.js';\nimport TileBounds from './tile_bounds.js';\nimport browser from '../util/browser.js';\n\nimport {cacheEntryPossiblyAdded} from '../util/tile_request_cache.js';\n\nimport type {Source} from './source.js';\nimport type {OverscaledTileID} from './tile_id.js';\nimport type Map from '../ui/map.js';\nimport type Painter from '../render/painter.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {TextureImage} from '../render/texture.js';\nimport type {\n RasterSourceSpecification,\n RasterDEMSourceSpecification\n} from '../style-spec/types.js';\n\n/**\n * A source containing raster tiles.\n * See the [Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#raster) for detailed documentation of options.\n *\n * @example\n * map.addSource('some id', {\n * type: 'raster',\n * url: 'mapbox://mapbox.satellite',\n * tileSize: 256\n * });\n *\n * @example\n * map.addSource('some id', {\n * type: 'raster',\n * tiles: ['https://img.nj.gov/imagerywms/Natural2015?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&transparent=true&width=256&height=256&layers=Natural2015'],\n * tileSize: 256\n * });\n *\n * @see [Example: Add a raster tile source](https://docs.mapbox.com/mapbox-gl-js/example/map-tiles/)\n * @see [Example: Add a WMS source](https://docs.mapbox.com/mapbox-gl-js/example/wms/)\n */\nclass RasterTileSource extends Evented implements Source {\n type: 'raster' | 'raster-dem';\n id: string;\n minzoom: number;\n maxzoom: number;\n url: string;\n scheme: string;\n tileSize: number;\n\n bounds: ?[number, number, number, number];\n tileBounds: TileBounds;\n roundZoom: boolean | void;\n dispatcher: Dispatcher;\n map: Map;\n tiles: Array;\n\n _loaded: boolean;\n _options: RasterSourceSpecification | RasterDEMSourceSpecification;\n _tileJSONRequest: ?Cancelable;\n\n constructor(id: string, options: RasterSourceSpecification | RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.dispatcher = dispatcher;\n this.setEventedParent(eventedParent);\n\n this.type = 'raster';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.roundZoom = true;\n this.scheme = 'xyz';\n this.tileSize = 512;\n this._loaded = false;\n\n this._options = extend({type: 'raster'}, options);\n extend(this, pick(options, ['url', 'scheme', 'tileSize']));\n }\n\n load(callback?: Callback) {\n this._loaded = false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, null, null, (err, tileJSON) => {\n this._tileJSONRequest = null;\n this._loaded = true;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (tileJSON) {\n extend(this, tileJSON);\n if (tileJSON.bounds) this.tileBounds = new TileBounds(tileJSON.bounds, this.minzoom, this.maxzoom);\n\n postTurnstileEvent(tileJSON.tiles);\n\n // `content` is included here to prevent a race condition where `Style#_updateSources` is called\n // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives\n // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n\n if (callback) callback(err);\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map) {\n this.map = map;\n this.load();\n }\n\n /**\n * Reloads the source data and re-renders the map.\n *\n * @example\n * map.getSource('source-id').reload();\n */\n // $FlowFixMe[method-unbinding]\n reload() {\n this.cancelTileJSONRequest();\n this.load(() => this.map.style._clearSource(this.id));\n }\n\n /**\n * Sets the source `tiles` property and re-renders the map.\n *\n * @param {string[]} tiles An array of one or more tile source URLs, as in the TileJSON spec.\n * @returns {RasterTileSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('source-id', {\n * type: 'raster',\n * tiles: ['https://some_end_point.net/{z}/{x}/{y}.png'],\n * tileSize: 256\n * });\n *\n * // Set the endpoint associated with a raster tile source.\n * map.getSource('source-id').setTiles(['https://another_end_point.net/{z}/{x}/{y}.png']);\n */\n setTiles(tiles: Array): this {\n this._options.tiles = tiles;\n this.reload();\n\n return this;\n }\n\n /**\n * Sets the source `url` property and re-renders the map.\n *\n * @param {string} url A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\n * @returns {RasterTileSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('source-id', {\n * type: 'raster',\n * url: 'mapbox://mapbox.satellite'\n * });\n *\n * // Update raster tile source to a new URL endpoint\n * map.getSource('source-id').setUrl('mapbox://mapbox.satellite');\n */\n setUrl(url: string): this {\n this.url = url;\n this._options.url = url;\n this.reload();\n\n return this;\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove() {\n this.cancelTileJSONRequest();\n }\n\n serialize(): RasterSourceSpecification | RasterDEMSourceSpecification {\n return extend({}, this._options);\n }\n\n // $FlowFixMe[method-unbinding]\n hasTile(tileID: OverscaledTileID): boolean {\n return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n }\n\n loadTile(tile: Tile, callback: Callback) {\n const use2x = browser.devicePixelRatio >= 2;\n const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), use2x, this.tileSize);\n tile.request = getImage(this.map._requestManager.transformRequest(url, ResourceType.Tile), (error, data, cacheControl, expires) => {\n delete tile.request;\n\n if (tile.aborted) {\n tile.state = 'unloaded';\n return callback(null);\n }\n\n if (error) {\n tile.state = 'errored';\n return callback(error);\n }\n\n if (!data) return callback(null);\n\n if (this.map._refreshExpiredTiles) tile.setExpiryData({cacheControl, expires});\n tile.setTexture(data, this.map.painter);\n tile.state = 'loaded';\n\n cacheEntryPossiblyAdded(this.dispatcher);\n callback(null);\n });\n }\n\n static loadTileData(tile: Tile, data: TextureImage, painter: Painter) {\n tile.setTexture(data, painter);\n }\n\n static unloadTileData(tile: Tile, painter: Painter) {\n if (tile.texture) {\n painter.saveTileTexture(tile.texture);\n }\n }\n\n // $FlowFixMe[method-unbinding]\n abortTile(tile: Tile, callback: Callback) {\n if (tile.request) {\n tile.request.cancel();\n delete tile.request;\n }\n callback();\n }\n\n // $FlowFixMe[method-unbinding]\n unloadTile(tile: Tile, callback: Callback) {\n if (tile.texture) this.map.painter.saveTileTexture(tile.texture);\n callback();\n }\n\n hasTransition(): boolean {\n return false;\n }\n\n cancelTileJSONRequest() {\n if (!this._tileJSONRequest) return;\n this._tileJSONRequest.cancel();\n this._tileJSONRequest = null;\n }\n}\n\nexport default RasterTileSource;\n","// @flow\n\nimport {CanonicalTileID} from './tile_id.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport {getImage, ResourceType} from '../util/ajax.js';\nimport EXTENT from '../data/extent.js';\nimport {RasterBoundsArray} from '../data/array_types.js';\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport SegmentVector from '../data/segment.js';\nimport Texture from '../render/texture.js';\nimport MercatorCoordinate from '../geo/mercator_coordinate.js';\nimport browser from '../util/browser.js';\nimport tileTransform, {getTilePoint} from '../geo/projection/tile_transform.js';\nimport {mat3, vec3} from 'gl-matrix';\nimport window from '../util/window.js';\n\nimport type {Source} from './source.js';\nimport type {CanvasSourceSpecification} from './canvas_source.js';\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type {\n ImageSourceSpecification,\n VideoSourceSpecification\n} from '../style-spec/types.js';\nimport type Context from '../gl/context.js';\n\ntype Coordinates = [[number, number], [number, number], [number, number], [number, number]];\n\n// perspective correction for texture mapping, see https://github.com/mapbox/mapbox-gl-js/issues/9158\n// adapted from https://math.stackexchange.com/a/339033/48653\n\nfunction basisToPoints(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n const m = [x1, x2, x3, y1, y2, y3, 1, 1, 1];\n const s = [x4, y4, 1];\n const ma = mat3.adjoint([], m);\n const [sx, sy, sz] = vec3.transformMat3(s, s, mat3.transpose(ma, ma));\n return mat3.multiply(m, [sx, 0, 0, 0, sy, 0, 0, 0, sz], m);\n}\n\nfunction getPerspectiveTransform(w: number, h: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n const s = basisToPoints(0, 0, w, 0, 0, h, w, h);\n const m = basisToPoints(x1, y1, x2, y2, x3, y3, x4, y4);\n mat3.multiply(m, mat3.adjoint(s, s), m);\n return [\n m[6] / m[8] * w / EXTENT,\n m[7] / m[8] * h / EXTENT\n ];\n}\n\n/**\n * A data source containing an image.\n * See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-image) for detailed documentation of options.\n *\n * @example\n * // add to map\n * map.addSource('some id', {\n * type: 'image',\n * url: 'https://www.mapbox.com/images/foo.png',\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // update coordinates\n * const mySource = map.getSource('some id');\n * mySource.setCoordinates([\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]);\n *\n * // update url and coordinates simultaneously\n * mySource.updateImage({\n * url: 'https://www.mapbox.com/images/bar.png',\n * coordinates: [\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]\n * });\n *\n * map.removeSource('some id'); // remove\n * @see [Example: Add an image](https://www.mapbox.com/mapbox-gl-js/example/image-on-a-map/)\n * @see [Example: Animate a series of images](https://www.mapbox.com/mapbox-gl-js/example/animate-images/)\n */\nclass ImageSource extends Evented implements Source {\n type: string;\n id: string;\n minzoom: number;\n maxzoom: number;\n tileSize: number;\n url: string;\n width: number;\n height: number;\n\n coordinates: Coordinates;\n tiles: {[_: string]: Tile};\n options: any;\n dispatcher: Dispatcher;\n map: Map;\n texture: Texture | null;\n image: HTMLImageElement | ImageBitmap | ImageData;\n // $FlowFixMe\n tileID: CanonicalTileID;\n _boundsArray: ?RasterBoundsArray;\n boundsBuffer: ?VertexBuffer;\n boundsSegments: ?SegmentVector;\n _loaded: boolean;\n _dirty: boolean;\n _imageRequest: ?Cancelable;\n perspectiveTransform: [number, number];\n\n /**\n * @private\n */\n constructor(id: string, options: ImageSourceSpecification | VideoSourceSpecification | CanvasSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.dispatcher = dispatcher;\n this.coordinates = options.coordinates;\n\n this.type = 'image';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.tileSize = 512;\n this.tiles = {};\n this._loaded = false;\n\n this.setEventedParent(eventedParent);\n\n this.options = options;\n this._dirty = false;\n }\n\n load(newCoordinates?: Coordinates, loaded?: boolean) {\n this._loaded = loaded || false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n\n this.url = this.options.url;\n\n this._imageRequest = getImage(this.map._requestManager.transformRequest(this.url, ResourceType.Image), (err, image) => {\n this._imageRequest = null;\n this._loaded = true;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (image) {\n const {HTMLImageElement} = window;\n if (image instanceof HTMLImageElement) {\n this.image = browser.getImageData(image);\n } else {\n this.image = image;\n }\n this._dirty = true;\n this.width = this.image.width;\n this.height = this.image.height;\n if (newCoordinates) {\n this.coordinates = newCoordinates;\n }\n this._finishLoading();\n }\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n /**\n * Updates the image URL and, optionally, the coordinates. To avoid having the image flash after changing,\n * set the `raster-fade-duration` paint property on the raster layer to 0.\n *\n * @param {Object} options Options object.\n * @param {string} [options.url] Required image URL.\n * @param {Array>} [options.coordinates] Four geographical coordinates,\n * represented as arrays of longitude and latitude numbers, which define the corners of the image.\n * The coordinates start at the top left corner of the image and proceed in clockwise order.\n * They do not have to represent a rectangle.\n * @returns {ImageSource} Returns itself to allow for method chaining.\n * @example\n * // Add to an image source to the map with some initial URL and coordinates\n * map.addSource('image_source_id', {\n * type: 'image',\n * url: 'https://www.mapbox.com/images/foo.png',\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n * // Then update the image URL and coordinates\n * imageSource.updateImage({\n * url: 'https://www.mapbox.com/images/bar.png',\n * coordinates: [\n * [-76.5433, 39.1857],\n * [-76.5280, 39.1838],\n * [-76.5295, 39.1768],\n * [-76.5452, 39.1787]\n * ]\n * });\n */\n updateImage(options: {url: string, coordinates?: Coordinates}): this {\n if (!this.image || !options.url) {\n return this;\n }\n if (this._imageRequest && options.url !== this.options.url) {\n this._imageRequest.cancel();\n this._imageRequest = null;\n }\n this.options.url = options.url;\n this.load(options.coordinates, this._loaded);\n return this;\n }\n\n _finishLoading() {\n if (this.map) {\n this.setCoordinates(this.coordinates);\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n }\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map) {\n this.map = map;\n this.load();\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove() {\n if (this._imageRequest) {\n this._imageRequest.cancel();\n this._imageRequest = null;\n }\n if (this.texture) this.texture.destroy();\n }\n\n /**\n * Sets the image's coordinates and re-renders the map.\n *\n * @param {Array>} coordinates Four geographical coordinates,\n * represented as arrays of longitude and latitude numbers, which define the corners of the image.\n * The coordinates start at the top left corner of the image and proceed in clockwise order.\n * They do not have to represent a rectangle.\n * @returns {ImageSource} Returns itself to allow for method chaining.\n * @example\n * // Add an image source to the map with some initial coordinates\n * map.addSource('image_source_id', {\n * type: 'image',\n * url: 'https://www.mapbox.com/images/foo.png',\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n * // Then update the image coordinates\n * imageSource.setCoordinates([\n * [-76.5433, 39.1857],\n * [-76.5280, 39.1838],\n * [-76.5295, 39.1768],\n * [-76.5452, 39.1787]\n * ]);\n */\n setCoordinates(coordinates: Coordinates): this {\n this.coordinates = coordinates;\n this._boundsArray = undefined;\n\n // Calculate which mercator tile is suitable for rendering the video in\n // and create a buffer with the corner coordinates. These coordinates\n // may be outside the tile, because raster tiles aren't clipped when rendering.\n\n // transform the geo coordinates into (zoom 0) tile space coordinates\n // $FlowFixMe[method-unbinding]\n const cornerCoords = coordinates.map(MercatorCoordinate.fromLngLat);\n\n // Compute the coordinates of the tile we'll use to hold this image's\n // render data\n this.tileID = getCoordinatesCenterTileID(cornerCoords);\n\n // Constrain min/max zoom to our tile's zoom level in order to force\n // SourceCache to request this tile (no matter what the map's zoom\n // level)\n this.minzoom = this.maxzoom = this.tileID.z;\n\n this.fire(new Event('data', {dataType:'source', sourceDataType: 'content'}));\n return this;\n }\n\n // $FlowFixMe[method-unbinding]\n _clear() {\n this._boundsArray = undefined;\n }\n\n _prepareData(context: Context) {\n for (const w in this.tiles) {\n const tile = this.tiles[w];\n if (tile.state !== 'loaded') {\n tile.state = 'loaded';\n tile.texture = this.texture;\n }\n }\n\n if (this._boundsArray) return;\n\n const tileTr = tileTransform(this.tileID, this.map.transform.projection);\n\n // Transform the corner coordinates into the coordinate space of our tile.\n const [tl, tr, br, bl] = this.coordinates.map((coord) => {\n const projectedCoord = tileTr.projection.project(coord[0], coord[1]);\n return getTilePoint(tileTr, projectedCoord)._round();\n });\n\n this.perspectiveTransform = getPerspectiveTransform(\n this.width, this.height, tl.x, tl.y, tr.x, tr.y, bl.x, bl.y, br.x, br.y);\n\n const boundsArray = this._boundsArray = new RasterBoundsArray();\n boundsArray.emplaceBack(tl.x, tl.y, 0, 0);\n boundsArray.emplaceBack(tr.x, tr.y, EXTENT, 0);\n boundsArray.emplaceBack(bl.x, bl.y, 0, EXTENT);\n boundsArray.emplaceBack(br.x, br.y, EXTENT, EXTENT);\n\n if (this.boundsBuffer) {\n this.boundsBuffer.destroy();\n }\n this.boundsBuffer = context.createVertexBuffer(boundsArray, boundsAttributes.members);\n this.boundsSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n }\n\n // $FlowFixMe[method-unbinding]\n prepare() {\n if (Object.keys(this.tiles).length === 0 || !this.image) return;\n\n const context = this.map.painter.context;\n const gl = context.gl;\n\n if (this._dirty) {\n if (!this.texture) {\n this.texture = new Texture(context, this.image, gl.RGBA);\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n } else {\n this.texture.update(this.image);\n }\n this._dirty = false;\n }\n\n this._prepareData(context);\n }\n\n loadTile(tile: Tile, callback: Callback) {\n // We have a single tile -- whoose coordinates are this.tileID -- that\n // covers the image we want to render. If that's the one being\n // requested, set it up with the image; otherwise, mark the tile as\n // `errored` to indicate that we have no data for it.\n // If the world wraps, we may have multiple \"wrapped\" copies of the\n // single tile.\n if (this.tileID && this.tileID.equals(tile.tileID.canonical)) {\n this.tiles[String(tile.tileID.wrap)] = tile;\n tile.buckets = {};\n callback(null);\n } else {\n tile.state = 'errored';\n callback(null);\n }\n }\n\n serialize(): Object {\n return {\n type: 'image',\n url: this.options.url,\n coordinates: this.coordinates\n };\n }\n\n hasTransition(): boolean {\n return false;\n }\n}\n\n/**\n * Given a list of coordinates, get their center as a coordinate.\n *\n * @returns centerpoint\n * @private\n */\nexport function getCoordinatesCenterTileID(coords: Array): CanonicalTileID {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const coord of coords) {\n minX = Math.min(minX, coord.x);\n minY = Math.min(minY, coord.y);\n maxX = Math.max(maxX, coord.x);\n maxY = Math.max(maxY, coord.y);\n }\n\n const dx = maxX - minX;\n const dy = maxY - minY;\n const dMax = Math.max(dx, dy);\n const zoom = Math.max(0, Math.floor(-Math.log(dMax) / Math.LN2));\n const tilesAtZoom = Math.pow(2, zoom);\n\n return new CanonicalTileID(\n zoom,\n Math.floor((minX + maxX) / 2 * tilesAtZoom),\n Math.floor((minY + maxY) / 2 * tilesAtZoom));\n}\n\nexport default ImageSource;\n","// @flow\n\nimport {bindAll} from '../util/util.js';\n\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Event, Evented} from '../util/evented.js';\nimport type Map from '../ui/map.js';\nimport type Tile from './tile.js';\nimport type {OverscaledTileID} from './tile_id.js';\nimport type {Callback} from '../types/callback.js';\nimport type {MapEvent} from '../ui/events.js';\nimport {CanonicalTileID} from './tile_id.js';\n\n/**\n * The `Source` interface must be implemented by each source type, including \"core\" types like `vector`, `raster`,\n * or `video`) and all custom, third-party types.\n *\n * @private\n *\n * @param {string} id The id for the source. Must not be used by any existing source.\n * @param {Object} options Source options, specific to the source type (except for `options.type`, which is always\n * required).\n * @param {string} options.type The source type, matching the value of `name` used in {@link Style#addSourceType}.\n * @param {Dispatcher} dispatcher A {@link Dispatcher} instance, which can be used to send messages to the workers.\n *\n * @fires Map.event:data Fires `data` with `{dataType: 'source', sourceDataType: 'metadata'}`\n * to indicate that any necessary metadata has been loaded so that it's okay to call `loadTile`;\n * fires `data` with `{dataType: 'source', sourceDataType: 'content'}`\n * to indicate that the source data has changed, so that any current caches should be flushed.\n * @property {string} id The id for the source. Must match the id passed to the constructor.\n * @property {number} minzoom\n * @property {number} maxzoom\n * @property {boolean} isTileClipped `false` if tiles can be drawn outside their boundaries, `true` if they cannot.\n * @property {boolean} reparseOverscaled `true` if tiles should be sent back to the worker for each overzoomed zoom\n * level, `false` if not.\n * @property {boolean} roundZoom `true` if zoom levels are rounded to the nearest integer in the source data, `false`\n * if they are floor-ed to the nearest integer.\n */\nexport interface Source {\n +type: string;\n id: string;\n minzoom: number,\n maxzoom: number,\n tileSize: number,\n attribution?: string,\n\n roundZoom?: boolean,\n isTileClipped?: boolean,\n mapbox_logo?: boolean,\n tileID?: CanonicalTileID;\n reparseOverscaled?: boolean,\n vectorLayerIds?: Array,\n minTileCacheSize?: ?number;\n maxTileCacheSize?: ?number;\n language?: ?string;\n worldview?: ?string;\n\n hasTransition(): boolean;\n loaded(): boolean;\n\n fire(event: Event): mixed;\n on(type: MapEvent, listener: (Object) => any): Evented;\n off(type: MapEvent, listener: (Object) => any): Evented;\n setEventedParent(parent: ?Evented, data?: Object | () => Object): Evented;\n\n +onAdd?: (map: Map) => void;\n +onRemove?: (map: Map) => void;\n\n loadTile(tile: Tile, callback: Callback, tileWorkers?: {[string]: Actor}): void;\n +hasTile?: (tileID: OverscaledTileID) => boolean;\n +abortTile?: (tile: Tile, callback: Callback) => void;\n +unloadTile?: (tile: Tile, callback: Callback) => void;\n +reload?: () => void;\n\n /**\n * @returns A plain (stringifiable) JS object representing the current state of the source.\n * Creating a source using the returned object as the `options` should result in a Source that is\n * equivalent to this one.\n * @private\n */\n serialize(): Object;\n\n +prepare?: () => void;\n\n +afterUpdate?: () => void;\n +_clear?: () => void;\n}\n\ntype SourceStatics = {\n /*\n * An optional URL to a script which, when run by a Worker, registers a {@link WorkerSource}\n * implementation for this Source type by calling `self.registerWorkerSource(workerSource: WorkerSource)`.\n */\n workerSourceURL?: URL;\n};\n\nexport type SourceClass = Class & SourceStatics;\n\nimport vector from '../source/vector_tile_source.js';\nimport raster from '../source/raster_tile_source.js';\nimport rasterDem from '../source/raster_dem_tile_source.js';\nimport geojson from '../source/geojson_source.js';\nimport video from '../source/video_source.js';\nimport image from '../source/image_source.js';\nimport canvas from '../source/canvas_source.js';\nimport custom from '../source/custom_source.js';\n\nimport type {SourceSpecification} from '../style-spec/types.js';\n\nconst sourceTypes: {[string]: Class} = {\n vector,\n raster,\n 'raster-dem': rasterDem,\n geojson,\n video,\n image,\n canvas,\n custom\n};\n\n/*\n * Creates a tiled data source instance given an options object.\n *\n * @param id\n * @param {Object} source A source definition object compliant with\n * [`mapbox-gl-style-spec`](https://www.mapbox.com/mapbox-gl-style-spec/#sources) or, for a third-party source type,\n * with that type's requirements.\n * @param {Dispatcher} dispatcher\n * @returns {Source}\n */\nexport const create = function(id: string, specification: SourceSpecification, dispatcher: Dispatcher, eventedParent: Evented): Source {\n // $FlowFixMe[prop-missing]\n const source = new sourceTypes[specification.type](id, (specification: any), dispatcher, eventedParent);\n\n if (source.id !== id) {\n throw new Error(`Expected Source id to be ${id} instead of ${source.id}`);\n }\n\n bindAll(['load', 'abort', 'unload', 'serialize', 'prepare'], source);\n return source;\n};\n\nexport const getType = function (name: string): Class {\n return sourceTypes[name];\n};\n\nexport const setType = function (name: string, type: Class) {\n sourceTypes[name] = type;\n};\n\nexport interface Actor {\n send(type: string, data: Object, callback: Callback): void;\n}\n","// @flow\n\nimport {getImage, ResourceType} from '../util/ajax.js';\nimport {extend, prevPowerOfTwo} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport browser from '../util/browser.js';\nimport window from '../util/window.js';\nimport offscreenCanvasSupported from '../util/offscreen_canvas_supported.js';\nimport {OverscaledTileID} from './tile_id.js';\nimport RasterTileSource from './raster_tile_source.js';\n// ensure DEMData is registered for worker transfer on main thread:\nimport DEMData from '../data/dem_data.js';\n\nimport type {Source} from './source.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {TextureImage} from '../render/texture.js';\nimport type {RasterDEMSourceSpecification} from '../style-spec/types.js';\n\n// $FlowFixMe[method-unbinding]\nclass RasterDEMTileSource extends RasterTileSource implements Source {\n encoding: \"mapbox\" | \"terrarium\";\n\n constructor(id: string, options: RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super(id, options, dispatcher, eventedParent);\n this.type = 'raster-dem';\n this.maxzoom = 22;\n this._options = extend({type: 'raster-dem'}, options);\n this.encoding = options.encoding || \"mapbox\";\n }\n\n loadTile(tile: Tile, callback: Callback) {\n const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), false, this.tileSize);\n tile.request = getImage(this.map._requestManager.transformRequest(url, ResourceType.Tile), imageLoaded.bind(this));\n\n // $FlowFixMe[missing-this-annot]\n function imageLoaded(err: ?Error, img: ?TextureImage, cacheControl: ?string, expires: ?string) {\n delete tile.request;\n if (tile.aborted) {\n tile.state = 'unloaded';\n callback(null);\n } else if (err) {\n tile.state = 'errored';\n callback(err);\n } else if (img) {\n if (this.map._refreshExpiredTiles) tile.setExpiryData({cacheControl, expires});\n const transfer = window.ImageBitmap && img instanceof window.ImageBitmap && offscreenCanvasSupported();\n // DEMData uses 1px padding. Handle cases with image buffer of 1 and 2 pxs, the rest assume default buffer 0\n // in order to keep the previous implementation working (no validation against tileSize).\n const buffer = (img.width - prevPowerOfTwo(img.width)) / 2;\n // padding is used in getImageData. As DEMData has 1px padding, if DEM tile buffer is 2px, discard outermost pixels.\n const padding = 1 - buffer;\n const borderReady = padding < 1;\n if (!borderReady && !tile.neighboringTiles) {\n tile.neighboringTiles = this._getNeighboringTiles(tile.tileID);\n }\n\n // $FlowFixMe[incompatible-call]\n const rawImageData = transfer ? img : browser.getImageData(img, padding);\n const params = {\n uid: tile.uid,\n coord: tile.tileID,\n source: this.id,\n rawImageData,\n encoding: this.encoding,\n padding\n };\n\n if (!tile.actor || tile.state === 'expired') {\n tile.actor = this.dispatcher.getActor();\n tile.actor.send('loadDEMTile', params, done.bind(this), undefined, true);\n }\n }\n }\n\n // $FlowFixMe[missing-this-annot]\n function done(err: ?Error, dem: ?DEMData) {\n if (err) {\n tile.state = 'errored';\n callback(err);\n }\n\n if (dem) {\n tile.dem = dem;\n tile.dem.onDeserialize();\n tile.needsHillshadePrepare = true;\n tile.needsDEMTextureUpload = true;\n tile.state = 'loaded';\n callback(null);\n }\n }\n }\n\n _getNeighboringTiles(tileID: OverscaledTileID): {[number]: {backfilled: boolean}} {\n const canonical = tileID.canonical;\n const dim = Math.pow(2, canonical.z);\n\n const px = (canonical.x - 1 + dim) % dim;\n const pxw = canonical.x === 0 ? tileID.wrap - 1 : tileID.wrap;\n const nx = (canonical.x + 1 + dim) % dim;\n const nxw = canonical.x + 1 === dim ? tileID.wrap + 1 : tileID.wrap;\n\n const neighboringTiles = {};\n // add adjacent tiles\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y).key] = {backfilled: false};\n\n // Add upper neighboringTiles\n if (canonical.y > 0) {\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y - 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, tileID.wrap, canonical.z, canonical.x, canonical.y - 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y - 1).key] = {backfilled: false};\n }\n // Add lower neighboringTiles\n if (canonical.y + 1 < dim) {\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y + 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, tileID.wrap, canonical.z, canonical.x, canonical.y + 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y + 1).key] = {backfilled: false};\n }\n\n return neighboringTiles;\n }\n\n // $FlowFixMe[method-unbinding]\n unloadTile(tile: Tile) {\n if (tile.demTexture) this.map.painter.saveTileTexture(tile.demTexture);\n if (tile.fbo) {\n tile.fbo.destroy();\n delete tile.fbo;\n }\n if (tile.dem) delete tile.dem;\n delete tile.neighboringTiles;\n\n tile.state = 'unloaded';\n }\n\n}\n\nexport default RasterDEMTileSource;\n","// @flow\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\n\nimport {extend} from '../util/util.js';\nimport EXTENT from '../data/extent.js';\nimport {ResourceType} from '../util/ajax.js';\nimport browser from '../util/browser.js';\n\nimport type {Source} from './source.js';\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type Actor from '../util/actor.js';\nimport type {Callback} from '../types/callback.js';\nimport type {GeoJSONWorkerOptions} from './geojson_worker_source.js';\nimport type {GeoJSON, GeoJSONFeature} from '@mapbox/geojson-types';\nimport type {GeoJSONSourceSpecification, PromoteIdSpecification} from '../style-spec/types.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\n/**\n * A source containing GeoJSON.\n * See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson) for detailed documentation of options.\n *\n * @example\n * map.addSource('some id', {\n * type: 'geojson',\n * data: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_ports.geojson'\n * });\n *\n * @example\n * map.addSource('some id', {\n * type: 'geojson',\n * data: {\n * \"type\": \"FeatureCollection\",\n * \"features\": [{\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [\n * -76.53063297271729,\n * 39.18174077994108\n * ]\n * }\n * }]\n * }\n * });\n *\n * @example\n * map.getSource('some id').setData({\n * \"type\": \"FeatureCollection\",\n * \"features\": [{\n * \"type\": \"Feature\",\n * \"properties\": {\"name\": \"Null Island\"},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [ 0, 0 ]\n * }\n * }]\n * });\n * @see [Example: Draw GeoJSON points](https://www.mapbox.com/mapbox-gl-js/example/geojson-markers/)\n * @see [Example: Add a GeoJSON line](https://www.mapbox.com/mapbox-gl-js/example/geojson-line/)\n * @see [Example: Create a heatmap from points](https://www.mapbox.com/mapbox-gl-js/example/heatmap/)\n * @see [Example: Create and style clusters](https://www.mapbox.com/mapbox-gl-js/example/cluster/)\n */\nclass GeoJSONSource extends Evented implements Source {\n type: 'geojson';\n id: string;\n minzoom: number;\n maxzoom: number;\n tileSize: number;\n attribution: string | void;\n promoteId: ?PromoteIdSpecification;\n\n isTileClipped: boolean | void;\n reparseOverscaled: boolean | void;\n _data: GeoJSON | string;\n _options: GeoJSONSourceSpecification;\n workerOptions: GeoJSONWorkerOptions;\n map: Map;\n actor: Actor;\n _loaded: boolean;\n _coalesce: ?boolean;\n _metadataFired: ?boolean;\n _collectResourceTiming: boolean;\n _pendingLoad: ?Cancelable;\n\n /**\n * @private\n */\n constructor(id: string, options: GeoJSONSourceSpecification & {workerOptions?: GeoJSONWorkerOptions, collectResourceTiming: boolean}, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n\n this.id = id;\n\n // `type` is a property rather than a constant to make it easy for 3rd\n // parties to use GeoJSONSource to build their own source types.\n this.type = 'geojson';\n\n this.minzoom = 0;\n this.maxzoom = 18;\n this.tileSize = 512;\n this.isTileClipped = true;\n this.reparseOverscaled = true;\n this._loaded = false;\n\n this.actor = dispatcher.getActor();\n this.setEventedParent(eventedParent);\n\n this._data = (options.data: any);\n this._options = extend({}, options);\n\n this._collectResourceTiming = options.collectResourceTiming;\n\n if (options.maxzoom !== undefined) this.maxzoom = options.maxzoom;\n if (options.type) this.type = options.type;\n if (options.attribution) this.attribution = options.attribution;\n this.promoteId = options.promoteId;\n\n const scale = EXTENT / this.tileSize;\n\n // sent to the worker, along with `url: ...` or `data: literal geojson`,\n // so that it can load/parse/index the geojson data\n // extending with `options.workerOptions` helps to make it easy for\n // third-party sources to hack/reuse GeoJSONSource.\n this.workerOptions = extend({\n source: this.id,\n cluster: options.cluster || false,\n geojsonVtOptions: {\n buffer: (options.buffer !== undefined ? options.buffer : 128) * scale,\n tolerance: (options.tolerance !== undefined ? options.tolerance : 0.375) * scale,\n extent: EXTENT,\n maxZoom: this.maxzoom,\n lineMetrics: options.lineMetrics || false,\n generateId: options.generateId || false\n },\n superclusterOptions: {\n maxZoom: options.clusterMaxZoom !== undefined ? options.clusterMaxZoom : this.maxzoom - 1,\n minPoints: Math.max(2, options.clusterMinPoints || 2),\n extent: EXTENT,\n radius: (options.clusterRadius !== undefined ? options.clusterRadius : 50) * scale,\n log: false,\n generateId: options.generateId || false\n },\n clusterProperties: options.clusterProperties,\n filter: options.filter\n }, options.workerOptions);\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map) {\n this.map = map;\n this.setData(this._data);\n }\n\n /**\n * Sets the GeoJSON data and re-renders the map.\n *\n * @param {Object | string} data A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files.\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('source_id', {\n * type: 'geojson',\n * data: {\n * type: 'FeatureCollection',\n * features: []\n * }\n * });\n * const geojsonSource = map.getSource('source_id');\n * // Update the data after the GeoJSON source was created\n * geojsonSource.setData({\n * \"type\": \"FeatureCollection\",\n * \"features\": [{\n * \"type\": \"Feature\",\n * \"properties\": {\"name\": \"Null Island\"},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [ 0, 0 ]\n * }\n * }]\n * });\n */\n setData(data: GeoJSON | string): this {\n this._data = data;\n this._updateWorkerData();\n return this;\n }\n\n /**\n * For clustered sources, fetches the zoom at which the given cluster expands.\n *\n * @param {number} clusterId The value of the cluster's `cluster_id` property.\n * @param {Function} callback A callback to be called when the zoom value is retrieved (`(error, zoom) => { ... }`).\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * // Assuming the map has a layer named 'clusters' and a source 'earthquakes'\n * // The following creates a camera animation on cluster feature click\n * // the clicked layer should be filtered to only include clusters, e.g. `filter: ['has', 'point_count']`\n * map.on('click', 'clusters', (e) => {\n * const features = map.queryRenderedFeatures(e.point, {\n * layers: ['clusters']\n * });\n *\n * const clusterId = features[0].properties.cluster_id;\n *\n * // Ease the camera to the next cluster expansion\n * map.getSource('earthquakes').getClusterExpansionZoom(\n * clusterId,\n * (err, zoom) => {\n * if (!err) {\n * map.easeTo({\n * center: features[0].geometry.coordinates,\n * zoom\n * });\n * }\n * }\n * );\n * });\n */\n getClusterExpansionZoom(clusterId: number, callback: Callback): this {\n this.actor.send('geojson.getClusterExpansionZoom', {clusterId, source: this.id}, callback);\n return this;\n }\n\n /**\n * For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).\n *\n * @param {number} clusterId The value of the cluster's `cluster_id` property.\n * @param {Function} callback A callback to be called when the features are retrieved (`(error, features) => { ... }`).\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * // Retrieve cluster children on click\n * // the clicked layer should be filtered to only include clusters, e.g. `filter: ['has', 'point_count']`\n * map.on('click', 'clusters', (e) => {\n * const features = map.queryRenderedFeatures(e.point, {\n * layers: ['clusters']\n * });\n *\n * const clusterId = features[0].properties.cluster_id;\n *\n * clusterSource.getClusterChildren(clusterId, (error, features) => {\n * if (!error) {\n * console.log('Cluster children:', features);\n * }\n * });\n * });\n *\n */\n getClusterChildren(clusterId: number, callback: Callback>): this {\n this.actor.send('geojson.getClusterChildren', {clusterId, source: this.id}, callback);\n return this;\n }\n\n /**\n * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).\n *\n * @param {number} clusterId The value of the cluster's `cluster_id` property.\n * @param {number} limit The maximum number of features to return. Defaults to `10` if a falsy value is given.\n * @param {number} offset The number of features to skip (for example, for pagination). Defaults to `0` if a falsy value is given.\n * @param {Function} callback A callback to be called when the features are retrieved (`(error, features) => { ... }`).\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * // Retrieve cluster leaves on click\n * // the clicked layer should be filtered to only include clusters, e.g. `filter: ['has', 'point_count']`\n * map.on('click', 'clusters', (e) => {\n * const features = map.queryRenderedFeatures(e.point, {\n * layers: ['clusters']\n * });\n *\n * const clusterId = features[0].properties.cluster_id;\n * const pointCount = features[0].properties.point_count;\n * const clusterSource = map.getSource('clusters');\n *\n * clusterSource.getClusterLeaves(clusterId, pointCount, 0, (error, features) => {\n * // Print cluster leaves in the console\n * console.log('Cluster leaves:', error, features);\n * });\n * });\n */\n getClusterLeaves(clusterId: number, limit: number, offset: number, callback: Callback>): this {\n this.actor.send('geojson.getClusterLeaves', {\n source: this.id,\n clusterId,\n limit,\n offset\n }, callback);\n return this;\n }\n\n /*\n * Responsible for invoking WorkerSource's geojson.loadData target, which\n * handles loading the geojson data and preparing to serve it up as tiles,\n * using geojson-vt or supercluster as appropriate.\n */\n _updateWorkerData() {\n // if there's an earlier loadData to finish, wait until it finishes and then do another update\n if (this._pendingLoad) {\n this._coalesce = true;\n return;\n }\n\n this.fire(new Event('dataloading', {dataType: 'source'}));\n\n this._loaded = false;\n const options = extend({}, this.workerOptions);\n const data = this._data;\n if (typeof data === 'string') {\n options.request = this.map._requestManager.transformRequest(browser.resolveURL(data), ResourceType.Source);\n options.request.collectResourceTiming = this._collectResourceTiming;\n } else {\n options.data = JSON.stringify(data);\n }\n\n // target {this.type}.loadData rather than literally geojson.loadData,\n // so that other geojson-like source types can easily reuse this\n // implementation\n this._pendingLoad = this.actor.send(`${this.type}.loadData`, options, (err, result) => {\n this._loaded = true;\n this._pendingLoad = null;\n\n if (err) {\n this.fire(new ErrorEvent(err));\n\n } else {\n // although GeoJSON sources contain no metadata, we fire this event at first\n // to let the SourceCache know its ok to start requesting tiles.\n const data: Object = {dataType: 'source', sourceDataType: this._metadataFired ? 'content' : 'metadata'};\n if (this._collectResourceTiming && result && result.resourceTiming && result.resourceTiming[this.id]) {\n data.resourceTiming = result.resourceTiming[this.id];\n }\n this.fire(new Event('data', data));\n this._metadataFired = true;\n }\n\n if (this._coalesce) {\n this._updateWorkerData();\n this._coalesce = false;\n }\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n loadTile(tile: Tile, callback: Callback) {\n const message = !tile.actor ? 'loadTile' : 'reloadTile';\n tile.actor = this.actor;\n const params = {\n type: this.type,\n uid: tile.uid,\n tileID: tile.tileID,\n tileZoom: tile.tileZoom,\n zoom: tile.tileID.overscaledZ,\n maxZoom: this.maxzoom,\n tileSize: this.tileSize,\n source: this.id,\n pixelRatio: browser.devicePixelRatio,\n showCollisionBoxes: this.map.showCollisionBoxes,\n promoteId: this.promoteId\n };\n\n tile.request = this.actor.send(message, params, (err, data) => {\n delete tile.request;\n tile.unloadVectorData();\n\n if (tile.aborted) {\n return callback(null);\n }\n\n if (err) {\n return callback(err);\n }\n\n tile.loadVectorData(data, this.map.painter, message === 'reloadTile');\n\n return callback(null);\n }, undefined, message === 'loadTile');\n }\n\n // $FlowFixMe[method-unbinding]\n abortTile(tile: Tile) {\n if (tile.request) {\n tile.request.cancel();\n delete tile.request;\n }\n tile.aborted = true;\n }\n\n // $FlowFixMe[method-unbinding]\n unloadTile(tile: Tile) {\n tile.unloadVectorData();\n this.actor.send('removeTile', {uid: tile.uid, type: this.type, source: this.id});\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove() {\n if (this._pendingLoad) {\n this._pendingLoad.cancel();\n }\n }\n\n serialize(): GeoJSONSourceSpecification {\n return extend({}, this._options, {\n type: this.type,\n data: this._data\n });\n }\n\n hasTransition(): boolean {\n return false;\n }\n}\n\nexport default GeoJSONSource;\n","// @flow\n\nimport {getVideo, ResourceType} from '../util/ajax.js';\n\nimport ImageSource from './image_source.js';\nimport Texture from '../render/texture.js';\nimport {ErrorEvent} from '../util/evented.js';\nimport ValidationError from '../style-spec/error/validation_error.js';\n\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Evented} from '../util/evented.js';\nimport type {VideoSourceSpecification} from '../style-spec/types.js';\n\n/**\n * A data source containing video.\n * See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-video) for detailed documentation of options.\n *\n * @example\n * // add to map\n * map.addSource('some id', {\n * type: 'video',\n * url: [\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.mp4',\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.webm'\n * ],\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // update\n * const mySource = map.getSource('some id');\n * mySource.setCoordinates([\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]);\n *\n * map.removeSource('some id'); // remove\n * @see [Example: Add a video](https://www.mapbox.com/mapbox-gl-js/example/video-on-a-map/)\n */\nclass VideoSource extends ImageSource {\n options: VideoSourceSpecification;\n urls: Array;\n video: HTMLVideoElement;\n roundZoom: boolean;\n\n /**\n * @private\n */\n constructor(id: string, options: VideoSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super(id, options, dispatcher, eventedParent);\n this.roundZoom = true;\n this.type = 'video';\n this.options = options;\n }\n\n load() {\n this._loaded = false;\n const options = this.options;\n\n this.urls = [];\n for (const url of options.urls) {\n this.urls.push(this.map._requestManager.transformRequest(url, ResourceType.Source).url);\n }\n\n getVideo(this.urls, (err, video) => {\n this._loaded = true;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (video) {\n this.video = video;\n this.video.loop = true;\n\n // Prevent the video from taking over the screen in iOS\n this.video.setAttribute('playsinline', '');\n\n // Start repainting when video starts playing. hasTransition() will then return\n // true to trigger additional frames as long as the videos continues playing.\n this.video.addEventListener('playing', () => {\n this.map.triggerRepaint();\n });\n\n if (this.map) {\n this.video.play();\n }\n\n this._finishLoading();\n }\n });\n }\n\n /**\n * Pauses the video.\n *\n * @example\n * // Assuming a video source identified by video_source_id was added to the map\n * const videoSource = map.getSource('video_source_id');\n *\n * // Pauses the video\n * videoSource.pause();\n */\n pause() {\n if (this.video) {\n this.video.pause();\n }\n }\n\n /**\n * Plays the video.\n *\n * @example\n * // Assuming a video source identified by video_source_id was added to the map\n * const videoSource = map.getSource('video_source_id');\n *\n * // Starts the video\n * videoSource.play();\n */\n play() {\n if (this.video) {\n this.video.play();\n }\n }\n\n /**\n * Sets playback to a timestamp, in seconds.\n * @private\n */\n seek(seconds: number) {\n if (this.video) {\n const seekableRange = this.video.seekable;\n if (seconds < seekableRange.start(0) || seconds > seekableRange.end(0)) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${this.id}`, null, `Playback for this video can be set only between the ${seekableRange.start(0)} and ${seekableRange.end(0)}-second mark.`)));\n } else this.video.currentTime = seconds;\n }\n }\n\n /**\n * Returns the HTML `video` element.\n *\n * @returns {HTMLVideoElement} The HTML `video` element.\n * @example\n * // Assuming a video source identified by video_source_id was added to the map\n * const videoSource = map.getSource('video_source_id');\n *\n * videoSource.getVideo(); // \n */\n getVideo(): HTMLVideoElement {\n return this.video;\n }\n\n onAdd(map: Map) {\n if (this.map) return;\n this.map = map;\n this.load();\n if (this.video) {\n this.video.play();\n this.setCoordinates(this.coordinates);\n }\n }\n\n /**\n * Sets the video's coordinates and re-renders the map.\n *\n * @method setCoordinates\n * @instance\n * @memberof VideoSource\n * @returns {VideoSource} Returns itself to allow for method chaining.\n * @example\n * // Add a video source to the map to map\n * map.addSource('video_source_id', {\n * type: 'video',\n * url: [\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.mp4',\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.webm'\n * ],\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // Then update the video source coordinates by new coordinates\n * const videoSource = map.getSource('video_source_id');\n * videoSource.setCoordinates([\n * [-76.5433, 39.1857],\n * [-76.5280, 39.1838],\n * [-76.5295, 39.1768],\n * [-76.5452, 39.1787]\n * ]);\n */\n // setCoordinates inherited from ImageSource\n\n prepare() {\n if (Object.keys(this.tiles).length === 0 || this.video.readyState < 2) {\n return; // not enough data for current position\n }\n\n const context = this.map.painter.context;\n const gl = context.gl;\n\n if (!this.texture) {\n this.texture = new Texture(context, this.video, gl.RGBA);\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n this.width = this.video.videoWidth;\n this.height = this.video.videoHeight;\n\n } else if (!this.video.paused) {\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, this.video);\n }\n\n this._prepareData(context);\n }\n\n serialize(): VideoSourceSpecification {\n return {\n type: 'video',\n urls: this.urls,\n coordinates: this.coordinates\n };\n }\n\n hasTransition(): boolean {\n return this.video && !this.video.paused;\n }\n}\n\nexport default VideoSource;\n","// @flow\n\nimport ImageSource from './image_source.js';\n\nimport window from '../util/window.js';\nimport Texture from '../render/texture.js';\nimport {ErrorEvent} from '../util/evented.js';\nimport ValidationError from '../style-spec/error/validation_error.js';\n\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Evented} from '../util/evented.js';\n\nexport type CanvasSourceSpecification = {|\n \"type\": \"canvas\",\n \"coordinates\": [[number, number], [number, number], [number, number], [number, number]],\n \"animate\"?: boolean,\n \"canvas\": string | HTMLCanvasElement\n|};\n\n/**\n * Options to add a canvas source type to the map.\n *\n * @typedef {Object} CanvasSourceOptions\n * @property {string} type Source type. Must be `\"canvas\"`.\n * @property {string|HTMLCanvasElement} canvas Canvas source from which to read pixels. Can be a string representing the ID of the canvas element, or the `HTMLCanvasElement` itself.\n * @property {Array>} coordinates Four geographical coordinates denoting where to place the corners of the canvas, specified in `[longitude, latitude]` pairs.\n * @property {boolean} [animate=true] Whether the canvas source is animated. If the canvas is static (pixels do not need to be re-read on every frame), `animate` should be set to `false` to improve performance.\n */\n\n/**\n * A data source containing the contents of an HTML canvas. See {@link CanvasSourceOptions} for detailed documentation of options.\n *\n * @example\n * // add to map\n * map.addSource('some id', {\n * type: 'canvas',\n * canvas: 'idOfMyHTMLCanvas',\n * animate: true,\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // update\n * const mySource = map.getSource('some id');\n * mySource.setCoordinates([\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]);\n *\n * map.removeSource('some id'); // remove\n * @see [Example: Add a canvas source](https://docs.mapbox.com/mapbox-gl-js/example/canvas-source/)\n */\nclass CanvasSource extends ImageSource {\n options: CanvasSourceSpecification;\n animate: boolean;\n canvas: HTMLCanvasElement;\n play: () => void;\n pause: () => void;\n _playing: boolean;\n\n /**\n * @private\n */\n constructor(id: string, options: CanvasSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super(id, options, dispatcher, eventedParent);\n\n // We build in some validation here, since canvas sources aren't included in the style spec:\n if (!options.coordinates) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'missing required property \"coordinates\"')));\n } else if (!Array.isArray(options.coordinates) || options.coordinates.length !== 4 ||\n options.coordinates.some(c => !Array.isArray(c) || c.length !== 2 || c.some(l => typeof l !== 'number'))) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, '\"coordinates\" property must be an array of 4 longitude/latitude array pairs')));\n }\n\n if (options.animate && typeof options.animate !== 'boolean') {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'optional \"animate\" property must be a boolean value')));\n }\n\n if (!options.canvas) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'missing required property \"canvas\"')));\n } else if (typeof options.canvas !== 'string' && !(options.canvas instanceof window.HTMLCanvasElement)) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, '\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance')));\n }\n\n this.options = options;\n this.animate = options.animate !== undefined ? options.animate : true;\n }\n\n /**\n * Enables animation. The image will be copied from the canvas to the map on each frame.\n *\n * @method play\n * @instance\n * @memberof CanvasSource\n */\n\n /**\n * Disables animation. The map will display a static copy of the canvas image.\n *\n * @method pause\n * @instance\n * @memberof CanvasSource\n */\n\n load() {\n this._loaded = true;\n if (!this.canvas) {\n this.canvas = (this.options.canvas instanceof window.HTMLCanvasElement) ?\n this.options.canvas :\n window.document.getElementById(this.options.canvas);\n }\n this.width = this.canvas.width;\n this.height = this.canvas.height;\n\n if (this._hasInvalidDimensions()) {\n this.fire(new ErrorEvent(new Error('Canvas dimensions cannot be less than or equal to zero.')));\n return;\n }\n\n // $FlowFixMe[missing-this-annot]\n this.play = function() {\n this._playing = true;\n this.map.triggerRepaint();\n };\n\n // $FlowFixMe[missing-this-annot]\n this.pause = function() {\n if (this._playing) {\n this.prepare();\n this._playing = false;\n }\n };\n\n this._finishLoading();\n }\n\n /**\n * Returns the HTML `canvas` element.\n *\n * @returns {HTMLCanvasElement} The HTML `canvas` element.\n * @example\n * // Assuming the following canvas is added to your page\n * // \n * map.addSource('canvas-source', {\n * type: 'canvas',\n * canvas: 'canvasID',\n * coordinates: [\n * [91.4461, 21.5006],\n * [100.3541, 21.5006],\n * [100.3541, 13.9706],\n * [91.4461, 13.9706]\n * ]\n * });\n * map.getSource('canvas-source').getCanvas(); // \n */\n getCanvas(): HTMLCanvasElement {\n return this.canvas;\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map) {\n this.map = map;\n this.load();\n if (this.canvas) {\n if (this.animate) this.play();\n }\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove() {\n this.pause();\n }\n\n /**\n * Sets the canvas's coordinates and re-renders the map.\n *\n * @method setCoordinates\n * @instance\n * @memberof CanvasSource\n * @param {Array>} coordinates Four geographical coordinates,\n * represented as arrays of longitude and latitude numbers, which define the corners of the canvas.\n * The coordinates start at the top left corner of the canvas and proceed in clockwise order.\n * They do not have to represent a rectangle.\n * @returns {CanvasSource} Returns itself to allow for method chaining.\n */\n\n // setCoordinates inherited from ImageSource\n\n // $FlowFixMe[method-unbinding]\n prepare() {\n let resize = false;\n if (this.canvas.width !== this.width) {\n this.width = this.canvas.width;\n resize = true;\n }\n if (this.canvas.height !== this.height) {\n this.height = this.canvas.height;\n resize = true;\n }\n\n if (this._hasInvalidDimensions()) return;\n\n if (Object.keys(this.tiles).length === 0) return; // not enough data for current position\n\n const context = this.map.painter.context;\n\n if (!this.texture) {\n this.texture = new Texture(context, this.canvas, context.gl.RGBA, {premultiply: true});\n } else if (resize || this._playing) {\n this.texture.update(this.canvas, {premultiply: true});\n }\n\n this._prepareData(context);\n }\n\n serialize(): Object {\n return {\n type: 'canvas',\n coordinates: this.coordinates\n };\n }\n\n hasTransition(): boolean {\n return this._playing;\n }\n\n _hasInvalidDimensions(): boolean {\n for (const x of [this.canvas.width, this.canvas.height]) {\n if (isNaN(x) || x <= 0) return true;\n }\n return false;\n }\n}\n\nexport default CanvasSource;\n","// @flow\n\nimport Tile from './tile.js';\nimport window from '../util/window.js';\nimport TileBounds from './tile_bounds.js';\nimport RasterTileSource from './raster_tile_source.js';\nimport {extend, pick} from '../util/util.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\n\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Source} from './source.js';\nimport type {Callback} from '../types/callback.js';\nimport type {OverscaledTileID} from './tile_id.js';\n\ntype DataType = 'raster';\n\nfunction isRaster(data: any): boolean {\n return data instanceof window.ImageData ||\n data instanceof window.HTMLCanvasElement ||\n data instanceof window.ImageBitmap ||\n data instanceof window.HTMLImageElement;\n}\n\n/**\n * Interface for custom sources. This is a specification for\n * implementers to model: it is not an exported method or class.\n *\n * Custom sources allow a user to load and modify their own tiles.\n * These sources can be added between any regular sources using {@link Map#addSource}.\n *\n * Custom sources must have a unique `id` and must have the `type` of `\"custom\"`.\n * They must implement `loadTile` and may implement `unloadTile`, `onAdd` and `onRemove`.\n * They can trigger rendering using {@link Map#triggerRepaint}.\n *\n * @interface CustomSourceInterface\n * @property {string} id A unique source id.\n * @property {string} type The source's type. Must be `\"custom\"`.\n * @example\n * // Custom source implemented as ES6 class\n * class CustomSource {\n * constructor() {\n * this.id = 'custom-source';\n * this.type = 'custom';\n * this.tileSize = 256;\n * this.tilesUrl = 'https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg';\n * this.attribution = 'Map tiles by Stamen Design, under CC BY 3.0';\n * }\n *\n * async loadTile(tile, {signal}) {\n * const url = this.tilesUrl\n * .replace('{z}', String(tile.z))\n * .replace('{x}', String(tile.x))\n * .replace('{y}', String(tile.y));\n *\n * const response = await fetch(url, {signal});\n * const data = await response.arrayBuffer();\n *\n * const blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'});\n * const imageBitmap = await window.createImageBitmap(blob);\n *\n * return imageBitmap;\n * }\n * }\n *\n * map.on('load', () => {\n * map.addSource('custom-source', new CustomSource());\n * map.addLayer({\n * id: 'layer',\n * type: 'raster',\n * source: 'custom-source'\n * });\n * });\n */\n\n/**\n * Optional method called when the source has been added to the Map with {@link Map#addSource}.\n * This gives the source a chance to initialize resources and register event listeners.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name onAdd\n * @param {Map} map The Map this custom source was just added to.\n */\n\n/**\n * Optional method called when the source has been removed from the Map with {@link Map#removeSource}.\n * This gives the source a chance to clean up resources and event listeners.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name onRemove\n * @param {Map} map The Map this custom source was added to.\n */\n\n/**\n * Optional method called after the tile is unloaded from the map viewport. This\n * gives the source a chance to clean up resources and event listeners.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name unloadTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to unload in the XYZ scheme format.\n */\n\n/**\n * Optional method called during a render frame to check if there is a tile to render.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name hasTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to prepare in the XYZ scheme format.\n * @returns {boolean} True if tile exists, otherwise false.\n */\n\n/**\n * Called when the map starts loading tile for the current animation frame.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name loadTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to load in the XYZ scheme format.\n * @param {Object} options Options.\n * @param {AbortSignal} options.signal A signal object that communicates when the map cancels the tile loading request.\n * @returns {Promise} The promise that resolves to the tile image data as an `HTMLCanvasElement`, `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`.\n * If `loadTile` resolves to `undefined`, a map will render an overscaled parent tile in the tile’s space. If `loadTile` resolves to `null`, a map will render nothing in the tile’s space.\n */\nexport type CustomSourceInterface = {\n id: string;\n type: 'custom',\n dataType: ?DataType,\n minzoom: ?number,\n maxzoom: ?number,\n scheme: ?string;\n tileSize: ?number,\n attribution: ?string,\n bounds: ?[number, number, number, number];\n hasTile: ?(tileID: { z: number, x: number, y: number }) => boolean,\n loadTile: (tileID: { z: number, x: number, y: number }, options: { signal: AbortSignal }) => Promise,\n unloadTile: ?(tileID: { z: number, x: number, y: number }) => void,\n onAdd: ?(map: Map) => void,\n onRemove: ?(map: Map) => void,\n}\n\nclass CustomSource extends Evented implements Source {\n\n id: string;\n type: 'custom';\n scheme: string;\n minzoom: number;\n maxzoom: number;\n tileSize: number;\n attribution: string | void;\n\n roundZoom: boolean | void;\n tileBounds: ?TileBounds;\n minTileCacheSize: ?number;\n maxTileCacheSize: ?number;\n\n _map: Map;\n _loaded: boolean;\n _dispatcher: Dispatcher;\n _dataType: ?DataType;\n _implementation: CustomSourceInterface;\n\n constructor(id: string, implementation: CustomSourceInterface, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.type = 'custom';\n this._dataType = 'raster';\n this._dispatcher = dispatcher;\n this._implementation = implementation;\n this.setEventedParent(eventedParent);\n\n this.scheme = 'xyz';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.tileSize = 512;\n\n this._loaded = false;\n this.roundZoom = true;\n\n if (!this._implementation) {\n this.fire(new ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`)));\n }\n\n if (!this._implementation.loadTile) {\n this.fire(new ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`)));\n }\n\n if (this._implementation.bounds) {\n this.tileBounds = new TileBounds(this._implementation.bounds, this.minzoom, this.maxzoom);\n }\n\n // $FlowFixMe[prop-missing]\n // $FlowFixMe[method-unbinding]\n implementation.update = this._update.bind(this);\n\n // $FlowFixMe[prop-missing]\n // $FlowFixMe[method-unbinding]\n implementation.clearTiles = this._clearTiles.bind(this);\n\n // $FlowFixMe[prop-missing]\n // $FlowFixMe[method-unbinding]\n implementation.coveringTiles = this._coveringTiles.bind(this);\n\n extend(this, pick(implementation, ['dataType', 'scheme', 'minzoom', 'maxzoom', 'tileSize', 'attribution', 'minTileCacheSize', 'maxTileCacheSize']));\n }\n\n serialize(): Source {\n return pick(this, ['type', 'scheme', 'minzoom', 'maxzoom', 'tileSize', 'attribution']);\n }\n\n load() {\n this._loaded = true;\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n // $FlowFixMe[method-unbinding]\n onAdd(map: Map): void {\n this._map = map;\n this._loaded = false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n if (this._implementation.onAdd) this._implementation.onAdd(map);\n this.load();\n }\n\n // $FlowFixMe[method-unbinding]\n onRemove(map: Map): void {\n if (this._implementation.onRemove) {\n this._implementation.onRemove(map);\n }\n }\n\n // $FlowFixMe[method-unbinding]\n hasTile(tileID: OverscaledTileID): boolean {\n if (this._implementation.hasTile) {\n const {x, y, z} = tileID.canonical;\n return this._implementation.hasTile({x, y, z});\n }\n\n return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n }\n\n loadTile(tile: Tile, callback: Callback): void {\n const {x, y, z} = tile.tileID.canonical;\n const controller = new window.AbortController();\n const signal = controller.signal;\n\n // $FlowFixMe[prop-missing]\n tile.request = Promise\n .resolve(this._implementation.loadTile({x, y, z}, {signal}))\n .then(tileLoaded.bind(this))\n .catch(error => {\n // silence AbortError\n if (error.code === 20) return;\n tile.state = 'errored';\n callback(error);\n });\n\n // $FlowFixMe[prop-missing]\n tile.request.cancel = () => controller.abort();\n\n // $FlowFixMe[missing-this-annot]\n function tileLoaded(data: ?T) {\n delete tile.request;\n\n if (tile.aborted) {\n tile.state = 'unloaded';\n return callback(null);\n }\n\n // If the implementation returned `undefined` as tile data,\n // mark the tile as `errored` to indicate that we have no data for it.\n // A map will render an overscaled parent tile in the tile’s space.\n if (data === undefined) {\n tile.state = 'errored';\n return callback(null);\n }\n\n // If the implementation returned `null` as tile data,\n // mark the tile as `loaded` and use an an empty image as tile data.\n // A map will render nothing in the tile’s space.\n if (data === null) {\n const emptyImage = {width: this.tileSize, height: this.tileSize, data: null};\n this.loadTileData(tile, (emptyImage: any));\n tile.state = 'loaded';\n return callback(null);\n }\n\n if (!isRaster(data)) {\n tile.state = 'errored';\n return callback(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`));\n }\n\n this.loadTileData(tile, data);\n tile.state = 'loaded';\n callback(null);\n }\n }\n\n loadTileData(tile: Tile, data: T): void {\n // Only raster data supported at the moment\n RasterTileSource.loadTileData(tile, (data: any), this._map.painter);\n }\n\n unloadTileData(tile: Tile): void {\n // Only raster data supported at the moment\n RasterTileSource.unloadTileData(tile, this._map.painter);\n }\n\n // $FlowFixMe[method-unbinding]\n unloadTile(tile: Tile, callback: Callback): void {\n this.unloadTileData(tile);\n if (this._implementation.unloadTile) {\n const {x, y, z} = tile.tileID.canonical;\n this._implementation.unloadTile({x, y, z});\n }\n\n callback();\n }\n\n // $FlowFixMe[method-unbinding]\n abortTile(tile: Tile, callback: Callback): void {\n if (tile.request && tile.request.cancel) {\n tile.request.cancel();\n delete tile.request;\n }\n\n callback();\n }\n\n hasTransition(): boolean {\n return false;\n }\n\n _coveringTiles(): { z: number, x: number, y: number }[] {\n const tileIDs = this._map.transform.coveringTiles({\n tileSize: this.tileSize,\n minzoom: this.minzoom,\n maxzoom: this.maxzoom,\n roundZoom: this.roundZoom\n });\n\n return tileIDs.map(tileID => ({x: tileID.canonical.x, y: tileID.canonical.y, z: tileID.canonical.z}));\n }\n\n _clearTiles() {\n this._map.style._clearSource(this.id);\n }\n\n _update() {\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n}\n\nexport default CustomSource;\n","// @flow\n\nimport type {OverscaledTileID} from './tile_id.js';\nimport type SourceCache from './source_cache.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type CollisionIndex from '../symbol/collision_index.js';\nimport type Transform from '../geo/transform.js';\nimport type {RetainedQueryData} from '../symbol/placement.js';\nimport type {FilterSpecification} from '../style-spec/types.js';\nimport type {QueryGeometry, TilespaceQueryGeometry} from '../style/query_geometry.js';\nimport assert from 'assert';\nimport {mat4} from 'gl-matrix';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {QueryResult} from '../data/feature_index.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\n\nexport type RenderedFeatureLayers = Array<{\n wrappedTileID: number;\n queryResults: QueryResult\n}>;\n\n/*\n * Returns a matrix that can be used to convert from tile coordinates to viewport pixel coordinates.\n */\nfunction getPixelPosMatrix(transform: Transform, tileID: OverscaledTileID) {\n const t = mat4.identity([]);\n mat4.scale(t, t, [transform.width * 0.5, -transform.height * 0.5, 1]);\n mat4.translate(t, t, [1, -1, 0]);\n mat4.multiply(t, t, transform.calculateProjMatrix(tileID.toUnwrapped()));\n return Float32Array.from(t);\n}\n\nexport function queryRenderedFeatures(sourceCache: SourceCache,\n styleLayers: {[_: string]: StyleLayer},\n serializedLayers: {[_: string]: Object},\n queryGeometry: QueryGeometry,\n params: { filter: FilterSpecification, layers: Array, availableImages: Array },\n transform: Transform,\n use3DQuery: boolean,\n visualizeQueryGeometry: boolean = false): QueryResult {\n const tileResults = sourceCache.tilesIn(queryGeometry, use3DQuery, visualizeQueryGeometry);\n tileResults.sort(sortTilesIn);\n const renderedFeatureLayers = [];\n for (const tileResult of tileResults) {\n renderedFeatureLayers.push({\n wrappedTileID: tileResult.tile.tileID.wrapped().key,\n queryResults: tileResult.tile.queryRenderedFeatures(\n styleLayers,\n serializedLayers,\n sourceCache._state,\n tileResult,\n params,\n transform,\n getPixelPosMatrix(sourceCache.transform, tileResult.tile.tileID),\n visualizeQueryGeometry)\n });\n }\n\n const result = mergeRenderedFeatureLayers(renderedFeatureLayers);\n\n // Merge state from SourceCache into the results\n for (const layerID in result) {\n result[layerID].forEach((featureWrapper) => {\n const feature = featureWrapper.feature;\n const layer = feature.layer;\n\n if (!layer || layer.type === 'background' || layer.type === 'sky') return;\n\n feature.source = layer.source;\n if (layer['source-layer']) {\n feature.sourceLayer = layer['source-layer'];\n }\n feature.state = feature.id !== undefined ? sourceCache.getFeatureState(layer['source-layer'], feature.id) : {};\n });\n }\n return result;\n}\n\nexport function queryRenderedSymbols(styleLayers: {[_: string]: StyleLayer},\n serializedLayers: {[_: string]: StyleLayer},\n getLayerSourceCache: (layer: StyleLayer) => SourceCache | void,\n queryGeometry: Array,\n params: { filter: FilterSpecification, layers: Array, availableImages: Array },\n collisionIndex: CollisionIndex,\n retainedQueryData: {[_: number]: RetainedQueryData}): QueryResult {\n const result = {};\n const renderedSymbols = collisionIndex.queryRenderedSymbols(queryGeometry);\n const bucketQueryData = [];\n for (const bucketInstanceId of Object.keys(renderedSymbols).map(Number)) {\n bucketQueryData.push(retainedQueryData[bucketInstanceId]);\n }\n bucketQueryData.sort(sortTilesIn);\n\n for (const queryData of bucketQueryData) {\n const bucketSymbols = queryData.featureIndex.lookupSymbolFeatures(\n renderedSymbols[queryData.bucketInstanceId],\n serializedLayers,\n queryData.bucketIndex,\n queryData.sourceLayerIndex,\n params.filter,\n params.layers,\n params.availableImages,\n styleLayers);\n\n for (const layerID in bucketSymbols) {\n const resultFeatures = result[layerID] = result[layerID] || [];\n const layerSymbols = bucketSymbols[layerID];\n layerSymbols.sort((a, b) => {\n // Match topDownFeatureComparator from FeatureIndex, but using\n // most recent sorting of features from bucket.sortFeatures\n const featureSortOrder = queryData.featureSortOrder;\n if (featureSortOrder) {\n // queryRenderedSymbols documentation says we'll return features in\n // \"top-to-bottom\" rendering order (aka last-to-first).\n // Actually there can be multiple symbol instances per feature, so\n // we sort each feature based on the first matching symbol instance.\n const sortedA = featureSortOrder.indexOf(a.featureIndex);\n const sortedB = featureSortOrder.indexOf(b.featureIndex);\n assert(sortedA >= 0);\n assert(sortedB >= 0);\n return sortedB - sortedA;\n } else {\n // Bucket hasn't been re-sorted based on angle, so use the\n // reverse of the order the features appeared in the data.\n return b.featureIndex - a.featureIndex;\n }\n });\n for (const symbolFeature of layerSymbols) {\n resultFeatures.push(symbolFeature);\n }\n }\n }\n\n // Merge state from SourceCache into the results\n for (const layerName in result) {\n result[layerName].forEach((featureWrapper) => {\n const feature = featureWrapper.feature;\n const layer = styleLayers[layerName];\n const sourceCache = getLayerSourceCache(layer);\n if (!sourceCache) return;\n\n const state = sourceCache.getFeatureState(feature.layer['source-layer'], feature.id);\n feature.source = feature.layer.source;\n if (feature.layer['source-layer']) {\n feature.sourceLayer = feature.layer['source-layer'];\n }\n feature.state = state;\n });\n }\n return result;\n}\n\nexport function querySourceFeatures(sourceCache: SourceCache, params: any): Array {\n const tiles = sourceCache.getRenderableIds().map((id) => {\n return sourceCache.getTileByID(id);\n });\n\n const result = [];\n\n const dataTiles = {};\n for (let i = 0; i < tiles.length; i++) {\n const tile = tiles[i];\n const dataID = tile.tileID.canonical.key;\n if (!dataTiles[dataID]) {\n dataTiles[dataID] = true;\n tile.querySourceFeatures(result, params);\n }\n }\n\n return result;\n}\n\nfunction sortTilesIn(a: TilespaceQueryGeometry | RetainedQueryData, b: TilespaceQueryGeometry | RetainedQueryData) {\n const idA = a.tileID;\n const idB = b.tileID;\n return (idA.overscaledZ - idB.overscaledZ) || (idA.canonical.y - idB.canonical.y) || (idA.wrap - idB.wrap) || (idA.canonical.x - idB.canonical.x);\n}\n\nfunction mergeRenderedFeatureLayers(tiles: RenderedFeatureLayers): QueryResult {\n // Merge results from all tiles, but if two tiles share the same\n // wrapped ID, don't duplicate features between the two tiles\n const result = {};\n const wrappedIDLayerMap = {};\n for (const tile of tiles) {\n const queryResults = tile.queryResults;\n const wrappedID = tile.wrappedTileID;\n const wrappedIDLayers = wrappedIDLayerMap[wrappedID] = wrappedIDLayerMap[wrappedID] || {};\n for (const layerID in queryResults) {\n const tileFeatures = queryResults[layerID];\n const wrappedIDFeatures = wrappedIDLayers[layerID] = wrappedIDLayers[layerID] || {};\n const resultFeatures = result[layerID] = result[layerID] || [];\n for (const tileFeature of tileFeatures) {\n if (!wrappedIDFeatures[tileFeature.featureIndex]) {\n wrappedIDFeatures[tileFeature.featureIndex] = true;\n resultFeatures.push(tileFeature);\n }\n }\n }\n }\n return result;\n}\n","// @flow\n\nimport window from '../window.js';\nimport mapboxgl from '../../index.js';\n\nimport type {WorkerInterface} from '../web_worker.js';\n\nexport default function (): WorkerInterface {\n return (mapboxgl.workerClass != null) ? new mapboxgl.workerClass() : (new window.Worker(mapboxgl.workerUrl): any); // eslint-disable-line new-cap\n}\n","// @flow\n\nimport WebWorker from './web_worker.js';\nimport type {WorkerInterface} from './web_worker.js';\n\nexport const PRELOAD_POOL_ID = 'mapboxgl_preloaded_worker_pool';\n\n/**\n * Constructs a worker pool.\n * @private\n */\nexport default class WorkerPool {\n static workerCount: number;\n\n active: {[_: number | string]: boolean};\n workers: Array;\n\n constructor() {\n this.active = {};\n }\n\n acquire(mapId: number | string): Array {\n if (!this.workers) {\n // Lazily look up the value of mapboxgl.workerCount so that\n // client code has had a chance to set it.\n this.workers = [];\n while (this.workers.length < WorkerPool.workerCount) {\n // $FlowFixMe[invalid-constructor]\n this.workers.push(new WebWorker());\n }\n }\n\n this.active[mapId] = true;\n return this.workers.slice();\n }\n\n release(mapId: number | string) {\n delete this.active[mapId];\n if (this.numActive() === 0) {\n this.workers.forEach((w) => {\n w.terminate();\n });\n this.workers = (null: any);\n }\n }\n\n isPreloaded(): boolean {\n return !!this.active[PRELOAD_POOL_ID];\n }\n\n numActive(): number {\n return Object.keys(this.active).length;\n }\n}\n\n// extensive benchmarking showed 2 to be the best default for both desktop and mobile devices;\n// we can't rely on hardwareConcurrency because of wild inconsistency of reported numbers between browsers\nWorkerPool.workerCount = 2;\n","// @flow\n\nimport WorkerPool, {PRELOAD_POOL_ID} from './worker_pool.js';\n\nlet globalWorkerPool: ?WorkerPool;\n\n/**\n * Creates (if necessary) and returns the single, global WorkerPool instance\n * to be shared across each Map\n * @private\n */\nexport default function getGlobalWorkerPool (): WorkerPool {\n if (!globalWorkerPool) {\n globalWorkerPool = new WorkerPool();\n }\n return globalWorkerPool;\n}\n\nexport function prewarm() {\n const workerPool = getGlobalWorkerPool();\n workerPool.acquire(PRELOAD_POOL_ID);\n}\n\nexport function clearPrewarmedResources() {\n const pool = globalWorkerPool;\n if (pool) {\n // Remove the pool only if all maps that referenced the preloaded global worker pool have been removed.\n if (pool.isPreloaded() && pool.numActive() === 1) {\n pool.release(PRELOAD_POOL_ID);\n globalWorkerPool = null;\n } else {\n console.warn('Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()');\n }\n }\n}\n","// @flow\n\nimport refProperties from './util/ref_properties.js';\n\nimport type {LayerSpecification} from './types.js';\n\nfunction deref(layer: LayerSpecification, parent: LayerSpecification): LayerSpecification {\n const result = {};\n\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = (parent: any)[k];\n }\n });\n\n return ((result: any): LayerSpecification);\n}\n\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array} layers\n * @returns {Array}\n */\nexport default function derefLayers(layers: Array): Array {\n layers = layers.slice();\n\n const map: Object = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[(layers[i]: any).ref]);\n }\n }\n\n return layers;\n}\n","// @flow\n\nimport isEqual from './util/deep_equal.js';\n\nimport type {StyleSpecification, SourceSpecification, LayerSpecification} from './types.js';\n\ntype Sources = { [string]: SourceSpecification };\n\ntype Command = {\n command: string;\n args: Array;\n};\n\nexport const operations: {[_: string]: string} = {\n\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight',\n\n /*\n * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection'\n};\n\nfunction addSource(sourceId: string, after: Sources, commands: Array) {\n commands.push({command: operations.addSource, args: [sourceId, after[sourceId]]});\n}\n\nfunction removeSource(sourceId: string, commands: Array, sourcesRemoved: {[string]: true}) {\n commands.push({command: operations.removeSource, args: [sourceId]});\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId: string, after: Sources, commands: Array, sourcesRemoved: {[string]: true}) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before: Sources, after: Sources, sourceId: string) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before: Sources, after: Sources, commands: Array, sourcesRemoved: {[string]: true}) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n const source = after[sourceId];\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!isEqual(before[sourceId], source)) {\n if (before[sourceId].type === 'geojson' && source.type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({command: operations.setGeoJSONSourceData, args: [sourceId, source.data]});\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before: any, after: any, commands: Array, layerId: string, klass: ?string, command: string) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n}\n\nfunction pluckId(layer: LayerSpecification) {\n return layer.id;\n}\n\nfunction indexById(group: {[string]: LayerSpecification}, layer: LayerSpecification) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before: Array, after: Array, commands: Array) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean: Object = Object.create(null);\n\n let i, d, layerId, beforeLayer: LayerSpecification, afterLayer: LayerSpecification, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n if (beforeIndex.hasOwnProperty(layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId]});\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n // $FlowFixMe[prop-missing] - there is no `source-layer` in background and sky layers\n if (!isEqual(beforeLayer.source, afterLayer.source) || !isEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !isEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({command: operations.addLayer, args: [afterLayer, insertBeforeLayerId]});\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({command: operations.setFilter, args: [layerId, afterLayer.filter]});\n }\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom) || !isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]});\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nexport default function diffStyles(before: StyleSpecification, after: StyleSpecification): Array {\n if (!before) return [{command: operations.setStyle, args: [after]}];\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{command: operations.setStyle, args: [after]}];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({command: operations.setCenter, args: [after.center]});\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({command: operations.setZoom, args: [after.zoom]});\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({command: operations.setBearing, args: [after.bearing]});\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({command: operations.setPitch, args: [after.pitch]});\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({command: operations.setSprite, args: [after.sprite]});\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({command: operations.setGlyphs, args: [after.glyphs]});\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({command: operations.setTransition, args: [after.transition]});\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({command: operations.setLight, args: [after.light]});\n }\n if (!isEqual(before.fog, after.fog)) {\n commands.push({command: operations.setFog, args: [after.fog]});\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({command: operations.setProjection, args: [after.projection]});\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if (layer.source && sourcesRemoved[layer.source]) {\n commands.push({command: operations.removeLayer, args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n\n // Remove the terrain if the source for that terrain is being removed\n let beforeTerrain = before.terrain;\n if (beforeTerrain) {\n if (sourcesRemoved[beforeTerrain.source]) {\n commands.push({command: operations.setTerrain, args: [undefined]});\n beforeTerrain = undefined;\n }\n }\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Even though terrain is a top-level property\n // Its like a layer in the sense that it depends on a source being present.\n if (!isEqual(beforeTerrain, after.terrain)) {\n commands.push({command: operations.setTerrain, args: [after.terrain]});\n }\n\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{command: operations.setStyle, args: [after]}];\n }\n\n return commands;\n}\n","// @flow\n\nimport {clamp} from '../util/util.js';\nimport Point from '@mapbox/point-geometry';\nimport assert from 'assert';\n\nclass PathInterpolator {\n points: Array;\n length: number;\n paddedLength: number;\n padding: number;\n _distances: Array;\n\n constructor(points_: ?Array, padding_: ?number) {\n this.reset(points_, padding_);\n }\n\n reset(points_: ?Array, padding_: ?number) {\n this.points = points_ || [];\n\n // Compute cumulative distance from first point to every other point in the segment.\n // Last entry in the array is total length of the path\n this._distances = [0.0];\n\n for (let i = 1; i < this.points.length; i++) {\n this._distances[i] = this._distances[i - 1] + this.points[i].dist(this.points[i - 1]);\n }\n\n this.length = this._distances[this._distances.length - 1];\n this.padding = Math.min(padding_ || 0, this.length * 0.5);\n this.paddedLength = this.length - this.padding * 2.0;\n }\n\n lerp(t: number): Point {\n assert(this.points.length > 0);\n if (this.points.length === 1) {\n return this.points[0];\n }\n\n t = clamp(t, 0, 1);\n\n // Find the correct segment [p0, p1] where p0 <= x < p1\n let currentIndex = 1;\n let distOfCurrentIdx = this._distances[currentIndex];\n const distToTarget = t * this.paddedLength + this.padding;\n\n while (distOfCurrentIdx < distToTarget && currentIndex < this._distances.length) {\n distOfCurrentIdx = this._distances[++currentIndex];\n }\n\n // Interpolate between the two points of the segment\n const idxOfPrevPoint = currentIndex - 1;\n const distOfPrevIdx = this._distances[idxOfPrevPoint];\n const segmentLength = distOfCurrentIdx - distOfPrevIdx;\n const segmentT = segmentLength > 0 ? (distToTarget - distOfPrevIdx) / segmentLength : 0;\n\n return this.points[idxOfPrevPoint].mult(1.0 - segmentT).add(this.points[currentIndex].mult(segmentT));\n }\n}\n\nexport default PathInterpolator;\n","// @flow\n\ntype GridItem = {\n key: any,\n x1: number,\n y1: number,\n x2: number,\n y2: number\n};\n\n/**\n * GridIndex is a data structure for testing the intersection of\n * circles and rectangles in a 2d plane.\n * It is optimized for rapid insertion and querying.\n * GridIndex splits the plane into a set of \"cells\" and keeps track\n * of which geometries intersect with each cell. At query time,\n * full geometry comparisons are only done for items that share\n * at least one cell. As long as the geometries are relatively\n * uniformly distributed across the plane, this greatly reduces\n * the number of comparisons necessary.\n *\n * @private\n */\nclass GridIndex {\n circleKeys: Array;\n boxKeys: Array;\n boxCells: Array>;\n circleCells: Array>;\n bboxes: Array;\n circles: Array;\n xCellCount: number;\n yCellCount: number;\n width: number;\n height: number;\n xScale: number;\n yScale: number;\n boxUid: number;\n circleUid: number;\n\n constructor (width: number, height: number, cellSize: number) {\n const boxCells = this.boxCells = [];\n const circleCells = this.circleCells = [];\n\n // More cells -> fewer geometries to check per cell, but items tend\n // to be split across more cells.\n // Sweet spot allows most small items to fit in one cell\n this.xCellCount = Math.ceil(width / cellSize);\n this.yCellCount = Math.ceil(height / cellSize);\n\n for (let i = 0; i < this.xCellCount * this.yCellCount; i++) {\n boxCells.push([]);\n circleCells.push([]);\n }\n this.circleKeys = [];\n this.boxKeys = [];\n this.bboxes = [];\n this.circles = [];\n\n this.width = width;\n this.height = height;\n this.xScale = this.xCellCount / width;\n this.yScale = this.yCellCount / height;\n this.boxUid = 0;\n this.circleUid = 0;\n }\n\n keysLength(): number {\n return this.boxKeys.length + this.circleKeys.length;\n }\n\n insert(key: any, x1: number, y1: number, x2: number, y2: number) {\n // $FlowFixMe[method-unbinding]\n this._forEachCell(x1, y1, x2, y2, this._insertBoxCell, this.boxUid++);\n this.boxKeys.push(key);\n this.bboxes.push(x1);\n this.bboxes.push(y1);\n this.bboxes.push(x2);\n this.bboxes.push(y2);\n }\n\n insertCircle(key: any, x: number, y: number, radius: number) {\n // Insert circle into grid for all cells in the circumscribing square\n // It's more than necessary (by a factor of 4/PI), but fast to insert\n // $FlowFixMe[method-unbinding]\n this._forEachCell(x - radius, y - radius, x + radius, y + radius, this._insertCircleCell, this.circleUid++);\n this.circleKeys.push(key);\n this.circles.push(x);\n this.circles.push(y);\n this.circles.push(radius);\n }\n\n _insertBoxCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, uid: number) {\n this.boxCells[cellIndex].push(uid);\n }\n\n _insertCircleCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, uid: number) {\n this.circleCells[cellIndex].push(uid);\n }\n\n _query(x1: number, y1: number, x2: number, y2: number, hitTest: boolean, predicate?: any): boolean | Array {\n if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n return hitTest ? false : [];\n }\n const result = [];\n if (x1 <= 0 && y1 <= 0 && this.width <= x2 && this.height <= y2) {\n if (hitTest) {\n return true;\n }\n for (let boxUid = 0; boxUid < this.boxKeys.length; boxUid++) {\n result.push({\n key: this.boxKeys[boxUid],\n x1: this.bboxes[boxUid * 4],\n y1: this.bboxes[boxUid * 4 + 1],\n x2: this.bboxes[boxUid * 4 + 2],\n y2: this.bboxes[boxUid * 4 + 3]\n });\n }\n for (let circleUid = 0; circleUid < this.circleKeys.length; circleUid++) {\n const x = this.circles[circleUid * 3];\n const y = this.circles[circleUid * 3 + 1];\n const radius = this.circles[circleUid * 3 + 2];\n result.push({\n key: this.circleKeys[circleUid],\n x1: x - radius,\n y1: y - radius,\n x2: x + radius,\n y2: y + radius\n });\n }\n return predicate ? result.filter(predicate) : result;\n } else {\n const queryArgs = {\n hitTest,\n seenUids: {box: {}, circle: {}}\n };\n // $FlowFixMe[method-unbinding]\n this._forEachCell(x1, y1, x2, y2, this._queryCell, result, queryArgs, predicate);\n return hitTest ? result.length > 0 : result;\n }\n }\n\n _queryCircle(x: number, y: number, radius: number, hitTest: boolean, predicate?: any): boolean | Array {\n // Insert circle into grid for all cells in the circumscribing square\n // It's more than necessary (by a factor of 4/PI), but fast to insert\n const x1 = x - radius;\n const x2 = x + radius;\n const y1 = y - radius;\n const y2 = y + radius;\n if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n return hitTest ? false : [];\n }\n\n // Box query early exits if the bounding box is larger than the grid, but we don't do\n // the equivalent calculation for circle queries because early exit is less likely\n // and the calculation is more expensive\n const result = [];\n const queryArgs = {\n hitTest,\n circle: {x, y, radius},\n seenUids: {box: {}, circle: {}}\n };\n // $FlowFixMe[method-unbinding]\n this._forEachCell(x1, y1, x2, y2, this._queryCellCircle, result, queryArgs, predicate);\n return hitTest ? result.length > 0 : result;\n }\n\n query(x1: number, y1: number, x2: number, y2: number, predicate?: any): Array {\n return (this._query(x1, y1, x2, y2, false, predicate): any);\n }\n\n hitTest(x1: number, y1: number, x2: number, y2: number, predicate?: any): boolean {\n return (this._query(x1, y1, x2, y2, true, predicate): any);\n }\n\n hitTestCircle(x: number, y: number, radius: number, predicate?: any): boolean {\n return (this._queryCircle(x, y, radius, true, predicate): any);\n }\n\n _queryCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any): void | boolean {\n const seenUids = queryArgs.seenUids;\n const boxCell = this.boxCells[cellIndex];\n if (boxCell !== null) {\n const bboxes = this.bboxes;\n for (const boxUid of boxCell) {\n if (!seenUids.box[boxUid]) {\n seenUids.box[boxUid] = true;\n const offset = boxUid * 4;\n if ((x1 <= bboxes[offset + 2]) &&\n (y1 <= bboxes[offset + 3]) &&\n (x2 >= bboxes[offset + 0]) &&\n (y2 >= bboxes[offset + 1]) &&\n (!predicate || predicate(this.boxKeys[boxUid]))) {\n if (queryArgs.hitTest) {\n result.push(true);\n return true;\n } else {\n result.push({\n key: this.boxKeys[boxUid],\n x1: bboxes[offset],\n y1: bboxes[offset + 1],\n x2: bboxes[offset + 2],\n y2: bboxes[offset + 3]\n });\n }\n }\n }\n }\n }\n const circleCell = this.circleCells[cellIndex];\n if (circleCell !== null) {\n const circles = this.circles;\n for (const circleUid of circleCell) {\n if (!seenUids.circle[circleUid]) {\n seenUids.circle[circleUid] = true;\n const offset = circleUid * 3;\n if (this._circleAndRectCollide(\n circles[offset],\n circles[offset + 1],\n circles[offset + 2],\n x1,\n y1,\n x2,\n y2) &&\n (!predicate || predicate(this.circleKeys[circleUid]))) {\n if (queryArgs.hitTest) {\n result.push(true);\n return true;\n } else {\n const x = circles[offset];\n const y = circles[offset + 1];\n const radius = circles[offset + 2];\n result.push({\n key: this.circleKeys[circleUid],\n x1: x - radius,\n y1: y - radius,\n x2: x + radius,\n y2: y + radius\n });\n }\n }\n }\n }\n }\n }\n\n _queryCellCircle(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any): void | boolean {\n const circle = queryArgs.circle;\n const seenUids = queryArgs.seenUids;\n const boxCell = this.boxCells[cellIndex];\n if (boxCell !== null) {\n const bboxes = this.bboxes;\n for (const boxUid of boxCell) {\n if (!seenUids.box[boxUid]) {\n seenUids.box[boxUid] = true;\n const offset = boxUid * 4;\n if (this._circleAndRectCollide(\n circle.x,\n circle.y,\n circle.radius,\n bboxes[offset + 0],\n bboxes[offset + 1],\n bboxes[offset + 2],\n bboxes[offset + 3]) &&\n (!predicate || predicate(this.boxKeys[boxUid]))) {\n result.push(true);\n return true;\n }\n }\n }\n }\n\n const circleCell = this.circleCells[cellIndex];\n if (circleCell !== null) {\n const circles = this.circles;\n for (const circleUid of circleCell) {\n if (!seenUids.circle[circleUid]) {\n seenUids.circle[circleUid] = true;\n const offset = circleUid * 3;\n if (this._circlesCollide(\n circles[offset],\n circles[offset + 1],\n circles[offset + 2],\n circle.x,\n circle.y,\n circle.radius) &&\n (!predicate || predicate(this.circleKeys[circleUid]))) {\n result.push(true);\n return true;\n }\n }\n }\n }\n }\n\n _forEachCell(x1: number, y1: number, x2: number, y2: number, fn: any, arg1: any, arg2?: any, predicate?: any) {\n const cx1 = this._convertToXCellCoord(x1);\n const cy1 = this._convertToYCellCoord(y1);\n const cx2 = this._convertToXCellCoord(x2);\n const cy2 = this._convertToYCellCoord(y2);\n\n for (let x = cx1; x <= cx2; x++) {\n for (let y = cy1; y <= cy2; y++) {\n const cellIndex = this.xCellCount * y + x;\n if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, predicate)) return;\n }\n }\n }\n\n _convertToXCellCoord(x: number): number {\n return Math.max(0, Math.min(this.xCellCount - 1, Math.floor(x * this.xScale)));\n }\n\n _convertToYCellCoord(y: number): number {\n return Math.max(0, Math.min(this.yCellCount - 1, Math.floor(y * this.yScale)));\n }\n\n _circlesCollide(x1: number, y1: number, r1: number, x2: number, y2: number, r2: number): boolean {\n const dx = x2 - x1;\n const dy = y2 - y1;\n const bothRadii = r1 + r2;\n return (bothRadii * bothRadii) > (dx * dx + dy * dy);\n }\n\n _circleAndRectCollide(circleX: number, circleY: number, radius: number, x1: number, y1: number, x2: number, y2: number): boolean {\n const halfRectWidth = (x2 - x1) / 2;\n const distX = Math.abs(circleX - (x1 + halfRectWidth));\n if (distX > (halfRectWidth + radius)) {\n return false;\n }\n\n const halfRectHeight = (y2 - y1) / 2;\n const distY = Math.abs(circleY - (y1 + halfRectHeight));\n if (distY > (halfRectHeight + radius)) {\n return false;\n }\n\n if (distX <= halfRectWidth || distY <= halfRectHeight) {\n return true;\n }\n\n const dx = distX - halfRectWidth;\n const dy = distY - halfRectHeight;\n return (dx * dx + dy * dy <= (radius * radius));\n }\n}\n\nexport default GridIndex;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {mat2, mat4, vec3, vec4} from 'gl-matrix';\nimport * as symbolSize from './symbol_size.js';\nimport {addDynamicAttributes, updateGlobeVertexNormal} from '../data/bucket/symbol_bucket.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type Painter from '../render/painter.js';\nimport type Transform from '../geo/transform.js';\nimport type SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport type {\n GlyphOffsetArray,\n SymbolLineVertexArray,\n SymbolDynamicLayoutArray,\n SymbolGlobeExtArray,\n PlacedSymbol\n} from '../data/array_types.js';\nimport type {Mat4, Vec3, Vec4} from 'gl-matrix';\n\nimport {WritingMode} from '../symbol/shaping.js';\nimport {CanonicalTileID, OverscaledTileID} from '../source/tile_id.js';\nimport {calculateGlobeLabelMatrix} from '../geo/projection/globe_util.js';\nexport {updateLineLabels, hideGlyphs, getLabelPlaneMatrixForRendering, getLabelPlaneMatrixForPlacement, getGlCoordMatrix, project, projectClamped, getPerspectiveRatio, placeFirstAndLastGlyph, placeGlyphAlongLine, xyTransformMat4};\n\ntype PlacedGlyph = {|\n angle: number,\n path: Array,\n point: Vec3,\n tilePath: Array,\n up: Vec3\n|};\ntype ProjectionCache = {[_: number]: Vec3};\n\ntype PlacementStatus = {\n needsFlipping?: boolean,\n notEnoughRoom?: boolean,\n useVertical?: boolean\n};\n\nconst FlipState = {\n unknown: 0,\n flipRequired: 1,\n flipNotRequired: 2\n};\n\nconst maxTangent = Math.tan(85 * Math.PI / 180);\n\n/*\n * # Overview of coordinate spaces\n *\n * ## Tile coordinate spaces\n * Each label has an anchor. Some labels have corresponding line geometries.\n * The points for both anchors and lines are stored in tile units. Each tile has it's own\n * coordinate space going from (0, 0) at the top left to (EXTENT, EXTENT) at the bottom right.\n *\n * ## GL coordinate space\n * At the end of everything, the vertex shader needs to produce a position in GL coordinate space,\n * which is (-1, 1) at the top left and (1, -1) in the bottom right.\n *\n * ## Map pixel coordinate spaces\n * Each tile has a pixel coordinate space. It's just the tile units scaled so that one unit is\n * whatever counts as 1 pixel at the current zoom.\n * This space is used for pitch-alignment=map, rotation-alignment=map\n *\n * ## Rotated map pixel coordinate spaces\n * Like the above, but rotated so axis of the space are aligned with the viewport instead of the tile.\n * This space is used for pitch-alignment=map, rotation-alignment=viewport\n *\n * ## Viewport pixel coordinate space\n * (0, 0) is at the top left of the canvas and (pixelWidth, pixelHeight) is at the bottom right corner\n * of the canvas. This space is used for pitch-alignment=viewport\n *\n *\n * # Vertex projection\n * It goes roughly like this:\n * 1. project the anchor and line from tile units into the correct label coordinate space\n * - map pixel space pitch-alignment=map rotation-alignment=map\n * - rotated map pixel space pitch-alignment=map rotation-alignment=viewport\n * - viewport pixel space pitch-alignment=viewport rotation-alignment=*\n * 2. if the label follows a line, find the point along the line that is the correct distance from the anchor.\n * 3. add the glyph's corner offset to the point from step 3\n * 4. convert from the label coordinate space to gl coordinates\n *\n * For horizontal labels we want to do step 1 in the shader for performance reasons (no cpu work).\n * This is what `u_label_plane_matrix` is used for.\n * For labels aligned with lines we have to steps 1 and 2 on the cpu since we need access to the line geometry.\n * This is what `updateLineLabels(...)` does.\n * Since the conversion is handled on the cpu we just set `u_label_plane_matrix` to an identity matrix.\n *\n * Steps 3 and 4 are done in the shaders for all labels.\n */\n\n/*\n * Returns a matrix for converting from tile units to the correct label coordinate space.\n * This variation of the function returns a label space matrix specialized for rendering.\n * It transforms coordinates as-is to whatever the target space is (either 2D or 3D).\n * See also `getLabelPlaneMatrixForPlacement`\n */\nfunction getLabelPlaneMatrixForRendering(posMatrix: Float32Array,\n tileID: CanonicalTileID,\n pitchWithMap: boolean,\n rotateWithMap: boolean,\n transform: Transform,\n projection: Projection,\n pixelsToTileUnits: Float32Array): Float32Array {\n const m = mat4.create();\n\n if (pitchWithMap) {\n if (projection.name === 'globe') {\n const lm = calculateGlobeLabelMatrix(transform, tileID);\n mat4.multiply(m, m, lm);\n } else {\n const s = mat2.invert([], pixelsToTileUnits);\n m[0] = s[0];\n m[1] = s[1];\n m[4] = s[2];\n m[5] = s[3];\n if (!rotateWithMap) {\n mat4.rotateZ(m, m, transform.angle);\n }\n }\n } else {\n mat4.multiply(m, transform.labelPlaneMatrix, posMatrix);\n }\n\n return m;\n}\n\n/*\n * Returns a matrix for converting from tile units to the correct label coordinate space.\n * This variation of the function returns a matrix specialized for placement logic.\n * Coordinates will be clamped to x&y 2D plane which is used with viewport and map aligned placement\n * logic in most cases. Certain projections such as globe view will use 3D space for map aligned\n * label placement.\n */\nfunction getLabelPlaneMatrixForPlacement(posMatrix: Float32Array,\n tileID: CanonicalTileID,\n pitchWithMap: boolean,\n rotateWithMap: boolean,\n transform: Transform,\n projection: Projection,\n pixelsToTileUnits: Float32Array): Float32Array {\n const m = getLabelPlaneMatrixForRendering(posMatrix, tileID, pitchWithMap, rotateWithMap, transform, projection, pixelsToTileUnits);\n\n // Symbol placement logic is performed in 2D in most scenarios.\n // For this reason project all coordinates to the xy-plane by discarding the z-component\n if (projection.name !== 'globe' || !pitchWithMap) {\n // Pre-multiply by scaling z to 0\n m[2] = m[6] = m[10] = m[14] = 0;\n }\n\n return m;\n}\n\n/*\n * Returns a matrix for converting from the correct label coordinate space to gl coords.\n */\nfunction getGlCoordMatrix(posMatrix: Float32Array,\n tileID: CanonicalTileID,\n pitchWithMap: boolean,\n rotateWithMap: boolean,\n transform: Transform,\n projection: Projection,\n pixelsToTileUnits: Float32Array): Float32Array {\n if (pitchWithMap) {\n if (projection.name === 'globe') {\n const m = getLabelPlaneMatrixForRendering(posMatrix, tileID, pitchWithMap, rotateWithMap, transform, projection, pixelsToTileUnits);\n mat4.invert(m, m);\n mat4.multiply(m, posMatrix, m);\n return m;\n } else {\n const m = mat4.clone(posMatrix);\n const s = mat4.identity([]);\n s[0] = pixelsToTileUnits[0];\n s[1] = pixelsToTileUnits[1];\n s[4] = pixelsToTileUnits[2];\n s[5] = pixelsToTileUnits[3];\n mat4.multiply(m, m, s);\n if (!rotateWithMap) {\n mat4.rotateZ(m, m, -transform.angle);\n }\n return m;\n }\n } else {\n return transform.glCoordMatrix;\n }\n}\n\nfunction project(x: number, y: number, z: number, matrix: Mat4): Vec4 {\n const pos = [x, y, z, 1];\n if (z) {\n vec4.transformMat4(pos, pos, matrix);\n } else {\n xyTransformMat4(pos, pos, matrix);\n }\n const w = pos[3];\n pos[0] /= w;\n pos[1] /= w;\n pos[2] /= w;\n return pos;\n}\n\nfunction projectClamped([x, y, z]: Vec3, matrix: Mat4): Vec4 {\n const pos = [x, y, z, 1];\n vec4.transformMat4(pos, pos, matrix);\n\n // Clamp distance to a positive value so we can avoid screen coordinate\n // being flipped possibly due to perspective projection\n const w = pos[3] = Math.max(pos[3], 0.000001);\n pos[0] /= w;\n pos[1] /= w;\n pos[2] /= w;\n return pos;\n}\n\nfunction getPerspectiveRatio(cameraToCenterDistance: number, signedDistanceFromCamera: number): number {\n return Math.min(0.5 + 0.5 * (cameraToCenterDistance / signedDistanceFromCamera), 1.5);\n}\n\nfunction isVisible(anchorPos: [number, number, number, number],\n clippingBuffer: [number, number]) {\n const x = anchorPos[0] / anchorPos[3];\n const y = anchorPos[1] / anchorPos[3];\n const inPaddedViewport = (\n x >= -clippingBuffer[0] &&\n x <= clippingBuffer[0] &&\n y >= -clippingBuffer[1] &&\n y <= clippingBuffer[1]);\n return inPaddedViewport;\n}\n\n/*\n * Update the `dynamicLayoutVertexBuffer` for the buffer with the correct glyph positions for the current map view.\n * This is only run on labels that are aligned with lines. Horizontal labels are handled entirely in the shader.\n */\nfunction updateLineLabels(bucket: SymbolBucket,\n posMatrix: Float32Array,\n painter: Painter,\n isText: boolean,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n pitchWithMap: boolean,\n keepUpright: boolean,\n getElevation: ?((p: Point) => Array),\n tileID: OverscaledTileID) {\n\n const tr = painter.transform;\n const sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;\n const partiallyEvaluatedSize = symbolSize.evaluateSizeForZoom(sizeData, painter.transform.zoom);\n const isGlobe = tr.projection.name === 'globe';\n\n const clippingBuffer = [256 / painter.width * 2 + 1, 256 / painter.height * 2 + 1];\n\n const dynamicLayoutVertexArray = isText ?\n bucket.text.dynamicLayoutVertexArray :\n bucket.icon.dynamicLayoutVertexArray;\n dynamicLayoutVertexArray.clear();\n\n let globeExtVertexArray: ?SymbolGlobeExtArray = null;\n if (isGlobe) {\n globeExtVertexArray = isText ?\n bucket.text.globeExtVertexArray :\n bucket.icon.globeExtVertexArray;\n }\n\n const lineVertexArray = bucket.lineVertexArray;\n const placedSymbols = isText ? bucket.text.placedSymbolArray : bucket.icon.placedSymbolArray;\n\n const aspectRatio = painter.transform.width / painter.transform.height;\n\n let useVertical: ?boolean = false;\n let prevWritingMode;\n\n for (let s = 0; s < placedSymbols.length; s++) {\n const symbol = placedSymbols.get(s);\n const {numGlyphs, writingMode} = symbol;\n\n // Normally, the 'Horizontal|Vertical' writing mode is followed by a 'Vertical' counterpart, this\n // is not true for 'Vertical' only line labels. For this case, we'll have to overwrite the 'useVertical'\n // status before further checks.\n if (writingMode === WritingMode.vertical && !useVertical && prevWritingMode !== WritingMode.horizontal) {\n useVertical = true;\n }\n prevWritingMode = writingMode;\n\n // Don't do calculations for vertical glyphs unless the previous symbol was horizontal\n // and we determined that vertical glyphs were necessary.\n // Also don't do calculations for symbols that are collided and fully faded out\n if ((symbol.hidden || writingMode === WritingMode.vertical) && !useVertical) {\n hideGlyphs(numGlyphs, dynamicLayoutVertexArray);\n continue;\n }\n // Awkward... but we're counting on the paired \"vertical\" symbol coming immediately after its horizontal counterpart\n useVertical = false;\n\n // Project tile anchor to globe anchor\n const tileAnchorPoint = new Point(symbol.tileAnchorX, symbol.tileAnchorY);\n let {x, y, z} = tr.projection.projectTilePoint(tileAnchorPoint.x, tileAnchorPoint.y, tileID.canonical);\n if (getElevation) {\n const [dx, dy, dz] = getElevation(tileAnchorPoint);\n x += dx;\n y += dy;\n z += dz;\n }\n const anchorPos = [x, y, z, 1.0];\n vec4.transformMat4(anchorPos, anchorPos, posMatrix);\n\n // Don't bother calculating the correct point for invisible labels.\n if (!isVisible(anchorPos, clippingBuffer)) {\n hideGlyphs(numGlyphs, dynamicLayoutVertexArray);\n continue;\n }\n const cameraToAnchorDistance = anchorPos[3];\n const perspectiveRatio = getPerspectiveRatio(painter.transform.cameraToCenterDistance, cameraToAnchorDistance);\n\n const fontSize = symbolSize.evaluateSizeForFeature(sizeData, partiallyEvaluatedSize, symbol);\n const pitchScaledFontSize = pitchWithMap ? fontSize / perspectiveRatio : fontSize * perspectiveRatio;\n\n const labelPlaneAnchorPoint = project(x, y, z, labelPlaneMatrix);\n\n // Skip labels behind the camera\n if (labelPlaneAnchorPoint[3] <= 0.0) {\n hideGlyphs(numGlyphs, dynamicLayoutVertexArray);\n continue;\n }\n\n let projectionCache: ProjectionCache = {};\n\n const getElevationForPlacement = pitchWithMap ? null : getElevation; // When pitchWithMap, we're projecting to scaled tile coordinate space: there is no need to get elevation as it doesn't affect projection.\n const placeUnflipped = placeGlyphsAlongLine(symbol, pitchScaledFontSize, false /*unflipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix,\n bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, globeExtVertexArray, labelPlaneAnchorPoint, tileAnchorPoint, projectionCache, aspectRatio, getElevationForPlacement, tr.projection, tileID, pitchWithMap);\n\n useVertical = placeUnflipped.useVertical;\n\n if (getElevationForPlacement && placeUnflipped.needsFlipping) projectionCache = {}; // Truncated points should be recalculated.\n if (placeUnflipped.notEnoughRoom || useVertical ||\n (placeUnflipped.needsFlipping &&\n placeGlyphsAlongLine(symbol, pitchScaledFontSize, true /*flipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix,\n bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, globeExtVertexArray, labelPlaneAnchorPoint, tileAnchorPoint, projectionCache, aspectRatio, getElevationForPlacement, tr.projection, tileID, pitchWithMap).notEnoughRoom)) {\n hideGlyphs(numGlyphs, dynamicLayoutVertexArray);\n }\n }\n\n if (isText) {\n bucket.text.dynamicLayoutVertexBuffer.updateData(dynamicLayoutVertexArray);\n if (globeExtVertexArray) {\n bucket.text.globeExtVertexBuffer.updateData(globeExtVertexArray);\n }\n } else {\n bucket.icon.dynamicLayoutVertexBuffer.updateData(dynamicLayoutVertexArray);\n if (globeExtVertexArray) {\n bucket.icon.globeExtVertexBuffer.updateData(globeExtVertexArray);\n }\n }\n}\n\nfunction placeFirstAndLastGlyph(\n fontScale: number,\n glyphOffsetArray: GlyphOffsetArray,\n lineOffsetX: number,\n lineOffsetY: number,\n flip: boolean,\n anchorPoint: Vec3,\n tileAnchorPoint: Point,\n symbol: PlacedSymbol,\n lineVertexArray: SymbolLineVertexArray,\n labelPlaneMatrix: Float32Array,\n projectionCache: ProjectionCache,\n getElevation: ?((p: Point) => Array),\n returnPathInTileCoords: ?boolean,\n projection: Projection,\n tileID: OverscaledTileID,\n pitchWithMap: boolean): null | {|first: PlacedGlyph, last: PlacedGlyph|} {\n\n const {lineStartIndex, glyphStartIndex, segment} = symbol;\n const glyphEndIndex = glyphStartIndex + symbol.numGlyphs;\n const lineEndIndex = lineStartIndex + symbol.lineLength;\n\n const firstGlyphOffset = glyphOffsetArray.getoffsetX(glyphStartIndex);\n const lastGlyphOffset = glyphOffsetArray.getoffsetX(glyphEndIndex - 1);\n\n const firstPlacedGlyph = placeGlyphAlongLine(fontScale * firstGlyphOffset, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, returnPathInTileCoords, true, projection, tileID, pitchWithMap);\n if (!firstPlacedGlyph)\n return null;\n\n const lastPlacedGlyph = placeGlyphAlongLine(fontScale * lastGlyphOffset, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, returnPathInTileCoords, true, projection, tileID, pitchWithMap);\n if (!lastPlacedGlyph)\n return null;\n\n return {first: firstPlacedGlyph, last: lastPlacedGlyph};\n}\n\n// Check in the glCoordinate space, the rough estimation of angle between the text line and the Y axis.\n// If the angle if less or equal to 5 degree, then keep the text glyphs unflipped even if it is required.\nfunction isInFlipRetainRange(dx: number, dy: number) {\n return dx === 0 || Math.abs(dy / dx) > maxTangent;\n}\n\nfunction requiresOrientationChange(writingMode: number, flipState: number, dx: number, dy: number) {\n if (writingMode === WritingMode.horizontal && Math.abs(dy) > Math.abs(dx)) {\n // On top of choosing whether to flip, choose whether to render this version of the glyphs or the alternate\n // vertical glyphs. We can't just filter out vertical glyphs in the horizontal range because the horizontal\n // and vertical versions can have slightly different projections which could lead to angles where both or\n // neither showed.\n return {useVertical: true};\n }\n // Check if flipping is required for \"verticalOnly\" case.\n if (writingMode === WritingMode.vertical) {\n return dy > 0 ? {needsFlipping: true} : null;\n }\n\n // symbol's flipState stores the flip decision from the previous frame, and that\n // decision is reused when the symbol is in the retain range.\n if (flipState !== FlipState.unknown && isInFlipRetainRange(dx, dy)) {\n return (flipState === FlipState.flipRequired) ? {needsFlipping: true} : null;\n }\n\n // Check if flipping is required for \"horizontal\" case.\n return dx < 0 ? {needsFlipping: true} : null;\n}\n\nfunction placeGlyphsAlongLine(symbol: PlacedSymbol, fontSize: number, flip: boolean, keepUpright: boolean, posMatrix: Float32Array, labelPlaneMatrix: Float32Array, glCoordMatrix: Float32Array, glyphOffsetArray: GlyphOffsetArray, lineVertexArray: SymbolLineVertexArray, dynamicLayoutVertexArray: SymbolDynamicLayoutArray, globeExtVertexArray: ?SymbolGlobeExtArray, anchorPoint: VecType, tileAnchorPoint: Point, projectionCache: ProjectionCache, aspectRatio: number, getElevation: ?((p: Point) => Array), projection: Projection, tileID: OverscaledTileID, pitchWithMap: boolean): PlacementStatus {\n const fontScale = fontSize / 24;\n const lineOffsetX = symbol.lineOffsetX * fontScale;\n const lineOffsetY = symbol.lineOffsetY * fontScale;\n const {lineStartIndex, glyphStartIndex, numGlyphs, segment, writingMode, flipState} = symbol;\n const lineEndIndex = lineStartIndex + symbol.lineLength;\n\n const addGlyph = (glyph: PlacedGlyph) => {\n if (globeExtVertexArray) {\n const [ux, uy, uz] = glyph.up;\n const offset = dynamicLayoutVertexArray.length;\n updateGlobeVertexNormal(globeExtVertexArray, offset + 0, ux, uy, uz);\n updateGlobeVertexNormal(globeExtVertexArray, offset + 1, ux, uy, uz);\n updateGlobeVertexNormal(globeExtVertexArray, offset + 2, ux, uy, uz);\n updateGlobeVertexNormal(globeExtVertexArray, offset + 3, ux, uy, uz);\n }\n const [x, y, z] = glyph.point;\n addDynamicAttributes(dynamicLayoutVertexArray, x, y, z, glyph.angle);\n };\n\n if (numGlyphs > 1) {\n // Place the first and the last glyph in the label first, so we can figure out\n // the overall orientation of the label and determine whether it needs to be flipped in keepUpright mode\n const firstAndLastGlyph = placeFirstAndLastGlyph(fontScale, glyphOffsetArray, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, false, projection, tileID, pitchWithMap);\n if (!firstAndLastGlyph) {\n return {notEnoughRoom: true};\n }\n\n if (keepUpright && !flip) {\n let [x0, y0, z0] = firstAndLastGlyph.first.point;\n let [x1, y1, z1] = firstAndLastGlyph.last.point;\n [x0, y0] = project(x0, y0, z0, glCoordMatrix);\n [x1, y1] = project(x1, y1, z1, glCoordMatrix);\n const orientationChange = requiresOrientationChange(writingMode, flipState, (x1 - x0) * aspectRatio, y1 - y0);\n symbol.flipState = orientationChange && orientationChange.needsFlipping ? FlipState.flipRequired : FlipState.flipNotRequired;\n if (orientationChange) {\n return orientationChange;\n }\n }\n\n addGlyph(firstAndLastGlyph.first);\n for (let glyphIndex = glyphStartIndex + 1; glyphIndex < glyphStartIndex + numGlyphs - 1; glyphIndex++) {\n // Since first and last glyph fit on the line, the rest of the glyphs can be placed too, but check to make sure\n const glyph = placeGlyphAlongLine(fontScale * glyphOffsetArray.getoffsetX(glyphIndex), lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, false, false, projection, tileID, pitchWithMap);\n if (!glyph) {\n // undo previous glyphs of the symbol if it doesn't fit; it will be filled with hideGlyphs instead\n dynamicLayoutVertexArray.length -= 4 * (glyphIndex - glyphStartIndex);\n return {notEnoughRoom: true};\n }\n addGlyph(glyph);\n }\n addGlyph(firstAndLastGlyph.last);\n } else {\n // Only a single glyph to place\n // So, determine whether to flip based on projected angle of the line segment it's on\n if (keepUpright && !flip) {\n const a = project(tileAnchorPoint.x, tileAnchorPoint.y, 0, posMatrix);\n const tileVertexIndex = lineStartIndex + segment + 1;\n const tileSegmentEnd = new Point(lineVertexArray.getx(tileVertexIndex), lineVertexArray.gety(tileVertexIndex));\n const projectedVertex = project(tileSegmentEnd.x, tileSegmentEnd.y, 0, posMatrix);\n // We know the anchor will be in the viewport, but the end of the line segment may be\n // behind the plane of the camera, in which case we can use a point at any arbitrary (closer)\n // point on the segment.\n const b = (projectedVertex[3] > 0) ?\n projectedVertex :\n projectTruncatedLineSegment(tileAnchorPoint, tileSegmentEnd, a, 1, posMatrix, undefined, projection, tileID.canonical);\n\n const orientationChange = requiresOrientationChange(writingMode, flipState, (b[0] - a[0]) * aspectRatio, b[1] - a[1]);\n symbol.flipState = orientationChange && orientationChange.needsFlipping ? FlipState.flipRequired : FlipState.flipNotRequired;\n if (orientationChange) {\n return orientationChange;\n }\n }\n const singleGlyph = placeGlyphAlongLine(fontScale * glyphOffsetArray.getoffsetX(glyphStartIndex), lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, false, false, projection, tileID, pitchWithMap);\n if (!singleGlyph) {\n return {notEnoughRoom: true};\n }\n\n addGlyph(singleGlyph);\n }\n return {};\n}\n\nfunction elevatePointAndProject(p: Point, tileID: CanonicalTileID, posMatrix: Float32Array, projection: Projection, getElevation: ?((p: Point) => Array)) {\n const {x, y, z} = projection.projectTilePoint(p.x, p.y, tileID);\n if (!getElevation) {\n return project(x, y, z, posMatrix);\n }\n const [dx, dy, dz] = getElevation(p);\n return project(x + dx, y + dy, z + dz, posMatrix);\n}\n\nfunction projectTruncatedLineSegment(previousTilePoint: Point, currentTilePoint: Point, previousProjectedPoint: Vec3, minimumLength: number, projectionMatrix: Float32Array, getElevation: ?((p: Point) => Array), projection: Projection, tileID: CanonicalTileID): Vec3 {\n // We are assuming \"previousTilePoint\" won't project to a point within one unit of the camera plane\n // If it did, that would mean our label extended all the way out from within the viewport to a (very distant)\n // point near the plane of the camera. We wouldn't be able to render the label anyway once it crossed the\n // plane of the camera.\n const unitVertex = previousTilePoint.sub(currentTilePoint)._unit()._add(previousTilePoint);\n const projectedUnit = elevatePointAndProject(unitVertex, tileID, projectionMatrix, projection, getElevation);\n vec3.sub(projectedUnit, previousProjectedPoint, projectedUnit);\n vec3.normalize(projectedUnit, projectedUnit);\n\n return vec3.scaleAndAdd(projectedUnit, previousProjectedPoint, projectedUnit, minimumLength);\n}\n\nfunction placeGlyphAlongLine(\n offsetX: number,\n lineOffsetX: number,\n lineOffsetY: number,\n flip: boolean,\n anchorPoint: Vec3,\n tileAnchorPoint: Point,\n anchorSegment: number,\n lineStartIndex: number,\n lineEndIndex: number,\n lineVertexArray: SymbolLineVertexArray,\n labelPlaneMatrix: Float32Array,\n projectionCache: ProjectionCache,\n getElevation: ?((p: Point) => Array),\n returnPathInTileCoords: ?boolean,\n endGlyph: ?boolean,\n reprojection: Projection,\n tileID: OverscaledTileID,\n pitchWithMap: boolean): null | PlacedGlyph {\n\n const combinedOffsetX = flip ?\n offsetX - lineOffsetX :\n offsetX + lineOffsetX;\n\n let dir = combinedOffsetX > 0 ? 1 : -1;\n\n let angle = 0;\n if (flip) {\n // The label needs to be flipped to keep text upright.\n // Iterate in the reverse direction.\n dir *= -1;\n angle = Math.PI;\n }\n\n if (dir < 0) angle += Math.PI;\n\n let currentIndex = lineStartIndex + anchorSegment + (dir > 0 ? 0 : 1) | 0;\n let current = anchorPoint;\n let prev = anchorPoint;\n let distanceToPrev = 0;\n let currentSegmentDistance = 0;\n const absOffsetX = Math.abs(combinedOffsetX);\n const pathVertices = [];\n const tilePath = [];\n let currentVertex = tileAnchorPoint;\n let prevVertex = currentVertex;\n\n const getTruncatedLineSegment = () => {\n return projectTruncatedLineSegment(prevVertex, currentVertex, prev, absOffsetX - distanceToPrev + 1, labelPlaneMatrix, getElevation, reprojection, tileID.canonical);\n };\n\n while (distanceToPrev + currentSegmentDistance <= absOffsetX) {\n currentIndex += dir;\n\n // offset does not fit on the projected line\n if (currentIndex < lineStartIndex || currentIndex >= lineEndIndex)\n return null;\n\n prev = current;\n prevVertex = currentVertex;\n\n pathVertices.push(prev);\n if (returnPathInTileCoords) tilePath.push(prevVertex);\n\n currentVertex = new Point(lineVertexArray.getx(currentIndex), lineVertexArray.gety(currentIndex));\n current = projectionCache[currentIndex];\n if (!current) {\n const projection = elevatePointAndProject(currentVertex, tileID.canonical, labelPlaneMatrix, reprojection, getElevation);\n if (projection[3] > 0) {\n current = projectionCache[currentIndex] = projection;\n } else {\n // The vertex is behind the plane of the camera, so we can't project it\n // Instead, we'll create a vertex along the line that's far enough to include the glyph\n // Don't cache because the new vertex might not be far enough out for future glyphs on the same segment\n current = getTruncatedLineSegment();\n }\n }\n\n distanceToPrev += currentSegmentDistance;\n currentSegmentDistance = vec3.distance(prev, current);\n }\n\n if (endGlyph && getElevation) {\n // For terrain, always truncate end points in order to handle terrain curvature.\n // If previously truncated, on signedDistanceFromCamera < 0, don't do it.\n // Cache as end point. The cache is cleared if there is need for flipping in updateLineLabels.\n if (projectionCache[currentIndex]) {\n current = getTruncatedLineSegment();\n currentSegmentDistance = vec3.distance(prev, current);\n }\n projectionCache[currentIndex] = current;\n }\n\n // The point is on the current segment. Interpolate to find it. Compute points on both label plane and tile space\n const segmentInterpolationT = (absOffsetX - distanceToPrev) / currentSegmentDistance;\n const tilePoint = currentVertex.sub(prevVertex)._mult(segmentInterpolationT)._add(prevVertex);\n const prevToCurrent = vec3.sub([], current, prev);\n const labelPlanePoint = vec3.scaleAndAdd([], prev, prevToCurrent, segmentInterpolationT);\n\n let axisZ: Vec3 = [0, 0, 1];\n let diffX = prevToCurrent[0];\n let diffY = prevToCurrent[1];\n\n if (pitchWithMap) {\n axisZ = reprojection.upVector(tileID.canonical, tilePoint.x, tilePoint.y);\n\n if (axisZ[0] !== 0 || axisZ[1] !== 0 || axisZ[2] !== 1) {\n // Compute coordinate frame that is aligned to the tangent of the surface\n const axisX = [axisZ[2], 0, -axisZ[0]];\n const axisY = vec3.cross([], axisZ, axisX);\n vec3.normalize(axisX, axisX);\n vec3.normalize(axisY, axisY);\n diffX = vec3.dot(prevToCurrent, axisX);\n diffY = vec3.dot(prevToCurrent, axisY);\n }\n }\n\n // offset the point from the line to text-offset and icon-offset\n if (lineOffsetY) {\n // Find a coordinate frame for the vertical offset\n const offsetDir = vec3.cross([], axisZ, prevToCurrent);\n vec3.normalize(offsetDir, offsetDir);\n vec3.scaleAndAdd(labelPlanePoint, labelPlanePoint, offsetDir, lineOffsetY * dir);\n }\n\n const segmentAngle = angle + Math.atan2(diffY, diffX);\n\n pathVertices.push(labelPlanePoint);\n if (returnPathInTileCoords) {\n tilePath.push(tilePoint);\n }\n\n return {\n point: labelPlanePoint,\n angle: segmentAngle,\n path: pathVertices,\n tilePath,\n up: axisZ\n };\n}\n\n// Hide them by moving them offscreen. We still need to add them to the buffer\n// because the dynamic buffer is paired with a static buffer that doesn't get updated.\nfunction hideGlyphs(num: number, dynamicLayoutVertexArray: SymbolDynamicLayoutArray) {\n const offset = dynamicLayoutVertexArray.length;\n const end = offset + 4 * num;\n dynamicLayoutVertexArray.resize(end);\n // Since all hidden glyphs have the same attributes, we can build up the array faster with a single call to\n // Float32Array.fill for all vertices, instead of calling addDynamicAttributes for each vertex.\n dynamicLayoutVertexArray.float32.fill(-Infinity, offset * 4, end * 4);\n}\n\n// For line label layout, we're not using z output and our w input is always 1\n// This custom matrix transformation ignores those components to make projection faster\nfunction xyTransformMat4(out: Vec4, a: Vec4, m: Mat4): Vec4 {\n const x = a[0], y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n out[3] = m[3] * x + m[7] * y + m[15];\n return out;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport clipLine from './clip_line.js';\nimport PathInterpolator from './path_interpolator.js';\nimport * as intersectionTests from '../util/intersection_tests.js';\nimport Grid from './grid_index.js';\nimport {mat4, vec4} from 'gl-matrix';\nimport ONE_EM from '../symbol/one_em.js';\nimport {FOG_SYMBOL_CLIPPING_THRESHOLD, getFogOpacityAtTileCoord} from '../style/fog_helpers.js';\nimport assert from 'assert';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport * as symbolProjection from '../symbol/projection.js';\n\nimport type Transform from '../geo/transform.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type SymbolBucket, {SingleCollisionBox} from '../data/bucket/symbol_bucket.js';\nimport type {GlyphOffsetArray, SymbolLineVertexArray, PlacedSymbol} from '../data/array_types.js';\nimport type {FogState} from '../style/fog_helpers.js';\nimport type {Vec3, Mat4} from 'gl-matrix';\n\nexport type PlacedCollisionBox = {|\n box: Array,\n offscreen: boolean,\n occluded: boolean\n|};\ntype PlacedCollisionCircles = {|\n circles: Array,\n offscreen: boolean,\n collisionDetected: boolean,\n occluded: boolean\n|};\ntype ScreenAnchorPoint = {|\n occluded: boolean,\n perspectiveRatio: number,\n point: Point,\n signedDistanceFromCamera: number,\n|};\n\n// When a symbol crosses the edge that causes it to be included in\n// collision detection, it will cause changes in the symbols around\n// it. This constant specifies how many pixels to pad the edge of\n// the viewport for collision detection so that the bulk of the changes\n// occur offscreen. Making this constant greater increases label\n// stability, but it's expensive.\nconst viewportPadding = 100;\n\n/**\n * A collision index used to prevent symbols from overlapping. It keep tracks of\n * where previous symbols have been placed and is used to check if a new\n * symbol overlaps with any previously added symbols.\n *\n * There are two steps to insertion: first placeCollisionBox/Circles checks if\n * there's room for a symbol, then insertCollisionBox/Circles actually puts the\n * symbol in the index. The two step process allows paired symbols to be inserted\n * together even if they overlap.\n *\n * @private\n */\nclass CollisionIndex {\n grid: Grid;\n ignoredGrid: Grid;\n transform: Transform;\n pitchfactor: number;\n screenRightBoundary: number;\n screenBottomBoundary: number;\n gridRightBoundary: number;\n gridBottomBoundary: number;\n fogState: ?FogState;\n\n constructor(\n transform: Transform,\n fogState: ?FogState,\n grid: Grid = new Grid(transform.width + 2 * viewportPadding, transform.height + 2 * viewportPadding, 25),\n ignoredGrid: Grid = new Grid(transform.width + 2 * viewportPadding, transform.height + 2 * viewportPadding, 25)\n ) {\n this.transform = transform;\n\n this.grid = grid;\n this.ignoredGrid = ignoredGrid;\n this.pitchfactor = Math.cos(transform._pitch) * transform.cameraToCenterDistance;\n\n this.screenRightBoundary = transform.width + viewportPadding;\n this.screenBottomBoundary = transform.height + viewportPadding;\n this.gridRightBoundary = transform.width + 2 * viewportPadding;\n this.gridBottomBoundary = transform.height + 2 * viewportPadding;\n this.fogState = fogState;\n }\n\n placeCollisionBox(bucket: SymbolBucket, scale: number, collisionBox: SingleCollisionBox, shift: Point, allowOverlap: boolean, textPixelRatio: number, posMatrix: Mat4, collisionGroupPredicate?: any): PlacedCollisionBox {\n assert(!this.transform.elevation || collisionBox.elevation !== undefined);\n\n let anchorX = collisionBox.projectedAnchorX;\n let anchorY = collisionBox.projectedAnchorY;\n let anchorZ = collisionBox.projectedAnchorZ;\n\n // Apply elevation vector to the anchor point\n const elevation = collisionBox.elevation;\n const tileID = collisionBox.tileID;\n const projection = bucket.getProjection();\n if (elevation && tileID) {\n const [ux, uy, uz] = projection.upVector(tileID.canonical, collisionBox.tileAnchorX, collisionBox.tileAnchorY);\n const upScale = projection.upVectorScale(tileID.canonical, this.transform.center.lat, this.transform.worldSize).metersToTile;\n\n anchorX += ux * elevation * upScale;\n anchorY += uy * elevation * upScale;\n anchorZ += uz * elevation * upScale;\n }\n\n const checkOcclusion = projection.name === 'globe' || !!elevation || this.transform.pitch > 0;\n const projectedPoint = this.projectAndGetPerspectiveRatio(posMatrix, anchorX, anchorY, anchorZ, collisionBox.tileID, checkOcclusion, projection);\n\n const tileToViewport = textPixelRatio * projectedPoint.perspectiveRatio;\n const tlX = (collisionBox.x1 * scale + shift.x - collisionBox.padding) * tileToViewport + projectedPoint.point.x;\n const tlY = (collisionBox.y1 * scale + shift.y - collisionBox.padding) * tileToViewport + projectedPoint.point.y;\n const brX = (collisionBox.x2 * scale + shift.x + collisionBox.padding) * tileToViewport + projectedPoint.point.x;\n const brY = (collisionBox.y2 * scale + shift.y + collisionBox.padding) * tileToViewport + projectedPoint.point.y;\n // Clip at 10 times the distance of the map center or, said otherwise, when the label\n // would be drawn at 10% the size of the features around it without scaling. Refer:\n // https://github.com/mapbox/mapbox-gl-native/wiki/Text-Rendering#perspective-scaling\n // 0.55 === projection.getPerspectiveRatio(camera_to_center, camera_to_center * 10)\n const minPerspectiveRatio = 0.55;\n const isClipped = projectedPoint.perspectiveRatio <= minPerspectiveRatio || projectedPoint.occluded;\n\n if (!this.isInsideGrid(tlX, tlY, brX, brY) ||\n (!allowOverlap && this.grid.hitTest(tlX, tlY, brX, brY, collisionGroupPredicate)) ||\n isClipped) {\n return {\n box: [],\n offscreen: false,\n occluded: projectedPoint.occluded\n };\n }\n\n return {\n box: [tlX, tlY, brX, brY],\n offscreen: this.isOffscreen(tlX, tlY, brX, brY),\n occluded: false\n };\n }\n\n placeCollisionCircles(bucket: SymbolBucket,\n allowOverlap: boolean,\n symbol: PlacedSymbol,\n lineVertexArray: SymbolLineVertexArray,\n glyphOffsetArray: GlyphOffsetArray,\n fontSize: number,\n posMatrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n labelToScreenMatrix?: Mat4,\n showCollisionCircles: boolean,\n pitchWithMap: boolean,\n collisionGroupPredicate?: any,\n circlePixelDiameter: number,\n textPixelPadding: number,\n tileID: OverscaledTileID): PlacedCollisionCircles {\n const placedCollisionCircles = [];\n const elevation = this.transform.elevation;\n const projection = bucket.getProjection();\n const getElevation = elevation ? elevation.getAtTileOffsetFunc(tileID, this.transform.center.lat, this.transform.worldSize, projection) : null;\n\n const tileUnitAnchorPoint = new Point(symbol.tileAnchorX, symbol.tileAnchorY);\n let {x: anchorX, y: anchorY, z: anchorZ} = projection.projectTilePoint(tileUnitAnchorPoint.x, tileUnitAnchorPoint.y, tileID.canonical);\n if (getElevation) {\n const [dx, dy, dz] = getElevation(tileUnitAnchorPoint);\n anchorX += dx;\n anchorY += dy;\n anchorZ += dz;\n }\n const isGlobe = projection.name === 'globe';\n const checkOcclusion = isGlobe || !!elevation || this.transform.pitch > 0;\n const screenAnchorPoint = this.projectAndGetPerspectiveRatio(posMatrix, anchorX, anchorY, anchorZ, tileID, checkOcclusion, projection);\n const {perspectiveRatio} = screenAnchorPoint;\n const labelPlaneFontScale = (pitchWithMap ? fontSize / perspectiveRatio : fontSize * perspectiveRatio) / ONE_EM;\n const labelPlaneAnchorPoint = symbolProjection.project(anchorX, anchorY, anchorZ, labelPlaneMatrix);\n\n const projectionCache = {};\n const lineOffsetX = symbol.lineOffsetX * labelPlaneFontScale;\n const lineOffsetY = symbol.lineOffsetY * labelPlaneFontScale;\n\n const firstAndLastGlyph = screenAnchorPoint.signedDistanceFromCamera > 0 ? symbolProjection.placeFirstAndLastGlyph(\n labelPlaneFontScale,\n glyphOffsetArray,\n lineOffsetX,\n lineOffsetY,\n /*flip*/ false,\n labelPlaneAnchorPoint,\n tileUnitAnchorPoint,\n symbol,\n lineVertexArray,\n labelPlaneMatrix,\n projectionCache,\n elevation && !pitchWithMap ? getElevation : null, // pitchWithMap: no need to sample elevation as it has no effect when projecting using scale/rotate to tile space labelPlaneMatrix.\n pitchWithMap && !!elevation,\n projection,\n tileID,\n pitchWithMap\n ) : null;\n\n let collisionDetected = false;\n let inGrid = false;\n let entirelyOffscreen = true;\n\n if (firstAndLastGlyph && !screenAnchorPoint.occluded) {\n const radius = circlePixelDiameter * 0.5 * perspectiveRatio + textPixelPadding;\n const screenPlaneMin = new Point(-viewportPadding, -viewportPadding);\n const screenPlaneMax = new Point(this.screenRightBoundary, this.screenBottomBoundary);\n const interpolator = new PathInterpolator();\n\n // Construct a projected path from projected line vertices. Anchor points are ignored and removed\n const {first, last} = firstAndLastGlyph;\n const firstLen = first.path.length;\n\n let projectedPath: Vec3[] = [];\n for (let i = firstLen - 1; i >= 1; i--) {\n projectedPath.push(first.path[i]);\n }\n for (let i = 1; i < last.path.length; i++) {\n projectedPath.push(last.path[i]);\n }\n assert(projectedPath.length >= 2);\n\n // Tolerate a slightly longer distance than one diameter between two adjacent circles\n const circleDist = radius * 2.5;\n\n // The path might need to be converted into screen space if a pitched map is used as the label space\n if (labelToScreenMatrix) {\n assert(pitchWithMap);\n projectedPath = projectedPath.map(([x, y, z], index) => {\n if (getElevation && !isGlobe) {\n z = getElevation(index < firstLen - 1 ? first.tilePath[firstLen - 1 - index] : last.tilePath[index - firstLen + 2])[2];\n }\n return symbolProjection.project(x, y, z, labelToScreenMatrix);\n });\n\n // Do not try to place collision circles if even of the points is behind the camera.\n // This is a plausible scenario with big camera pitch angles\n if (projectedPath.some(point => point[3] <= 0)) {\n projectedPath = [];\n }\n }\n\n let segments = [];\n\n if (projectedPath.length > 0) {\n // Quickly check if the path is fully inside or outside of the padded collision region.\n // For overlapping paths we'll only create collision circles for the visible segments\n let minx = Infinity;\n let maxx = -Infinity;\n let miny = Infinity;\n let maxy = -Infinity;\n\n for (const p of projectedPath) {\n minx = Math.min(minx, p[0]);\n miny = Math.min(miny, p[1]);\n maxx = Math.max(maxx, p[0]);\n maxy = Math.max(maxy, p[1]);\n }\n\n // Path visible\n if (maxx >= screenPlaneMin.x && minx <= screenPlaneMax.x &&\n maxy >= screenPlaneMin.y && miny <= screenPlaneMax.y) {\n\n segments = [projectedPath.map(p => new Point(p[0], p[1]))];\n\n if (minx < screenPlaneMin.x || maxx > screenPlaneMax.x ||\n miny < screenPlaneMin.y || maxy > screenPlaneMax.y) {\n // Path partially visible, clip\n segments = clipLine(segments, screenPlaneMin.x, screenPlaneMin.y, screenPlaneMax.x, screenPlaneMax.y);\n }\n }\n }\n\n for (const seg of segments) {\n // interpolate positions for collision circles. Add a small padding to both ends of the segment\n assert(seg.length > 0);\n interpolator.reset(seg, radius * 0.25);\n\n let numCircles = 0;\n\n if (interpolator.length <= 0.5 * radius) {\n numCircles = 1;\n } else {\n numCircles = Math.ceil(interpolator.paddedLength / circleDist) + 1;\n }\n\n for (let i = 0; i < numCircles; i++) {\n const t = i / Math.max(numCircles - 1, 1);\n const circlePosition = interpolator.lerp(t);\n\n // add viewport padding to the position and perform initial collision check\n const centerX = circlePosition.x + viewportPadding;\n const centerY = circlePosition.y + viewportPadding;\n\n placedCollisionCircles.push(centerX, centerY, radius, 0);\n\n const x1 = centerX - radius;\n const y1 = centerY - radius;\n const x2 = centerX + radius;\n const y2 = centerY + radius;\n\n entirelyOffscreen = entirelyOffscreen && this.isOffscreen(x1, y1, x2, y2);\n inGrid = inGrid || this.isInsideGrid(x1, y1, x2, y2);\n\n if (!allowOverlap) {\n if (this.grid.hitTestCircle(centerX, centerY, radius, collisionGroupPredicate)) {\n // Don't early exit if we're showing the debug circles because we still want to calculate\n // which circles are in use\n collisionDetected = true;\n if (!showCollisionCircles) {\n return {\n circles: [],\n offscreen: false,\n collisionDetected,\n occluded: false\n };\n }\n }\n }\n }\n }\n }\n\n return {\n circles: ((!showCollisionCircles && collisionDetected) || !inGrid) ? [] : placedCollisionCircles,\n offscreen: entirelyOffscreen,\n collisionDetected,\n occluded: screenAnchorPoint.occluded\n };\n }\n\n /**\n * Because the geometries in the CollisionIndex are an approximation of the shape of\n * symbols on the map, we use the CollisionIndex to look up the symbol part of\n * `queryRenderedFeatures`.\n *\n * @private\n */\n queryRenderedSymbols(viewportQueryGeometry: Array): {[id: number]: Array} {\n if (viewportQueryGeometry.length === 0 || (this.grid.keysLength() === 0 && this.ignoredGrid.keysLength() === 0)) {\n return {};\n }\n\n const query = [];\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const point of viewportQueryGeometry) {\n const gridPoint = new Point(point.x + viewportPadding, point.y + viewportPadding);\n minX = Math.min(minX, gridPoint.x);\n minY = Math.min(minY, gridPoint.y);\n maxX = Math.max(maxX, gridPoint.x);\n maxY = Math.max(maxY, gridPoint.y);\n query.push(gridPoint);\n }\n\n const features = this.grid.query(minX, minY, maxX, maxY)\n .concat(this.ignoredGrid.query(minX, minY, maxX, maxY));\n\n const seenFeatures = {};\n const result = {};\n\n for (const feature of features) {\n const featureKey = feature.key;\n // Skip already seen features.\n if (seenFeatures[featureKey.bucketInstanceId] === undefined) {\n seenFeatures[featureKey.bucketInstanceId] = {};\n }\n if (seenFeatures[featureKey.bucketInstanceId][featureKey.featureIndex]) {\n continue;\n }\n\n // Check if query intersects with the feature box\n // \"Collision Circles\" for line labels are treated as boxes here\n // Since there's no actual collision taking place, the circle vs. square\n // distinction doesn't matter as much, and box geometry is easier\n // to work with.\n const bbox = [\n new Point(feature.x1, feature.y1),\n new Point(feature.x2, feature.y1),\n new Point(feature.x2, feature.y2),\n new Point(feature.x1, feature.y2)\n ];\n if (!intersectionTests.polygonIntersectsPolygon(query, bbox)) {\n continue;\n }\n\n seenFeatures[featureKey.bucketInstanceId][featureKey.featureIndex] = true;\n if (result[featureKey.bucketInstanceId] === undefined) {\n result[featureKey.bucketInstanceId] = [];\n }\n result[featureKey.bucketInstanceId].push(featureKey.featureIndex);\n }\n\n return result;\n }\n\n insertCollisionBox(collisionBox: Array, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroupID: number) {\n const grid = ignorePlacement ? this.ignoredGrid : this.grid;\n\n const key = {bucketInstanceId, featureIndex, collisionGroupID};\n grid.insert(key, collisionBox[0], collisionBox[1], collisionBox[2], collisionBox[3]);\n }\n\n insertCollisionCircles(collisionCircles: Array, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroupID: number) {\n const grid = ignorePlacement ? this.ignoredGrid : this.grid;\n\n const key = {bucketInstanceId, featureIndex, collisionGroupID};\n for (let k = 0; k < collisionCircles.length; k += 4) {\n grid.insertCircle(key, collisionCircles[k], collisionCircles[k + 1], collisionCircles[k + 2]);\n }\n }\n\n projectAndGetPerspectiveRatio(posMatrix: Mat4, x: number, y: number, z: number, tileID: ?OverscaledTileID, checkOcclusion: boolean, bucketProjection: Projection): ScreenAnchorPoint {\n const p = [x, y, z, 1];\n let behindFog = false;\n if (z || this.transform.pitch > 0) {\n vec4.transformMat4(p, p, posMatrix);\n // Do not perform symbol occlusion on globe due to fog fixed range\n const isGlobe = bucketProjection.name === 'globe';\n if (this.fogState && tileID && !isGlobe) {\n const fogOpacity = getFogOpacityAtTileCoord(this.fogState, x, y, z, tileID.toUnwrapped(), this.transform);\n behindFog = fogOpacity > FOG_SYMBOL_CLIPPING_THRESHOLD;\n }\n } else {\n symbolProjection.xyTransformMat4(p, p, posMatrix);\n }\n const w = p[3];\n const a = new Point(\n (((p[0] / w + 1) / 2) * this.transform.width) + viewportPadding,\n (((-p[1] / w + 1) / 2) * this.transform.height) + viewportPadding\n );\n return {\n point: a,\n // See perspective ratio comment in symbol_sdf.vertex\n // We're doing collision detection in viewport space so we need\n // to scale down boxes in the distance\n perspectiveRatio: Math.min(0.5 + 0.5 * (this.transform.getCameraToCenterDistance(bucketProjection) / w), 1.5),\n signedDistanceFromCamera: w,\n occluded: (checkOcclusion && p[2] > w) || behindFog // Occluded by the far plane\n };\n }\n\n isOffscreen(x1: number, y1: number, x2: number, y2: number): boolean {\n return x2 < viewportPadding || x1 >= this.screenRightBoundary || y2 < viewportPadding || y1 > this.screenBottomBoundary;\n }\n\n isInsideGrid(x1: number, y1: number, x2: number, y2: number): boolean {\n return x2 >= 0 && x1 < this.gridRightBoundary && y2 >= 0 && y1 < this.gridBottomBoundary;\n }\n\n /*\n * Returns a matrix for transforming collision shapes to viewport coordinate space.\n * Use this function to render e.g. collision circles on the screen.\n * example transformation: clipPos = glCoordMatrix * viewportMatrix * circle_pos\n */\n getViewportMatrix(): Mat4 {\n const m = mat4.identity([]);\n mat4.translate(m, m, [-viewportPadding, -viewportPadding, 0.0]);\n return m;\n }\n}\n\nexport default CollisionIndex;\n","// @flow\nimport type {OverscaledTileID} from '../../source/tile_id.js';\nimport type SymbolBucket from '../../data/bucket/symbol_bucket.js';\nimport type Transform from '../../geo/transform.js';\nimport type Projection from './projection.js';\nimport {mat4} from 'gl-matrix';\nimport assert from 'assert';\n\nfunction reconstructTileMatrix(transform: Transform, projection: Projection, coord: OverscaledTileID) {\n // Bucket being rendered is built for different map projection\n // than is currently being used. Reconstruct correct matrices.\n // This code path may happen during a Globe - Mercator transition\n const tileMatrix = projection.createTileMatrix(transform, transform.worldSize, coord.toUnwrapped());\n return mat4.multiply(new Float32Array(16), transform.projMatrix, tileMatrix);\n}\n\nexport function getCollisionDebugTileProjectionMatrix(coord: OverscaledTileID, bucket: SymbolBucket, transform: Transform): Float32Array {\n if (bucket.projection.name === transform.projection.name) {\n assert(coord.projMatrix);\n return coord.projMatrix;\n }\n const tr = transform.clone();\n tr.setProjection(bucket.projection);\n return reconstructTileMatrix(tr, bucket.getProjection(), coord);\n}\n\nexport function getSymbolTileProjectionMatrix(coord: OverscaledTileID, bucketProjection: Projection, transform: Transform): Float32Array {\n if (bucketProjection.name === transform.projection.name) {\n assert(coord.projMatrix);\n return coord.projMatrix;\n }\n return reconstructTileMatrix(transform, bucketProjection, coord);\n}\n\nexport function getSymbolPlacementTileProjectionMatrix(coord: OverscaledTileID, bucketProjection: Projection, transform: Transform, runtimeProjection: string): Float32Array {\n if (bucketProjection.name === runtimeProjection) {\n return transform.calculateProjMatrix(coord.toUnwrapped());\n }\n assert(transform.projection.name === bucketProjection.name);\n return reconstructTileMatrix(transform, bucketProjection, coord);\n}\n","// @flow\n\nimport CollisionIndex from './collision_index.js';\nimport EXTENT from '../data/extent.js';\nimport ONE_EM from './one_em.js';\nimport * as symbolSize from './symbol_size.js';\nimport * as projection from './projection.js';\nimport {getAnchorJustification, evaluateVariableOffset} from './symbol_layout.js';\nimport {getAnchorAlignment, WritingMode} from './shaping.js';\nimport {mat4} from 'gl-matrix';\nimport assert from 'assert';\nimport Point from '@mapbox/point-geometry';\nimport type Transform from '../geo/transform.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type Tile from '../source/tile.js';\nimport type SymbolBucket, {SymbolBuffers, CollisionArrays, SingleCollisionBox} from '../data/bucket/symbol_bucket.js';\nimport type {CollisionBoxArray, CollisionVertexArray, SymbolInstance} from '../data/array_types.js';\nimport type FeatureIndex from '../data/feature_index.js';\nimport {getSymbolPlacementTileProjectionMatrix} from '../geo/projection/projection_util.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type {TextAnchor} from './symbol_layout.js';\nimport type {FogState} from '../style/fog_helpers.js';\nimport type {Mat4} from 'gl-matrix';\nimport type {PlacedCollisionBox} from './collision_index.js';\n\n// PlacedCollisionBox with all fields optional\ntype PartialPlacedCollisionBox = $ObjMap() => ?V>;\n\nclass OpacityState {\n opacity: number;\n placed: boolean;\n constructor(prevState: ?OpacityState, increment: number, placed: boolean, skipFade: ?boolean) {\n if (prevState) {\n this.opacity = Math.max(0, Math.min(1, prevState.opacity + (prevState.placed ? increment : -increment)));\n } else {\n this.opacity = (skipFade && placed) ? 1 : 0;\n }\n this.placed = placed;\n }\n isHidden(): boolean {\n return this.opacity === 0 && !this.placed;\n }\n}\n\nclass JointOpacityState {\n text: OpacityState;\n icon: OpacityState;\n clipped: boolean;\n constructor(prevState: ?JointOpacityState, increment: number, placedText: boolean, placedIcon: boolean, skipFade: ?boolean, clipped: boolean = false) {\n this.text = new OpacityState(prevState ? prevState.text : null, increment, placedText, skipFade);\n this.icon = new OpacityState(prevState ? prevState.icon : null, increment, placedIcon, skipFade);\n\n this.clipped = clipped;\n }\n isHidden(): boolean {\n return this.text.isHidden() && this.icon.isHidden();\n }\n}\n\nclass JointPlacement {\n text: boolean;\n icon: boolean;\n // skipFade = outside viewport, but within CollisionIndex::viewportPadding px of the edge\n // Because these symbols aren't onscreen yet, we can skip the \"fade in\" animation,\n // and if a subsequent viewport change brings them into view, they'll be fully\n // visible right away.\n skipFade: boolean;\n\n clipped: boolean\n constructor(text: boolean, icon: boolean, skipFade: boolean, clipped: boolean = false) {\n this.text = text;\n this.icon = icon;\n this.skipFade = skipFade;\n this.clipped = clipped;\n }\n}\n\nclass CollisionCircleArray {\n // Stores collision circles and placement matrices of a bucket for debug rendering.\n invProjMatrix: Mat4;\n viewportMatrix: Mat4;\n circles: Array;\n\n constructor() {\n this.invProjMatrix = mat4.create();\n this.viewportMatrix = mat4.create();\n this.circles = [];\n }\n}\n\nexport class RetainedQueryData {\n bucketInstanceId: number;\n featureIndex: FeatureIndex;\n sourceLayerIndex: number;\n bucketIndex: number;\n tileID: OverscaledTileID;\n featureSortOrder: ?Array\n constructor(bucketInstanceId: number,\n featureIndex: FeatureIndex,\n sourceLayerIndex: number,\n bucketIndex: number,\n tileID: OverscaledTileID) {\n this.bucketInstanceId = bucketInstanceId;\n this.featureIndex = featureIndex;\n this.sourceLayerIndex = sourceLayerIndex;\n this.bucketIndex = bucketIndex;\n this.tileID = tileID;\n }\n}\n\ntype CollisionGroup = {|ID: number, predicate?: any|};\n\nclass CollisionGroups {\n collisionGroups: {[groupName: string]: CollisionGroup};\n maxGroupID: number;\n crossSourceCollisions: boolean;\n\n constructor(crossSourceCollisions: boolean) {\n this.crossSourceCollisions = crossSourceCollisions;\n this.maxGroupID = 0;\n this.collisionGroups = {};\n }\n\n get(sourceID: string): CollisionGroup {\n // The predicate/groupID mechanism allows for arbitrary grouping,\n // but the current interface defines one source == one group when\n // crossSourceCollisions == true.\n if (!this.crossSourceCollisions) {\n if (!this.collisionGroups[sourceID]) {\n const nextGroupID = ++this.maxGroupID;\n this.collisionGroups[sourceID] = {\n ID: nextGroupID,\n predicate: (key) => {\n return key.collisionGroupID === nextGroupID;\n }\n };\n }\n return this.collisionGroups[sourceID];\n } else {\n return {ID: 0, predicate: null};\n }\n }\n}\n\nfunction calculateVariableLayoutShift(anchor: TextAnchor, width: number, height: number, textOffset: [number, number], textScale: number): Point {\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(anchor);\n const shiftX = -(horizontalAlign - 0.5) * width;\n const shiftY = -(verticalAlign - 0.5) * height;\n const offset = evaluateVariableOffset(anchor, textOffset);\n return new Point(\n shiftX + offset[0] * textScale,\n shiftY + offset[1] * textScale\n );\n}\n\nfunction offsetShift(shiftX: number, shiftY: number, rotateWithMap: boolean, pitchWithMap: boolean, angle: number): Point {\n const shift = new Point(shiftX, shiftY);\n if (rotateWithMap) {\n shift._rotate(pitchWithMap ? angle : -angle);\n }\n return shift;\n}\n\nexport type VariableOffset = {\n textOffset: [number, number],\n width: number,\n height: number,\n anchor: TextAnchor,\n textScale: number,\n prevAnchor?: TextAnchor\n};\n\ntype TileLayerParameters = {\n bucket: SymbolBucket,\n layout: any,\n posMatrix: Mat4,\n textLabelPlaneMatrix: Mat4,\n labelToScreenMatrix: ?Mat4,\n scale: number,\n textPixelRatio: number,\n holdingForFade: boolean,\n collisionBoxArray: ?CollisionBoxArray,\n partiallyEvaluatedTextSize: any,\n collisionGroup: any\n};\n\nexport type BucketPart = {\n sortKey?: number | void,\n symbolInstanceStart: number,\n symbolInstanceEnd: number,\n parameters: TileLayerParameters\n};\n\nexport type CrossTileID = string | number;\n\nexport class Placement {\n projection: string;\n transform: Transform;\n collisionIndex: CollisionIndex;\n placements: { [_: CrossTileID]: JointPlacement };\n opacities: { [_: CrossTileID]: JointOpacityState };\n variableOffsets: {[_: CrossTileID]: VariableOffset };\n placedOrientations: {[_: CrossTileID]: number };\n commitTime: number;\n prevZoomAdjustment: number;\n lastPlacementChangeTime: number;\n stale: boolean;\n fadeDuration: number;\n retainedQueryData: {[_: number]: RetainedQueryData};\n collisionGroups: CollisionGroups;\n prevPlacement: ?Placement;\n zoomAtLastRecencyCheck: number;\n collisionCircleArrays: {[any]: CollisionCircleArray};\n\n constructor(transform: Transform, fadeDuration: number, crossSourceCollisions: boolean, prevPlacement?: Placement, fogState: ?FogState) {\n this.transform = transform.clone();\n this.projection = transform.projection.name;\n this.collisionIndex = new CollisionIndex(this.transform, fogState);\n this.placements = {};\n this.opacities = {};\n this.variableOffsets = {};\n this.stale = false;\n this.commitTime = 0;\n this.fadeDuration = fadeDuration;\n this.retainedQueryData = {};\n this.collisionGroups = new CollisionGroups(crossSourceCollisions);\n this.collisionCircleArrays = {};\n\n this.prevPlacement = prevPlacement;\n if (prevPlacement) {\n prevPlacement.prevPlacement = undefined; // Only hold on to one placement back\n }\n\n this.placedOrientations = {};\n }\n\n getBucketParts(results: Array, styleLayer: StyleLayer, tile: Tile, sortAcrossTiles: boolean) {\n const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket);\n const bucketFeatureIndex = tile.latestFeatureIndex;\n\n if (!symbolBucket || !bucketFeatureIndex || styleLayer.id !== symbolBucket.layerIds[0])\n return;\n\n const layout = symbolBucket.layers[0].layout;\n\n const collisionBoxArray = tile.collisionBoxArray;\n const scale = Math.pow(2, this.transform.zoom - tile.tileID.overscaledZ);\n const textPixelRatio = tile.tileSize / EXTENT;\n const unwrappedTileID = tile.tileID.toUnwrapped();\n\n this.transform.setProjection(symbolBucket.projection);\n\n const posMatrix = getSymbolPlacementTileProjectionMatrix(tile.tileID, symbolBucket.getProjection(), this.transform, this.projection);\n\n const pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n const rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n\n styleLayer.compileFilter();\n\n const dynamicFilter = styleLayer.dynamicFilter();\n const dynamicFilterNeedsFeature = styleLayer.dynamicFilterNeedsFeature();\n const pixelsToTiles = this.transform.calculatePixelsToTileUnitsMatrix(tile);\n\n const textLabelPlaneMatrix = projection.getLabelPlaneMatrixForPlacement(posMatrix,\n tile.tileID.canonical,\n pitchWithMap,\n rotateWithMap,\n this.transform,\n symbolBucket.getProjection(),\n pixelsToTiles);\n\n let labelToScreenMatrix = null;\n\n if (pitchWithMap) {\n const glMatrix = projection.getGlCoordMatrix(\n posMatrix,\n tile.tileID.canonical,\n pitchWithMap,\n rotateWithMap,\n this.transform,\n symbolBucket.getProjection(),\n pixelsToTiles);\n\n labelToScreenMatrix = mat4.multiply([], this.transform.labelPlaneMatrix, glMatrix);\n }\n\n let clippingData = null;\n assert(!!tile.latestFeatureIndex);\n if (!!dynamicFilter && tile.latestFeatureIndex) {\n\n clippingData = {\n unwrappedTileID,\n dynamicFilter,\n dynamicFilterNeedsFeature,\n featureIndex: tile.latestFeatureIndex\n };\n }\n\n // As long as this placement lives, we have to hold onto this bucket's\n // matching FeatureIndex/data for querying purposes\n this.retainedQueryData[symbolBucket.bucketInstanceId] = new RetainedQueryData(\n symbolBucket.bucketInstanceId,\n bucketFeatureIndex,\n symbolBucket.sourceLayerIndex,\n symbolBucket.index,\n tile.tileID\n );\n\n const parameters = {\n bucket: symbolBucket,\n layout,\n posMatrix,\n textLabelPlaneMatrix,\n labelToScreenMatrix,\n clippingData,\n scale,\n textPixelRatio,\n holdingForFade: tile.holdingForFade(),\n collisionBoxArray,\n partiallyEvaluatedTextSize: symbolSize.evaluateSizeForZoom(symbolBucket.textSizeData, this.transform.zoom),\n partiallyEvaluatedIconSize: symbolSize.evaluateSizeForZoom(symbolBucket.iconSizeData, this.transform.zoom),\n collisionGroup: this.collisionGroups.get(symbolBucket.sourceID)\n };\n\n if (sortAcrossTiles) {\n for (const range of symbolBucket.sortKeyRanges) {\n const {sortKey, symbolInstanceStart, symbolInstanceEnd} = range;\n results.push({sortKey, symbolInstanceStart, symbolInstanceEnd, parameters});\n }\n } else {\n results.push({\n symbolInstanceStart: 0,\n symbolInstanceEnd: symbolBucket.symbolInstances.length,\n parameters\n });\n }\n }\n\n attemptAnchorPlacement(anchor: TextAnchor, textBox: SingleCollisionBox, width: number, height: number,\n textScale: number, rotateWithMap: boolean, pitchWithMap: boolean, textPixelRatio: number,\n posMatrix: Mat4, collisionGroup: CollisionGroup, textAllowOverlap: boolean,\n symbolInstance: SymbolInstance, boxIndex: number, bucket: SymbolBucket,\n orientation: number, iconBox: ?SingleCollisionBox, textSize: any, iconSize: any): ?{ shift: Point, placedGlyphBoxes: PlacedCollisionBox } {\n\n const {textOffset0, textOffset1, crossTileID} = symbolInstance;\n const textOffset = [textOffset0, textOffset1];\n const shift = calculateVariableLayoutShift(anchor, width, height, textOffset, textScale);\n\n const placedGlyphBoxes = this.collisionIndex.placeCollisionBox(\n bucket, textScale, textBox, offsetShift(shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle),\n textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n if (iconBox) {\n const size = bucket.getSymbolInstanceIconSize(iconSize, this.transform.zoom, symbolInstance.placedIconSymbolIndex);\n const placedIconBoxes = this.collisionIndex.placeCollisionBox(\n bucket, size,\n iconBox, offsetShift(shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle),\n textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n if (placedIconBoxes.box.length === 0) return;\n }\n\n if (placedGlyphBoxes.box.length > 0) {\n let prevAnchor;\n // If this label was placed in the previous placement, record the anchor position\n // to allow us to animate the transition\n if (this.prevPlacement &&\n this.prevPlacement.variableOffsets[crossTileID] &&\n this.prevPlacement.placements[crossTileID] &&\n this.prevPlacement.placements[crossTileID].text) {\n prevAnchor = this.prevPlacement.variableOffsets[crossTileID].anchor;\n }\n assert(crossTileID !== 0);\n this.variableOffsets[crossTileID] = {\n textOffset,\n width,\n height,\n anchor,\n textScale,\n prevAnchor\n };\n this.markUsedJustification(bucket, anchor, symbolInstance, orientation);\n\n if (bucket.allowVerticalPlacement) {\n this.markUsedOrientation(bucket, orientation, symbolInstance);\n this.placedOrientations[crossTileID] = orientation;\n }\n\n return {shift, placedGlyphBoxes};\n }\n }\n\n placeLayerBucketPart(bucketPart: Object, seenCrossTileIDs: Set, showCollisionBoxes: boolean, updateCollisionBoxIfNecessary: boolean) {\n\n const {\n bucket,\n layout,\n posMatrix,\n textLabelPlaneMatrix,\n labelToScreenMatrix,\n clippingData,\n textPixelRatio,\n holdingForFade,\n collisionBoxArray,\n partiallyEvaluatedTextSize,\n partiallyEvaluatedIconSize,\n collisionGroup\n } = bucketPart.parameters;\n\n const textOptional = layout.get('text-optional');\n const iconOptional = layout.get('icon-optional');\n const textAllowOverlap = layout.get('text-allow-overlap');\n const iconAllowOverlap = layout.get('icon-allow-overlap');\n const rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n const pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n const hasIconTextFit = layout.get('icon-text-fit') !== 'none';\n const zOrderByViewportY = layout.get('symbol-z-order') === 'viewport-y';\n\n this.transform.setProjection(bucket.projection);\n\n // This logic is similar to the \"defaultOpacityState\" logic below in updateBucketOpacities\n // If we know a symbol is always supposed to show, force it to be marked visible even if\n // it wasn't placed into the collision index (because some or all of it was outside the range\n // of the collision grid).\n // There is a subtle edge case here we're accepting:\n // Symbol A has text-allow-overlap: true, icon-allow-overlap: true, icon-optional: false\n // A's icon is outside the grid, so doesn't get placed\n // A's text would be inside grid, but doesn't get placed because of icon-optional: false\n // We still show A because of the allow-overlap settings.\n // Symbol B has allow-overlap: false, and gets placed where A's text would be\n // On panning in, there is a short period when Symbol B and Symbol A will overlap\n // This is the reverse of our normal policy of \"fade in on pan\", but should look like any other\n // collision and hopefully not be too noticeable.\n // See https://github.com/mapbox/mapbox-gl-js/issues/7172\n let alwaysShowText = textAllowOverlap && (iconAllowOverlap || !bucket.hasIconData() || iconOptional);\n let alwaysShowIcon = iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || textOptional);\n\n if (!bucket.collisionArrays && collisionBoxArray) {\n bucket.deserializeCollisionBoxes(collisionBoxArray);\n }\n\n if (showCollisionBoxes && updateCollisionBoxIfNecessary) {\n bucket.updateCollisionDebugBuffers(this.transform.zoom, collisionBoxArray);\n }\n\n const placeSymbol = (symbolInstance: SymbolInstance, boxIndex: number, collisionArrays: CollisionArrays) => {\n const {crossTileID, numVerticalGlyphVertices} = symbolInstance;\n\n if (clippingData) {\n // Setup globals\n const globals = {\n zoom: this.transform.zoom,\n pitch: this.transform.pitch,\n };\n\n // Deserialize feature only if necessary\n let feature = null;\n if (clippingData.dynamicFilterNeedsFeature) {\n const featureIndex = clippingData.featureIndex;\n const retainedQueryData = this.retainedQueryData[bucket.bucketInstanceId];\n feature = featureIndex.loadFeature({\n featureIndex: symbolInstance.featureIndex,\n bucketIndex: retainedQueryData.bucketIndex,\n sourceLayerIndex: retainedQueryData.sourceLayerIndex,\n layoutVertexArrayOffset: 0\n });\n }\n const canonicalTileId = this.retainedQueryData[bucket.bucketInstanceId].tileID.canonical;\n\n const filterFunc = clippingData.dynamicFilter;\n const shouldClip = !filterFunc(globals, feature, canonicalTileId, new Point(symbolInstance.tileAnchorX, symbolInstance.tileAnchorY), this.transform.calculateDistanceTileData(clippingData.unwrappedTileID));\n\n if (shouldClip) {\n this.placements[crossTileID] = new JointPlacement(false, false, false, true);\n seenCrossTileIDs.add(crossTileID);\n return;\n }\n }\n\n if (seenCrossTileIDs.has(crossTileID)) return;\n if (holdingForFade) {\n // Mark all symbols from this tile as \"not placed\", but don't add to seenCrossTileIDs, because we don't\n // know yet if we have a duplicate in a parent tile that _should_ be placed.\n this.placements[crossTileID] = new JointPlacement(false, false, false);\n return;\n }\n let placeText: ?boolean = false;\n let placeIcon: ?boolean = false;\n let offscreen: ?boolean = true;\n let textOccluded: ?boolean = false;\n let iconOccluded = false;\n let shift = null;\n\n let placed: PartialPlacedCollisionBox = {box: null, offscreen: null, occluded: null};\n let placedVerticalText: PartialPlacedCollisionBox = {box: null, offscreen: null, occluded: null};\n\n let placedGlyphBoxes = null;\n let placedGlyphCircles = null;\n let placedIconBoxes = null;\n let textFeatureIndex = 0;\n let verticalTextFeatureIndex = 0;\n let iconFeatureIndex = 0;\n\n if (collisionArrays.textFeatureIndex) {\n textFeatureIndex = collisionArrays.textFeatureIndex;\n } else if (symbolInstance.useRuntimeCollisionCircles) {\n textFeatureIndex = symbolInstance.featureIndex;\n }\n if (collisionArrays.verticalTextFeatureIndex) {\n verticalTextFeatureIndex = collisionArrays.verticalTextFeatureIndex;\n }\n\n const updateBoxData = (box: SingleCollisionBox) => {\n box.tileID = this.retainedQueryData[bucket.bucketInstanceId].tileID;\n const elevation = this.transform.elevation;\n if (!elevation && !box.elevation) return;\n box.elevation = elevation ? elevation.getAtTileOffset(box.tileID, box.tileAnchorX, box.tileAnchorY) : 0;\n };\n\n const textBox = collisionArrays.textBox;\n if (textBox) {\n updateBoxData(textBox);\n const updatePreviousOrientationIfNotPlaced = (isPlaced: boolean) => {\n let previousOrientation = WritingMode.horizontal;\n if (bucket.allowVerticalPlacement && !isPlaced && this.prevPlacement) {\n const prevPlacedOrientation = this.prevPlacement.placedOrientations[crossTileID];\n if (prevPlacedOrientation) {\n this.placedOrientations[crossTileID] = prevPlacedOrientation;\n previousOrientation = prevPlacedOrientation;\n this.markUsedOrientation(bucket, previousOrientation, symbolInstance);\n }\n }\n return previousOrientation;\n };\n\n const placeTextForPlacementModes = (placeHorizontalFn: () => PartialPlacedCollisionBox, placeVerticalFn: () => PartialPlacedCollisionBox) => {\n if (bucket.allowVerticalPlacement && numVerticalGlyphVertices > 0 && collisionArrays.verticalTextBox) {\n for (const placementMode of bucket.writingModes) {\n if (placementMode === WritingMode.vertical) {\n placed = placeVerticalFn();\n placedVerticalText = placed;\n } else {\n placed = placeHorizontalFn();\n }\n if (placed && placed.box && placed.box.length) break;\n }\n } else {\n placed = placeHorizontalFn();\n }\n };\n\n if (!layout.get('text-variable-anchor')) {\n const placeBox = (collisionTextBox: SingleCollisionBox, orientation: number) => {\n const textScale = bucket.getSymbolInstanceTextSize(partiallyEvaluatedTextSize, symbolInstance, this.transform.zoom, boxIndex);\n const placedFeature = this.collisionIndex.placeCollisionBox(bucket, textScale, collisionTextBox,\n new Point(0, 0), textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n if (placedFeature && placedFeature.box && placedFeature.box.length) {\n this.markUsedOrientation(bucket, orientation, symbolInstance);\n this.placedOrientations[crossTileID] = orientation;\n }\n return placedFeature;\n };\n\n const placeHorizontal: () => PlacedCollisionBox = () => {\n return placeBox(textBox, WritingMode.horizontal);\n };\n\n const placeVertical: () => PlacedCollisionBox | PartialPlacedCollisionBox = () => {\n const verticalTextBox = collisionArrays.verticalTextBox;\n if (bucket.allowVerticalPlacement && numVerticalGlyphVertices > 0 && verticalTextBox) {\n updateBoxData(verticalTextBox);\n return placeBox(verticalTextBox, WritingMode.vertical);\n }\n return {box: null, offscreen: null, occluded: null};\n };\n\n placeTextForPlacementModes(\n ((placeHorizontal: any): () => PartialPlacedCollisionBox),\n ((placeVertical: any): () => PartialPlacedCollisionBox),\n );\n\n const isPlaced = placed && placed.box && placed.box.length;\n updatePreviousOrientationIfNotPlaced(!!isPlaced);\n\n } else {\n let anchors = layout.get('text-variable-anchor');\n\n // If this symbol was in the last placement, shift the previously used\n // anchor to the front of the anchor list, only if the previous anchor\n // is still in the anchor list\n if (this.prevPlacement && this.prevPlacement.variableOffsets[crossTileID]) {\n const prevOffsets = this.prevPlacement.variableOffsets[crossTileID];\n if (anchors.indexOf(prevOffsets.anchor) > 0) {\n anchors = anchors.filter(anchor => anchor !== prevOffsets.anchor);\n anchors.unshift(prevOffsets.anchor);\n }\n }\n\n const placeBoxForVariableAnchors = (collisionTextBox: SingleCollisionBox, collisionIconBox: ?SingleCollisionBox, orientation: number) => {\n const textScale = bucket.getSymbolInstanceTextSize(partiallyEvaluatedTextSize, symbolInstance, this.transform.zoom, boxIndex);\n const width = (collisionTextBox.x2 - collisionTextBox.x1) * textScale + 2.0 * collisionTextBox.padding;\n const height = (collisionTextBox.y2 - collisionTextBox.y1) * textScale + 2.0 * collisionTextBox.padding;\n\n const variableIconBox = hasIconTextFit && !iconAllowOverlap ? collisionIconBox : null;\n if (variableIconBox) updateBoxData(variableIconBox);\n\n let placedBox: PartialPlacedCollisionBox = {box: [], offscreen: false, occluded: false};\n const placementAttempts = textAllowOverlap ? anchors.length * 2 : anchors.length;\n for (let i = 0; i < placementAttempts; ++i) {\n const anchor = anchors[i % anchors.length];\n const allowOverlap = (i >= anchors.length);\n const result = this.attemptAnchorPlacement(\n anchor, collisionTextBox, width, height, textScale, rotateWithMap,\n pitchWithMap, textPixelRatio, posMatrix, collisionGroup, allowOverlap,\n symbolInstance, boxIndex, bucket, orientation, variableIconBox,\n partiallyEvaluatedTextSize, partiallyEvaluatedIconSize);\n\n if (result) {\n placedBox = ((result.placedGlyphBoxes: any): PartialPlacedCollisionBox);\n if (placedBox && placedBox.box && placedBox.box.length) {\n placeText = true;\n shift = result.shift;\n break;\n }\n }\n }\n\n return placedBox;\n };\n\n const placeHorizontal = () => {\n return placeBoxForVariableAnchors(textBox, collisionArrays.iconBox, WritingMode.horizontal);\n };\n\n const placeVertical = () => {\n const verticalTextBox = collisionArrays.verticalTextBox;\n if (verticalTextBox) updateBoxData(verticalTextBox);\n const wasPlaced = placed && placed.box && placed.box.length;\n if (bucket.allowVerticalPlacement && !wasPlaced && numVerticalGlyphVertices > 0 && verticalTextBox) {\n return placeBoxForVariableAnchors(verticalTextBox, collisionArrays.verticalIconBox, WritingMode.vertical);\n }\n return {box: null, offscreen: null, occluded: null};\n };\n\n placeTextForPlacementModes(placeHorizontal, placeVertical);\n\n if (placed) {\n placeText = placed.box;\n offscreen = placed.offscreen;\n textOccluded = placed.occluded;\n }\n\n const isPlaced = placed && placed.box;\n const prevOrientation = updatePreviousOrientationIfNotPlaced(!!isPlaced);\n\n // If we didn't get placed, we still need to copy our position from the last placement for\n // fade animations\n if (!placeText && this.prevPlacement) {\n const prevOffset = this.prevPlacement.variableOffsets[crossTileID];\n if (prevOffset) {\n this.variableOffsets[crossTileID] = prevOffset;\n this.markUsedJustification(bucket, prevOffset.anchor, symbolInstance, prevOrientation);\n }\n }\n\n }\n }\n\n placedGlyphBoxes = placed;\n\n placeText = placedGlyphBoxes && placedGlyphBoxes.box && placedGlyphBoxes.box.length > 0;\n offscreen = placedGlyphBoxes && placedGlyphBoxes.offscreen;\n textOccluded = placedGlyphBoxes && placedGlyphBoxes.occluded;\n\n if (symbolInstance.useRuntimeCollisionCircles) {\n const placedSymbolIndex = symbolInstance.centerJustifiedTextSymbolIndex >= 0 ? symbolInstance.centerJustifiedTextSymbolIndex : symbolInstance.verticalPlacedTextSymbolIndex;\n const placedSymbol = bucket.text.placedSymbolArray.get(placedSymbolIndex);\n const fontSize = symbolSize.evaluateSizeForFeature(bucket.textSizeData, partiallyEvaluatedTextSize, placedSymbol);\n\n const textPixelPadding = layout.get('text-padding');\n // Convert circle collision height into pixels\n const circlePixelDiameter = symbolInstance.collisionCircleDiameter * fontSize / ONE_EM;\n\n placedGlyphCircles = this.collisionIndex.placeCollisionCircles(\n bucket,\n textAllowOverlap,\n placedSymbol,\n bucket.lineVertexArray,\n bucket.glyphOffsetArray,\n fontSize,\n posMatrix,\n textLabelPlaneMatrix,\n labelToScreenMatrix,\n showCollisionBoxes,\n pitchWithMap,\n collisionGroup.predicate,\n circlePixelDiameter,\n textPixelPadding,\n this.retainedQueryData[bucket.bucketInstanceId].tileID);\n\n assert(!placedGlyphCircles.circles.length || (!placedGlyphCircles.collisionDetected || showCollisionBoxes));\n // If text-allow-overlap is set, force \"placedCircles\" to true\n // In theory there should always be at least one circle placed\n // in this case, but for now quirks in text-anchor\n // and text-offset may prevent that from being true.\n placeText = textAllowOverlap || (placedGlyphCircles.circles.length > 0 && !placedGlyphCircles.collisionDetected);\n offscreen = offscreen && placedGlyphCircles.offscreen;\n textOccluded = placedGlyphCircles.occluded;\n }\n\n if (collisionArrays.iconFeatureIndex) {\n iconFeatureIndex = collisionArrays.iconFeatureIndex;\n }\n\n if (collisionArrays.iconBox) {\n\n const placeIconFeature = (iconBox: SingleCollisionBox) => {\n updateBoxData(iconBox);\n const shiftPoint: Point = hasIconTextFit && shift ?\n offsetShift(shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle) :\n new Point(0, 0);\n const iconScale = bucket.getSymbolInstanceIconSize(partiallyEvaluatedIconSize, this.transform.zoom, symbolInstance.placedIconSymbolIndex);\n return this.collisionIndex.placeCollisionBox(bucket, iconScale, iconBox, shiftPoint,\n iconAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n };\n\n if (placedVerticalText && placedVerticalText.box && placedVerticalText.box.length && collisionArrays.verticalIconBox) {\n placedIconBoxes = placeIconFeature(collisionArrays.verticalIconBox);\n placeIcon = placedIconBoxes.box.length > 0;\n } else {\n placedIconBoxes = placeIconFeature(collisionArrays.iconBox);\n placeIcon = placedIconBoxes.box.length > 0;\n }\n offscreen = offscreen && placedIconBoxes.offscreen;\n iconOccluded = placedIconBoxes.occluded;\n }\n\n const iconWithoutText = textOptional ||\n (symbolInstance.numHorizontalGlyphVertices === 0 && numVerticalGlyphVertices === 0);\n const textWithoutIcon = iconOptional || symbolInstance.numIconVertices === 0;\n\n // Combine the scales for icons and text.\n if (!iconWithoutText && !textWithoutIcon) {\n placeIcon = placeText = placeIcon && placeText;\n } else if (!textWithoutIcon) {\n placeText = placeIcon && placeText;\n } else if (!iconWithoutText) {\n placeIcon = placeIcon && placeText;\n }\n\n if (placeText && placedGlyphBoxes && placedGlyphBoxes.box) {\n if (placedVerticalText && placedVerticalText.box && verticalTextFeatureIndex) {\n this.collisionIndex.insertCollisionBox(placedGlyphBoxes.box, layout.get('text-ignore-placement'),\n bucket.bucketInstanceId, verticalTextFeatureIndex, collisionGroup.ID);\n } else {\n this.collisionIndex.insertCollisionBox(placedGlyphBoxes.box, layout.get('text-ignore-placement'),\n bucket.bucketInstanceId, textFeatureIndex, collisionGroup.ID);\n }\n\n }\n if (placeIcon && placedIconBoxes) {\n this.collisionIndex.insertCollisionBox(placedIconBoxes.box, layout.get('icon-ignore-placement'),\n bucket.bucketInstanceId, iconFeatureIndex, collisionGroup.ID);\n }\n if (placedGlyphCircles) {\n if (placeText) {\n this.collisionIndex.insertCollisionCircles(placedGlyphCircles.circles, layout.get('text-ignore-placement'),\n bucket.bucketInstanceId, textFeatureIndex, collisionGroup.ID);\n }\n\n if (showCollisionBoxes) {\n const id = bucket.bucketInstanceId;\n let circleArray = this.collisionCircleArrays[id];\n\n // Group collision circles together by bucket. Circles can't be pushed forward for rendering yet as the symbol placement\n // for a bucket is not guaranteed to be complete before the commit-function has been called\n if (circleArray === undefined)\n circleArray = this.collisionCircleArrays[id] = new CollisionCircleArray();\n\n for (let i = 0; i < placedGlyphCircles.circles.length; i += 4) {\n circleArray.circles.push(placedGlyphCircles.circles[i + 0]); // x\n circleArray.circles.push(placedGlyphCircles.circles[i + 1]); // y\n circleArray.circles.push(placedGlyphCircles.circles[i + 2]); // radius\n circleArray.circles.push(placedGlyphCircles.collisionDetected ? 1 : 0); // collisionDetected-flag\n }\n }\n }\n\n assert(crossTileID !== 0);\n assert(bucket.bucketInstanceId !== 0);\n\n const notGlobe = bucket.projection.name !== 'globe';\n alwaysShowText = alwaysShowText && (notGlobe || !textOccluded);\n alwaysShowIcon = alwaysShowIcon && (notGlobe || !iconOccluded);\n\n this.placements[crossTileID] = new JointPlacement(placeText || alwaysShowText, placeIcon || alwaysShowIcon, offscreen || bucket.justReloaded);\n seenCrossTileIDs.add(crossTileID);\n };\n\n if (zOrderByViewportY) {\n assert(bucketPart.symbolInstanceStart === 0);\n const symbolIndexes = bucket.getSortedSymbolIndexes(this.transform.angle);\n for (let i = symbolIndexes.length - 1; i >= 0; --i) {\n const symbolIndex = symbolIndexes[i];\n placeSymbol(bucket.symbolInstances.get(symbolIndex), symbolIndex, bucket.collisionArrays[symbolIndex]);\n }\n } else {\n for (let i = bucketPart.symbolInstanceStart; i < bucketPart.symbolInstanceEnd; i++) {\n placeSymbol(bucket.symbolInstances.get(i), i, bucket.collisionArrays[i]);\n }\n }\n\n if (showCollisionBoxes && bucket.bucketInstanceId in this.collisionCircleArrays) {\n const circleArray = this.collisionCircleArrays[bucket.bucketInstanceId];\n\n // Store viewport and inverse projection matrices per bucket\n mat4.invert(circleArray.invProjMatrix, posMatrix);\n circleArray.viewportMatrix = this.collisionIndex.getViewportMatrix();\n }\n\n bucket.justReloaded = false;\n }\n\n markUsedJustification(bucket: SymbolBucket, placedAnchor: TextAnchor, symbolInstance: SymbolInstance, orientation: number) {\n const {\n leftJustifiedTextSymbolIndex: left, centerJustifiedTextSymbolIndex: center,\n rightJustifiedTextSymbolIndex: right, verticalPlacedTextSymbolIndex: vertical, crossTileID\n } = symbolInstance;\n\n const justification = getAnchorJustification(placedAnchor);\n const autoIndex =\n orientation === WritingMode.vertical ? vertical :\n justification === 'left' ? left :\n justification === 'center' ? center :\n justification === 'right' ? right : -1;\n\n // If there are multiple justifications and this one isn't it: shift offscreen\n // If either this is the chosen justification or the justification is hardwired: use it\n if (left >= 0) bucket.text.placedSymbolArray.get(left).crossTileID = autoIndex >= 0 && left !== autoIndex ? 0 : crossTileID;\n if (center >= 0) bucket.text.placedSymbolArray.get(center).crossTileID = autoIndex >= 0 && center !== autoIndex ? 0 : crossTileID;\n if (right >= 0) bucket.text.placedSymbolArray.get(right).crossTileID = autoIndex >= 0 && right !== autoIndex ? 0 : crossTileID;\n if (vertical >= 0) bucket.text.placedSymbolArray.get(vertical).crossTileID = autoIndex >= 0 && vertical !== autoIndex ? 0 : crossTileID;\n }\n\n markUsedOrientation(bucket: SymbolBucket, orientation: number, symbolInstance: SymbolInstance) {\n const horizontalOrientation = (orientation === WritingMode.horizontal || orientation === WritingMode.horizontalOnly) ? orientation : 0;\n const verticalOrientation = orientation === WritingMode.vertical ? orientation : 0;\n const {\n leftJustifiedTextSymbolIndex: left, centerJustifiedTextSymbolIndex: center,\n rightJustifiedTextSymbolIndex: right, verticalPlacedTextSymbolIndex: vertical\n } = symbolInstance;\n const array = bucket.text.placedSymbolArray;\n\n if (left >= 0) array.get(left).placedOrientation = horizontalOrientation;\n if (center >= 0) array.get(center).placedOrientation = horizontalOrientation;\n if (right >= 0) array.get(right).placedOrientation = horizontalOrientation;\n if (vertical >= 0) array.get(vertical).placedOrientation = verticalOrientation;\n }\n\n commit(now: number): void {\n this.commitTime = now;\n this.zoomAtLastRecencyCheck = this.transform.zoom;\n\n const prevPlacement = this.prevPlacement;\n let placementChanged = false;\n\n this.prevZoomAdjustment = prevPlacement ? prevPlacement.zoomAdjustment(this.transform.zoom) : 0;\n const increment = prevPlacement ? prevPlacement.symbolFadeChange(now) : 1;\n\n const prevOpacities = prevPlacement ? prevPlacement.opacities : {};\n const prevOffsets = prevPlacement ? prevPlacement.variableOffsets : {};\n const prevOrientations = prevPlacement ? prevPlacement.placedOrientations : {};\n\n // add the opacities from the current placement, and copy their current values from the previous placement\n for (const crossTileID in this.placements) {\n const jointPlacement = this.placements[crossTileID];\n const prevOpacity = prevOpacities[crossTileID];\n if (prevOpacity) {\n this.opacities[crossTileID] = new JointOpacityState(prevOpacity, increment, jointPlacement.text, jointPlacement.icon, null, jointPlacement.clipped);\n placementChanged = placementChanged ||\n jointPlacement.text !== prevOpacity.text.placed ||\n jointPlacement.icon !== prevOpacity.icon.placed;\n } else {\n this.opacities[crossTileID] = new JointOpacityState(null, increment, jointPlacement.text, jointPlacement.icon, jointPlacement.skipFade, jointPlacement.clipped);\n placementChanged = placementChanged || jointPlacement.text || jointPlacement.icon;\n }\n }\n\n // copy and update values from the previous placement that aren't in the current placement but haven't finished fading\n for (const crossTileID in prevOpacities) {\n const prevOpacity = prevOpacities[crossTileID];\n if (!this.opacities[crossTileID]) {\n const jointOpacity = new JointOpacityState(prevOpacity, increment, false, false);\n if (!jointOpacity.isHidden()) {\n this.opacities[crossTileID] = jointOpacity;\n placementChanged = placementChanged || prevOpacity.text.placed || prevOpacity.icon.placed;\n }\n }\n }\n for (const crossTileID in prevOffsets) {\n if (!this.variableOffsets[crossTileID] && this.opacities[crossTileID] && !this.opacities[crossTileID].isHidden()) {\n this.variableOffsets[crossTileID] = prevOffsets[crossTileID];\n }\n }\n\n for (const crossTileID in prevOrientations) {\n if (!this.placedOrientations[crossTileID] && this.opacities[crossTileID] && !this.opacities[crossTileID].isHidden()) {\n this.placedOrientations[crossTileID] = prevOrientations[crossTileID];\n }\n }\n\n // this.lastPlacementChangeTime is the time of the last commit() that\n // resulted in a placement change -- in other words, the start time of\n // the last symbol fade animation\n assert(!prevPlacement || prevPlacement.lastPlacementChangeTime !== undefined);\n if (placementChanged) {\n this.lastPlacementChangeTime = now;\n } else if (typeof this.lastPlacementChangeTime !== 'number') {\n this.lastPlacementChangeTime = prevPlacement ? prevPlacement.lastPlacementChangeTime : now;\n }\n }\n\n updateLayerOpacities(styleLayer: StyleLayer, tiles: Array) {\n const seenCrossTileIDs = new Set();\n for (const tile of tiles) {\n const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket);\n if (symbolBucket && tile.latestFeatureIndex && styleLayer.id === symbolBucket.layerIds[0]) {\n this.updateBucketOpacities(symbolBucket, seenCrossTileIDs, tile.collisionBoxArray);\n }\n }\n }\n\n updateBucketOpacities(bucket: SymbolBucket, seenCrossTileIDs: Set, collisionBoxArray: ?CollisionBoxArray) {\n if (bucket.hasTextData()) bucket.text.opacityVertexArray.clear();\n if (bucket.hasIconData()) bucket.icon.opacityVertexArray.clear();\n if (bucket.hasIconCollisionBoxData()) bucket.iconCollisionBox.collisionVertexArray.clear();\n if (bucket.hasTextCollisionBoxData()) bucket.textCollisionBox.collisionVertexArray.clear();\n\n const layout = bucket.layers[0].layout;\n const hasClipping = !!bucket.layers[0].dynamicFilter();\n const duplicateOpacityState = new JointOpacityState(null, 0, false, false, true);\n const textAllowOverlap = layout.get('text-allow-overlap');\n const iconAllowOverlap = layout.get('icon-allow-overlap');\n const variablePlacement = layout.get('text-variable-anchor');\n const rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n const pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n const hasIconTextFit = layout.get('icon-text-fit') !== 'none';\n // If allow-overlap is true, we can show symbols before placement runs on them\n // But we have to wait for placement if we potentially depend on a paired icon/text\n // with allow-overlap: false.\n // See https://github.com/mapbox/mapbox-gl-js/issues/7032\n const defaultOpacityState = new JointOpacityState(null, 0,\n textAllowOverlap && (iconAllowOverlap || !bucket.hasIconData() || layout.get('icon-optional')),\n iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || layout.get('text-optional')),\n true);\n\n if (!bucket.collisionArrays && collisionBoxArray && ((bucket.hasIconCollisionBoxData() || bucket.hasTextCollisionBoxData()))) {\n bucket.deserializeCollisionBoxes(collisionBoxArray);\n }\n\n const addOpacities = (iconOrText: SymbolBuffers, numVertices: number, opacity: number) => {\n for (let i = 0; i < numVertices / 4; i++) {\n iconOrText.opacityVertexArray.emplaceBack(opacity);\n }\n };\n\n let visibleInstanceCount = 0;\n\n for (let s = 0; s < bucket.symbolInstances.length; s++) {\n const symbolInstance = bucket.symbolInstances.get(s);\n const {\n numHorizontalGlyphVertices,\n numVerticalGlyphVertices,\n crossTileID,\n numIconVertices\n } = symbolInstance;\n\n const isDuplicate = seenCrossTileIDs.has(crossTileID);\n\n let opacityState = this.opacities[crossTileID];\n if (isDuplicate) {\n opacityState = duplicateOpacityState;\n } else if (!opacityState) {\n opacityState = defaultOpacityState;\n // store the state so that future placements use it as a starting point\n this.opacities[crossTileID] = opacityState;\n }\n\n seenCrossTileIDs.add(crossTileID);\n\n const hasText = numHorizontalGlyphVertices > 0 || numVerticalGlyphVertices > 0;\n const hasIcon = numIconVertices > 0;\n\n const placedOrientation = this.placedOrientations[crossTileID];\n const horizontalHidden = placedOrientation === WritingMode.vertical;\n const verticalHidden = placedOrientation === WritingMode.horizontal || placedOrientation === WritingMode.horizontalOnly;\n if ((hasText || hasIcon) && !opacityState.isHidden()) visibleInstanceCount++;\n\n if (hasText) {\n const packedOpacity = packOpacity(opacityState.text);\n // Vertical text fades in/out on collision the same way as corresponding\n // horizontal text. Switch between vertical/horizontal should be instantaneous\n const horizontalOpacity = horizontalHidden ? PACKED_HIDDEN_OPACITY : packedOpacity;\n addOpacities(bucket.text, numHorizontalGlyphVertices, horizontalOpacity);\n const verticalOpacity = verticalHidden ? PACKED_HIDDEN_OPACITY : packedOpacity;\n addOpacities(bucket.text, numVerticalGlyphVertices, verticalOpacity);\n\n // If this label is completely faded, mark it so that we don't have to calculate\n // its position at render time. If this layer has variable placement, shift the various\n // symbol instances appropriately so that symbols from buckets that have yet to be placed\n // offset appropriately.\n const symbolHidden = opacityState.text.isHidden();\n const {\n leftJustifiedTextSymbolIndex: left, centerJustifiedTextSymbolIndex: center,\n rightJustifiedTextSymbolIndex: right, verticalPlacedTextSymbolIndex: vertical\n } = symbolInstance;\n const array = bucket.text.placedSymbolArray;\n const horizontalHiddenValue = symbolHidden || horizontalHidden ? 1 : 0;\n\n if (left >= 0) array.get(left).hidden = horizontalHiddenValue;\n if (center >= 0) array.get(center).hidden = horizontalHiddenValue;\n if (right >= 0) array.get(right).hidden = horizontalHiddenValue;\n if (vertical >= 0) array.get(vertical).hidden = symbolHidden || verticalHidden ? 1 : 0;\n\n const prevOffset = this.variableOffsets[crossTileID];\n if (prevOffset) {\n this.markUsedJustification(bucket, prevOffset.anchor, symbolInstance, placedOrientation);\n }\n\n const prevOrientation = this.placedOrientations[crossTileID];\n if (prevOrientation) {\n this.markUsedJustification(bucket, 'left', symbolInstance, prevOrientation);\n this.markUsedOrientation(bucket, prevOrientation, symbolInstance);\n }\n }\n\n if (hasIcon) {\n const packedOpacity = packOpacity(opacityState.icon);\n const {placedIconSymbolIndex, verticalPlacedIconSymbolIndex} = symbolInstance;\n const array = bucket.icon.placedSymbolArray;\n const iconHidden = opacityState.icon.isHidden() ? 1 : 0;\n\n if (placedIconSymbolIndex >= 0) {\n const horizontalOpacity = !horizontalHidden ? packedOpacity : PACKED_HIDDEN_OPACITY;\n addOpacities(bucket.icon, numIconVertices, horizontalOpacity);\n array.get(placedIconSymbolIndex).hidden = iconHidden;\n }\n\n if (verticalPlacedIconSymbolIndex >= 0) {\n const verticalOpacity = !verticalHidden ? packedOpacity : PACKED_HIDDEN_OPACITY;\n addOpacities(bucket.icon, symbolInstance.numVerticalIconVertices, verticalOpacity);\n array.get(verticalPlacedIconSymbolIndex).hidden = iconHidden;\n }\n }\n\n if (bucket.hasIconCollisionBoxData() || bucket.hasTextCollisionBoxData()) {\n const collisionArrays = bucket.collisionArrays[s];\n if (collisionArrays) {\n let shift = new Point(0, 0);\n let used = true;\n if (collisionArrays.textBox || collisionArrays.verticalTextBox) {\n if (variablePlacement) {\n const variableOffset = this.variableOffsets[crossTileID];\n if (variableOffset) {\n // This will show either the currently placed position or the last\n // successfully placed position (so you can visualize what collision\n // just made the symbol disappear, and the most likely place for the\n // symbol to come back)\n shift = calculateVariableLayoutShift(variableOffset.anchor,\n variableOffset.width,\n variableOffset.height,\n variableOffset.textOffset,\n variableOffset.textScale);\n if (rotateWithMap) {\n shift._rotate(pitchWithMap ? this.transform.angle : -this.transform.angle);\n }\n } else {\n // No offset -> this symbol hasn't been placed since coming on-screen\n // No single box is particularly meaningful and all of them would be too noisy\n // Use the center box just to show something's there, but mark it \"not used\"\n used = false;\n }\n }\n\n if (hasClipping) {\n used = !opacityState.clipped;\n }\n\n if (collisionArrays.textBox) {\n updateCollisionVertices(bucket.textCollisionBox.collisionVertexArray, opacityState.text.placed, !used || horizontalHidden, shift.x, shift.y);\n }\n if (collisionArrays.verticalTextBox) {\n updateCollisionVertices(bucket.textCollisionBox.collisionVertexArray, opacityState.text.placed, !used || verticalHidden, shift.x, shift.y);\n }\n }\n\n const verticalIconUsed = used && Boolean(!verticalHidden && collisionArrays.verticalIconBox);\n\n if (collisionArrays.iconBox) {\n updateCollisionVertices(bucket.iconCollisionBox.collisionVertexArray, opacityState.icon.placed, verticalIconUsed,\n hasIconTextFit ? shift.x : 0,\n hasIconTextFit ? shift.y : 0);\n }\n\n if (collisionArrays.verticalIconBox) {\n updateCollisionVertices(bucket.iconCollisionBox.collisionVertexArray, opacityState.icon.placed, !verticalIconUsed,\n hasIconTextFit ? shift.x : 0,\n hasIconTextFit ? shift.y : 0);\n }\n }\n }\n }\n bucket.fullyClipped = visibleInstanceCount === 0;\n bucket.sortFeatures(this.transform.angle);\n if (this.retainedQueryData[bucket.bucketInstanceId]) {\n this.retainedQueryData[bucket.bucketInstanceId].featureSortOrder = bucket.featureSortOrder;\n }\n\n if (bucket.hasTextData() && bucket.text.opacityVertexBuffer) {\n bucket.text.opacityVertexBuffer.updateData(bucket.text.opacityVertexArray);\n }\n if (bucket.hasIconData() && bucket.icon.opacityVertexBuffer) {\n bucket.icon.opacityVertexBuffer.updateData(bucket.icon.opacityVertexArray);\n }\n if (bucket.hasIconCollisionBoxData() && bucket.iconCollisionBox.collisionVertexBuffer) {\n bucket.iconCollisionBox.collisionVertexBuffer.updateData(bucket.iconCollisionBox.collisionVertexArray);\n }\n if (bucket.hasTextCollisionBoxData() && bucket.textCollisionBox.collisionVertexBuffer) {\n bucket.textCollisionBox.collisionVertexBuffer.updateData(bucket.textCollisionBox.collisionVertexArray);\n }\n\n assert(bucket.text.opacityVertexArray.length === bucket.text.layoutVertexArray.length / 4);\n assert(bucket.icon.opacityVertexArray.length === bucket.icon.layoutVertexArray.length / 4);\n\n // Push generated collision circles to the bucket for debug rendering\n if (bucket.bucketInstanceId in this.collisionCircleArrays) {\n const instance = this.collisionCircleArrays[bucket.bucketInstanceId];\n\n bucket.placementInvProjMatrix = instance.invProjMatrix;\n bucket.placementViewportMatrix = instance.viewportMatrix;\n bucket.collisionCircleArray = instance.circles;\n\n delete this.collisionCircleArrays[bucket.bucketInstanceId];\n }\n }\n\n symbolFadeChange(now: number): number {\n return this.fadeDuration === 0 ?\n 1 :\n ((now - this.commitTime) / this.fadeDuration + this.prevZoomAdjustment);\n }\n\n zoomAdjustment(zoom: number): number {\n // When zooming out quickly, labels can overlap each other. This\n // adjustment is used to reduce the interval between placement calculations\n // and to reduce the fade duration when zooming out quickly. Discovering the\n // collisions more quickly and fading them more quickly reduces the unwanted effect.\n return Math.max(0, (this.transform.zoom - zoom) / 1.5);\n }\n\n hasTransitions(now: number): boolean {\n return this.stale ||\n now - this.lastPlacementChangeTime < this.fadeDuration;\n }\n\n stillRecent(now: number, zoom: number): boolean {\n // The adjustment makes placement more frequent when zooming.\n // This condition applies the adjustment only after the map has\n // stopped zooming. This avoids adding extra jank while zooming.\n const durationAdjustment = this.zoomAtLastRecencyCheck === zoom ?\n (1 - this.zoomAdjustment(zoom)) :\n 1;\n this.zoomAtLastRecencyCheck = zoom;\n\n return this.commitTime + this.fadeDuration * durationAdjustment > now;\n }\n\n setStale() {\n this.stale = true;\n }\n}\n\nfunction updateCollisionVertices(collisionVertexArray: CollisionVertexArray, placed: boolean, notUsed: boolean | number, shiftX?: number, shiftY?: number) {\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n}\n\n// All four vertices for a glyph will have the same opacity state\n// So we pack the opacity into a uint8, and then repeat it four times\n// to make a single uint32 that we can upload for each glyph in the\n// label.\nconst shift25 = Math.pow(2, 25);\nconst shift24 = Math.pow(2, 24);\nconst shift17 = Math.pow(2, 17);\nconst shift16 = Math.pow(2, 16);\nconst shift9 = Math.pow(2, 9);\nconst shift8 = Math.pow(2, 8);\nconst shift1 = Math.pow(2, 1);\nfunction packOpacity(opacityState: OpacityState): number {\n if (opacityState.opacity === 0 && !opacityState.placed) {\n return 0;\n } else if (opacityState.opacity === 1 && opacityState.placed) {\n return 4294967295;\n }\n const targetBit = opacityState.placed ? 1 : 0;\n const opacityBits = Math.floor(opacityState.opacity * 127);\n return opacityBits * shift25 + targetBit * shift24 +\n opacityBits * shift17 + targetBit * shift16 +\n opacityBits * shift9 + targetBit * shift8 +\n opacityBits * shift1 + targetBit;\n}\n\nconst PACKED_HIDDEN_OPACITY = 0;\n","// @flow\n\nimport browser from '../util/browser.js';\n\nimport {Placement} from '../symbol/placement.js';\nimport {PerformanceUtils} from '../util/performance.js';\n\nimport type Transform from '../geo/transform.js';\nimport type StyleLayer from './style_layer.js';\nimport type SymbolStyleLayer from './style_layer/symbol_style_layer.js';\nimport type Tile from '../source/tile.js';\nimport type {BucketPart} from '../symbol/placement.js';\nimport type {FogState} from './fog_helpers.js';\n\nclass LayerPlacement {\n _sortAcrossTiles: boolean;\n _currentTileIndex: number;\n _currentPartIndex: number;\n _seenCrossTileIDs: Set;\n _bucketParts: Array;\n\n constructor(styleLayer: SymbolStyleLayer) {\n this._sortAcrossTiles = styleLayer.layout.get('symbol-z-order') !== 'viewport-y' &&\n styleLayer.layout.get('symbol-sort-key').constantOr(1) !== undefined;\n\n this._currentTileIndex = 0;\n this._currentPartIndex = 0;\n this._seenCrossTileIDs = new Set();\n this._bucketParts = [];\n }\n\n continuePlacement(tiles: Array, placement: Placement, showCollisionBoxes: boolean, styleLayer: StyleLayer, shouldPausePlacement: () => boolean): boolean {\n const bucketParts = this._bucketParts;\n\n while (this._currentTileIndex < tiles.length) {\n const tile = tiles[this._currentTileIndex];\n placement.getBucketParts(bucketParts, styleLayer, tile, this._sortAcrossTiles);\n\n this._currentTileIndex++;\n if (shouldPausePlacement()) {\n return true;\n }\n }\n\n if (this._sortAcrossTiles) {\n this._sortAcrossTiles = false;\n bucketParts.sort((a, b) => ((a.sortKey: any): number) - ((b.sortKey: any): number));\n }\n\n while (this._currentPartIndex < bucketParts.length) {\n const bucketPart = bucketParts[this._currentPartIndex];\n placement.placeLayerBucketPart(bucketPart, this._seenCrossTileIDs, showCollisionBoxes, bucketPart.symbolInstanceStart === 0);\n this._currentPartIndex++;\n if (shouldPausePlacement()) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass PauseablePlacement {\n placement: Placement;\n _done: boolean;\n _currentPlacementIndex: number;\n _forceFullPlacement: boolean;\n _showCollisionBoxes: boolean;\n _inProgressLayer: ?LayerPlacement;\n\n constructor(transform: Transform, order: Array,\n forceFullPlacement: boolean,\n showCollisionBoxes: boolean,\n fadeDuration: number,\n crossSourceCollisions: boolean,\n prevPlacement?: Placement,\n fogState: ?FogState) {\n\n this.placement = new Placement(transform, fadeDuration, crossSourceCollisions, prevPlacement, fogState);\n this._currentPlacementIndex = order.length - 1;\n this._forceFullPlacement = forceFullPlacement;\n this._showCollisionBoxes = showCollisionBoxes;\n this._done = false;\n }\n\n isDone(): boolean {\n return this._done;\n }\n\n continuePlacement(order: Array, layers: {[_: string]: StyleLayer}, layerTiles: {[_: string]: Array}) {\n const startTime = browser.now();\n\n const shouldPausePlacement = () => {\n const elapsedTime = browser.now() - startTime;\n return this._forceFullPlacement ? false : elapsedTime > 2;\n };\n\n while (this._currentPlacementIndex >= 0) {\n const layerId = order[this._currentPlacementIndex];\n const layer = layers[layerId];\n const placementZoom = this.placement.collisionIndex.transform.zoom;\n if (layer.type === 'symbol' &&\n (!layer.minzoom || layer.minzoom <= placementZoom) &&\n (!layer.maxzoom || layer.maxzoom > placementZoom)) {\n\n if (!this._inProgressLayer) {\n this._inProgressLayer = new LayerPlacement(((layer: any): SymbolStyleLayer));\n }\n\n const pausePlacement = this._inProgressLayer.continuePlacement(layerTiles[layer.source], this.placement, this._showCollisionBoxes, layer, shouldPausePlacement);\n\n if (pausePlacement) {\n PerformanceUtils.recordPlacementTime(browser.now() - startTime);\n // We didn't finish placing all layers within 2ms,\n // but we can keep rendering with a partial placement\n // We'll resume here on the next frame\n return;\n }\n\n delete this._inProgressLayer;\n }\n\n this._currentPlacementIndex--;\n }\n PerformanceUtils.recordPlacementTime(browser.now() - startTime);\n this._done = true;\n }\n\n commit(now: number): Placement {\n this.placement.commit(now);\n return this.placement;\n }\n}\n\nexport default PauseablePlacement;\n","// @flow\n\nimport EXTENT from '../data/extent.js';\n\nimport {SymbolInstanceArray} from '../data/array_types.js';\nimport KDBush from 'kdbush';\n\nimport type Projection from '../geo/projection/projection.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type Tile from '../source/tile.js';\n\n/*\n The CrossTileSymbolIndex generally works on the assumption that\n a conceptual \"unique symbol\" can be identified by the text of\n the label combined with the anchor point. The goal is to assign\n these conceptual \"unique symbols\" a shared crossTileID that can be\n used by Placement to keep fading opacity states consistent and to\n deduplicate labels.\n\n The CrossTileSymbolIndex indexes all the current symbol instances and\n their crossTileIDs. When a symbol bucket gets added or updated, the\n index assigns a crossTileID to each of it's symbol instances by either\n matching it with an existing id or assigning a new one.\n*/\n\n// Round anchor positions to roughly 4 pixel grid\nconst roundingFactor = 512 / EXTENT / 2;\n\nclass TileLayerIndex {\n tileID: OverscaledTileID;\n bucketInstanceId: number;\n index: KDBush;\n keys: Array;\n crossTileIDs: Array;\n\n constructor(tileID: OverscaledTileID, symbolInstances: SymbolInstanceArray, bucketInstanceId: number) {\n this.tileID = tileID;\n this.bucketInstanceId = bucketInstanceId;\n\n // create a spatial index for deduplicating symbol instances;\n // use a low nodeSize because we're optimizing for search performance, not indexing\n this.index = new KDBush(symbolInstances.length, 16, Int32Array);\n this.keys = [];\n this.crossTileIDs = [];\n const tx = tileID.canonical.x * EXTENT;\n const ty = tileID.canonical.y * EXTENT;\n\n for (let i = 0; i < symbolInstances.length; i++) {\n const {key, crossTileID, tileAnchorX, tileAnchorY} = symbolInstances.get(i);\n\n // Converts the coordinates of the input symbol instance into coordinates that be can compared\n // against other symbols in this index. Coordinates are:\n // (1) world-based (so after conversion the source tile is irrelevant)\n // (2) converted to the z-scale of this TileLayerIndex\n // (3) down-sampled by \"roundingFactor\" from tile coordinate precision in order to be\n // more tolerant of small differences between tiles.\n const x = Math.floor((tx + tileAnchorX) * roundingFactor);\n const y = Math.floor((ty + tileAnchorY) * roundingFactor);\n\n this.index.add(x, y);\n this.keys.push(key);\n this.crossTileIDs.push(crossTileID);\n }\n this.index.finish();\n }\n\n findMatches(symbolInstances: SymbolInstanceArray, newTileID: OverscaledTileID, zoomCrossTileIDs: Set) {\n const tolerance = this.tileID.canonical.z < newTileID.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - newTileID.canonical.z);\n const scale = roundingFactor / Math.pow(2, newTileID.canonical.z - this.tileID.canonical.z);\n const tx = newTileID.canonical.x * EXTENT;\n const ty = newTileID.canonical.y * EXTENT;\n\n for (let i = 0; i < symbolInstances.length; i++) {\n const symbolInstance = symbolInstances.get(i);\n if (symbolInstance.crossTileID) {\n // already has a match, skip\n continue;\n }\n const {key, tileAnchorX, tileAnchorY} = symbolInstance;\n const x = Math.floor((tx + tileAnchorX) * scale);\n const y = Math.floor((ty + tileAnchorY) * scale);\n\n // Return any symbol with the same keys whose coordinates are within 1\n // grid unit. (with a 4px grid, this covers a 12px by 12px area)\n const matchedIds = this.index.range(x - tolerance, y - tolerance, x + tolerance, y + tolerance);\n for (const id of matchedIds) {\n const crossTileID = this.crossTileIDs[id];\n if (this.keys[id] === key && !zoomCrossTileIDs.has(crossTileID)) {\n // Once we've marked ourselves duplicate against this parent symbol,\n // don't let any other symbols at the same zoom level duplicate against\n // the same parent (see issue #5993)\n zoomCrossTileIDs.add(crossTileID);\n symbolInstance.crossTileID = crossTileID;\n break;\n }\n }\n }\n }\n}\n\nclass CrossTileIDs {\n maxCrossTileID: number;\n constructor() {\n this.maxCrossTileID = 0;\n }\n generate(): number {\n return ++this.maxCrossTileID;\n }\n}\n\nclass CrossTileSymbolLayerIndex {\n indexes: {[zoom: string | number]: {[tileId: string | number]: TileLayerIndex}};\n usedCrossTileIDs: {[zoom: string | number]: Set};\n lng: number;\n\n constructor() {\n this.indexes = {};\n this.usedCrossTileIDs = {};\n this.lng = 0;\n }\n\n /*\n * Sometimes when a user pans across the antimeridian the longitude value gets wrapped.\n * To prevent labels from flashing out and in we adjust the tileID values in the indexes\n * so that they match the new wrapped version of the map.\n */\n handleWrapJump(lng: number) {\n const wrapDelta = Math.round((lng - this.lng) / 360);\n if (wrapDelta !== 0) {\n for (const zoom in this.indexes) {\n const zoomIndexes = this.indexes[zoom];\n const newZoomIndex = {};\n for (const key in zoomIndexes) {\n // change the tileID's wrap and add it to a new index\n const index = zoomIndexes[key];\n index.tileID = index.tileID.unwrapTo(index.tileID.wrap + wrapDelta);\n newZoomIndex[index.tileID.key] = index;\n }\n this.indexes[zoom] = newZoomIndex;\n }\n }\n this.lng = lng;\n }\n\n addBucket(tileID: OverscaledTileID, bucket: SymbolBucket, crossTileIDs: CrossTileIDs): boolean {\n if (this.indexes[tileID.overscaledZ] &&\n this.indexes[tileID.overscaledZ][tileID.key]) {\n if (this.indexes[tileID.overscaledZ][tileID.key].bucketInstanceId ===\n bucket.bucketInstanceId) {\n return false;\n } else {\n // We're replacing this bucket with an updated version\n // Remove the old bucket's \"used crossTileIDs\" now so that\n // the new bucket can claim them.\n // The old index entries themselves stick around until\n // 'removeStaleBuckets' is called.\n this.removeBucketCrossTileIDs(tileID.overscaledZ,\n this.indexes[tileID.overscaledZ][tileID.key]);\n }\n }\n\n for (let i = 0; i < bucket.symbolInstances.length; i++) {\n const symbolInstance = bucket.symbolInstances.get(i);\n symbolInstance.crossTileID = 0;\n }\n\n if (!this.usedCrossTileIDs[tileID.overscaledZ]) {\n this.usedCrossTileIDs[tileID.overscaledZ] = new Set();\n }\n const zoomCrossTileIDs = this.usedCrossTileIDs[tileID.overscaledZ];\n\n for (const zoom in this.indexes) {\n const zoomIndexes = this.indexes[zoom];\n if (Number(zoom) > tileID.overscaledZ) {\n for (const id in zoomIndexes) {\n const childIndex = zoomIndexes[id];\n if (childIndex.tileID.isChildOf(tileID)) {\n childIndex.findMatches(bucket.symbolInstances, tileID, zoomCrossTileIDs);\n }\n }\n } else {\n const parentCoord = tileID.scaledTo(Number(zoom));\n const parentIndex = zoomIndexes[parentCoord.key];\n if (parentIndex) {\n parentIndex.findMatches(bucket.symbolInstances, tileID, zoomCrossTileIDs);\n }\n }\n }\n\n for (let i = 0; i < bucket.symbolInstances.length; i++) {\n const symbolInstance = bucket.symbolInstances.get(i);\n if (!symbolInstance.crossTileID) {\n // symbol did not match any known symbol, assign a new id\n symbolInstance.crossTileID = crossTileIDs.generate();\n zoomCrossTileIDs.add(symbolInstance.crossTileID);\n }\n }\n\n if (this.indexes[tileID.overscaledZ] === undefined) {\n this.indexes[tileID.overscaledZ] = {};\n }\n this.indexes[tileID.overscaledZ][tileID.key] = new TileLayerIndex(tileID, bucket.symbolInstances, bucket.bucketInstanceId);\n\n return true;\n }\n\n removeBucketCrossTileIDs(zoom: string | number, removedBucket: TileLayerIndex) {\n for (const crossTileID of removedBucket.crossTileIDs) {\n this.usedCrossTileIDs[zoom].delete(crossTileID);\n }\n }\n\n removeStaleBuckets(currentIDs: { [string | number]: boolean }): boolean {\n let tilesChanged = false;\n for (const z in this.indexes) {\n const zoomIndexes = this.indexes[z];\n for (const tileKey in zoomIndexes) {\n if (!currentIDs[zoomIndexes[tileKey].bucketInstanceId]) {\n this.removeBucketCrossTileIDs(z, zoomIndexes[tileKey]);\n delete zoomIndexes[tileKey];\n tilesChanged = true;\n }\n }\n }\n return tilesChanged;\n }\n}\n\nclass CrossTileSymbolIndex {\n layerIndexes: {[layerId: string]: CrossTileSymbolLayerIndex};\n crossTileIDs: CrossTileIDs;\n maxBucketInstanceId: number;\n bucketsInCurrentPlacement: {[_: number]: boolean};\n\n constructor() {\n this.layerIndexes = {};\n this.crossTileIDs = new CrossTileIDs();\n this.maxBucketInstanceId = 0;\n this.bucketsInCurrentPlacement = {};\n }\n\n addLayer(styleLayer: StyleLayer, tiles: Array, lng: number, projection: Projection): boolean {\n let layerIndex = this.layerIndexes[styleLayer.id];\n if (layerIndex === undefined) {\n layerIndex = this.layerIndexes[styleLayer.id] = new CrossTileSymbolLayerIndex();\n }\n\n let symbolBucketsChanged = false;\n const currentBucketIDs = {};\n\n if (projection.name !== 'globe') {\n layerIndex.handleWrapJump(lng);\n }\n\n for (const tile of tiles) {\n const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket);\n if (!symbolBucket || styleLayer.id !== symbolBucket.layerIds[0])\n continue;\n\n if (!symbolBucket.bucketInstanceId) {\n symbolBucket.bucketInstanceId = ++this.maxBucketInstanceId;\n }\n\n if (layerIndex.addBucket(tile.tileID, symbolBucket, this.crossTileIDs)) {\n symbolBucketsChanged = true;\n }\n currentBucketIDs[symbolBucket.bucketInstanceId] = true;\n }\n\n if (layerIndex.removeStaleBuckets(currentBucketIDs)) {\n symbolBucketsChanged = true;\n }\n\n return symbolBucketsChanged;\n }\n\n pruneUnusedLayers(usedLayers: Array) {\n const usedLayerMap = {};\n usedLayers.forEach((usedLayer) => {\n usedLayerMap[usedLayer] = true;\n });\n for (const layerId in this.layerIndexes) {\n if (!usedLayerMap[layerId]) {\n delete this.layerIndexes[layerId];\n }\n }\n }\n}\n\nexport default CrossTileSymbolIndex;\n","// @flow\n\nimport assert from 'assert';\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport StyleLayer from './style_layer.js';\nimport createStyleLayer from './create_style_layer.js';\nimport loadSprite from './load_sprite.js';\nimport ImageManager from '../render/image_manager.js';\nimport GlyphManager, {LocalGlyphMode} from '../render/glyph_manager.js';\nimport Light from './light.js';\nimport Terrain, {DrapeRenderMode} from './terrain.js';\nimport Fog from './fog.js';\nimport {pick, clone, extend, deepEqual, filterObject} from '../util/util.js';\nimport {getJSON, getReferrer, makeRequest, ResourceType} from '../util/ajax.js';\nimport {isMapboxURL} from '../util/mapbox.js';\nimport browser from '../util/browser.js';\nimport Dispatcher from '../util/dispatcher.js';\nimport {\n validateStyle,\n validateSource,\n validateLayer,\n validateFilter,\n validateTerrain,\n emitValidationErrors as _emitValidationErrors\n} from './validate_style.js';\nimport {QueryGeometry} from '../style/query_geometry.js';\nimport {\n create as createSource,\n getType as getSourceType,\n setType as setSourceType,\n type SourceClass\n} from '../source/source.js';\nimport {queryRenderedFeatures, queryRenderedSymbols, querySourceFeatures} from '../source/query_features.js';\nimport SourceCache from '../source/source_cache.js';\nimport GeoJSONSource from '../source/geojson_source.js';\nimport styleSpec from '../style-spec/reference/latest.js';\nimport getWorkerPool from '../util/global_worker_pool.js';\nimport deref from '../style-spec/deref.js';\nimport emptyStyle from '../style-spec/empty.js';\nimport diffStyles, {operations as diffOperations} from '../style-spec/diff.js';\nimport {\n registerForPluginStateChange,\n evented as rtlTextPluginEvented,\n triggerPluginCompletionEvent\n} from '../source/rtl_text_plugin.js';\nimport PauseablePlacement from './pauseable_placement.js';\nimport CrossTileSymbolIndex from '../symbol/cross_tile_symbol_index.js';\nimport {validateCustomStyleLayer} from './style_layer/custom_style_layer.js';\n\n// We're skipping validation errors with the `source.canvas` identifier in order\n// to continue to allow canvas sources to be added at runtime/updated in\n// smart setStyle (see https://github.com/mapbox/mapbox-gl-js/pull/6424):\nconst emitValidationErrors = (evented: Evented, errors: ?ValidationErrors) =>\n _emitValidationErrors(evented, errors && errors.filter(error => error.identifier !== 'source.canvas'));\n\nimport type Map from '../ui/map.js';\nimport type Transform from '../geo/transform.js';\nimport type {StyleImage} from './style_image.js';\nimport type {StyleGlyph} from './style_glyph.js';\nimport type {Callback} from '../types/callback.js';\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {Placement} from '../symbol/placement.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {RequestParameters, ResponseCallback} from '../util/ajax.js';\nimport type {GeoJSON} from '@mapbox/geojson-types';\nimport type {\n LayerSpecification,\n FilterSpecification,\n StyleSpecification,\n LightSpecification,\n SourceSpecification,\n TerrainSpecification,\n FogSpecification,\n ProjectionSpecification,\n TransitionSpecification,\n PropertyValueSpecification\n} from '../style-spec/types.js';\nimport type {CustomLayerInterface} from './style_layer/custom_style_layer.js';\nimport type {Validator, ValidationErrors} from './validate_style.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type {QueryResult} from '../data/feature_index.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {FeatureStates} from '../source/source_state.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type {Source} from '../source/source.js';\nimport type {TransitionParameters} from './properties.js';\n\nconst supportedDiffOperations = pick(diffOperations, [\n 'addLayer',\n 'removeLayer',\n 'setPaintProperty',\n 'setLayoutProperty',\n 'setFilter',\n 'addSource',\n 'removeSource',\n 'setLayerZoomRange',\n 'setLight',\n 'setTransition',\n 'setGeoJSONSourceData',\n 'setTerrain',\n 'setFog',\n 'setProjection'\n // 'setGlyphs',\n // 'setSprite',\n]);\n\nconst ignoredDiffOperations = pick(diffOperations, [\n 'setCenter',\n 'setZoom',\n 'setBearing',\n 'setPitch'\n]);\n\nconst empty = emptyStyle();\n\nexport type StyleOptions = {\n validate?: boolean,\n localFontFamily?: string,\n localIdeographFontFamily?: string\n};\n\nexport type StyleSetterOptions = {\n validate?: boolean\n};\n\n// Symbols are draped only for specific cases: see isLayerDraped\nconst drapedLayers = {'fill': true, 'line': true, 'background': true, \"hillshade\": true, \"raster\": true};\n\n/**\n * @private\n */\nclass Style extends Evented {\n map: Map;\n stylesheet: StyleSpecification;\n dispatcher: Dispatcher;\n imageManager: ImageManager;\n glyphManager: GlyphManager;\n light: Light;\n terrain: ?Terrain;\n fog: ?Fog;\n\n _request: ?Cancelable;\n _spriteRequest: ?Cancelable;\n _layers: {[_: string]: StyleLayer};\n _num3DLayers: number;\n _numSymbolLayers: number;\n _numCircleLayers: number;\n _serializedLayers: {[_: string]: Object};\n _order: Array;\n _drapedFirstOrder: Array;\n _sourceCaches: {[_: string]: SourceCache};\n _otherSourceCaches: {[_: string]: SourceCache};\n _symbolSourceCaches: {[_: string]: SourceCache};\n _loaded: boolean;\n _rtlTextPluginCallback: Function;\n _changed: boolean;\n _updatedSources: {[_: string]: 'clear' | 'reload'};\n _updatedLayers: {[_: string]: true};\n _removedLayers: {[_: string]: StyleLayer};\n _changedImages: {[_: string]: true};\n _updatedPaintProps: {[layer: string]: true};\n _layerOrderChanged: boolean;\n _availableImages: Array;\n _markersNeedUpdate: boolean;\n\n crossTileSymbolIndex: CrossTileSymbolIndex;\n pauseablePlacement: PauseablePlacement;\n placement: Placement;\n z: number;\n\n // exposed to allow stubbing by unit tests\n static getSourceType: typeof getSourceType;\n static setSourceType: typeof setSourceType;\n static registerForPluginStateChange: typeof registerForPluginStateChange;\n\n constructor(map: Map, options: StyleOptions = {}) {\n super();\n\n this.map = map;\n this.dispatcher = new Dispatcher(getWorkerPool(), this);\n this.imageManager = new ImageManager();\n this.imageManager.setEventedParent(this);\n this.glyphManager = new GlyphManager(map._requestManager,\n options.localFontFamily ?\n LocalGlyphMode.all :\n (options.localIdeographFontFamily ? LocalGlyphMode.ideographs : LocalGlyphMode.none),\n options.localFontFamily || options.localIdeographFontFamily);\n this.crossTileSymbolIndex = new CrossTileSymbolIndex();\n\n this._layers = {};\n this._num3DLayers = 0;\n this._numSymbolLayers = 0;\n this._numCircleLayers = 0;\n this._serializedLayers = {};\n this._sourceCaches = {};\n this._otherSourceCaches = {};\n this._symbolSourceCaches = {};\n this._loaded = false;\n this._availableImages = [];\n this._order = [];\n this._drapedFirstOrder = [];\n this._markersNeedUpdate = false;\n\n this._resetUpdates();\n\n this.dispatcher.broadcast('setReferrer', getReferrer());\n\n const self = this;\n this._rtlTextPluginCallback = Style.registerForPluginStateChange((event) => {\n const state = {\n pluginStatus: event.pluginStatus,\n pluginURL: event.pluginURL\n };\n self.dispatcher.broadcast('syncRTLPluginState', state, (err, results) => {\n triggerPluginCompletionEvent(err);\n if (results) {\n const allComplete = results.every((elem) => elem);\n if (allComplete) {\n for (const id in self._sourceCaches) {\n const sourceCache = self._sourceCaches[id];\n const sourceCacheType = sourceCache.getSource().type;\n if (sourceCacheType === 'vector' || sourceCacheType === 'geojson') {\n sourceCache.reload(); // Should be a no-op if the plugin loads before any tiles load\n }\n }\n }\n }\n\n });\n });\n\n this.on('data', (event) => {\n if (event.dataType !== 'source' || event.sourceDataType !== 'metadata') {\n return;\n }\n\n const source = this.getSource(event.sourceId);\n if (!source || !source.vectorLayerIds) {\n return;\n }\n\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.source === source.id) {\n this._validateLayer(layer);\n }\n }\n });\n }\n\n loadURL(url: string, options: {\n validate?: boolean,\n accessToken?: string\n } = {}) {\n this.fire(new Event('dataloading', {dataType: 'style'}));\n\n const validate = typeof options.validate === 'boolean' ?\n options.validate : !isMapboxURL(url);\n\n url = this.map._requestManager.normalizeStyleURL(url, options.accessToken);\n const request = this.map._requestManager.transformRequest(url, ResourceType.Style);\n this._request = getJSON(request, (error: ?Error, json: ?Object) => {\n this._request = null;\n if (error) {\n this.fire(new ErrorEvent(error));\n } else if (json) {\n this._load(json, validate);\n }\n });\n }\n\n loadJSON(json: StyleSpecification, options: StyleSetterOptions = {}) {\n this.fire(new Event('dataloading', {dataType: 'style'}));\n\n this._request = browser.frame(() => {\n this._request = null;\n this._load(json, options.validate !== false);\n });\n }\n\n loadEmpty() {\n this.fire(new Event('dataloading', {dataType: 'style'}));\n this._load(empty, false);\n }\n\n _updateLayerCount(layer: StyleLayer, add: boolean) {\n // Typed layer bookkeeping\n const count = add ? 1 : -1;\n if (layer.is3D()) {\n this._num3DLayers += count;\n }\n if (layer.type === 'circle') {\n this._numCircleLayers += count;\n }\n if (layer.type === 'symbol') {\n this._numSymbolLayers += count;\n }\n }\n\n _load(json: StyleSpecification, validate: boolean) {\n if (validate && emitValidationErrors(this, validateStyle(json))) {\n return;\n }\n\n this._loaded = true;\n this.stylesheet = clone(json);\n this._updateMapProjection();\n\n for (const id in json.sources) {\n this.addSource(id, json.sources[id], {validate: false});\n }\n this._changed = false; // avoid triggering redundant style update after adding initial sources\n if (json.sprite) {\n this._loadSprite(json.sprite);\n } else {\n this.imageManager.setLoaded(true);\n this.dispatcher.broadcast('spriteLoaded', true);\n }\n\n this.glyphManager.setURL(json.glyphs);\n\n const layers: Array = deref(this.stylesheet.layers);\n\n this._order = layers.map((layer) => layer.id);\n\n this._layers = {};\n this._serializedLayers = {};\n for (const layer of layers) {\n const styleLayer = createStyleLayer(layer);\n styleLayer.setEventedParent(this, {layer: {id: styleLayer.id}});\n this._layers[styleLayer.id] = styleLayer;\n this._serializedLayers[styleLayer.id] = styleLayer.serialize();\n this._updateLayerCount(styleLayer, true);\n }\n\n this.dispatcher.broadcast('setLayers', this._serializeLayers(this._order));\n\n this.light = new Light(this.stylesheet.light);\n if (this.stylesheet.terrain && !this.terrainSetForDrapingOnly()) {\n // $FlowFixMe[incompatible-call] - Flow can't infer that terrain is not undefined\n this._createTerrain(this.stylesheet.terrain, DrapeRenderMode.elevated);\n }\n if (this.stylesheet.fog) {\n this._createFog(this.stylesheet.fog);\n }\n this._updateDrapeFirstLayers();\n\n this.fire(new Event('data', {dataType: 'style'}));\n this.fire(new Event('style.load'));\n }\n\n terrainSetForDrapingOnly(): boolean {\n return !!this.terrain && this.terrain.drapeRenderMode === DrapeRenderMode.deferred;\n }\n\n setProjection(projection?: ?ProjectionSpecification) {\n if (projection) {\n this.stylesheet.projection = projection;\n } else {\n delete this.stylesheet.projection;\n }\n this._updateMapProjection();\n }\n\n applyProjectionUpdate() {\n if (!this._loaded) return;\n this.dispatcher.broadcast('setProjection', this.map.transform.projectionOptions);\n\n if (this.map.transform.projection.requiresDraping) {\n const hasTerrain = this.getTerrain() || this.stylesheet.terrain;\n if (!hasTerrain) {\n this.setTerrainForDraping();\n }\n } else if (this.terrainSetForDrapingOnly()) {\n this.setTerrain(null);\n }\n }\n\n _updateMapProjection() {\n if (!this.map._useExplicitProjection) { // Update the visible projection if map's is null\n this.map._prioritizeAndUpdateProjection(null, this.stylesheet.projection);\n } else { // Ensure that style is consistent with current projection on style load\n this.applyProjectionUpdate();\n }\n }\n\n _loadSprite(url: string) {\n this._spriteRequest = loadSprite(url, this.map._requestManager, (err, images) => {\n this._spriteRequest = null;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (images) {\n for (const id in images) {\n this.imageManager.addImage(id, images[id]);\n }\n }\n\n this.imageManager.setLoaded(true);\n this._availableImages = this.imageManager.listImages();\n this.dispatcher.broadcast('setImages', this._availableImages);\n this.dispatcher.broadcast('spriteLoaded', true);\n this.fire(new Event('data', {dataType: 'style'}));\n });\n }\n\n _validateLayer(layer: StyleLayer) {\n const source = this.getSource(layer.source);\n if (!source) {\n return;\n }\n\n const sourceLayer = layer.sourceLayer;\n if (!sourceLayer) {\n return;\n }\n\n if (source.type === 'geojson' || (source.vectorLayerIds && source.vectorLayerIds.indexOf(sourceLayer) === -1)) {\n this.fire(new ErrorEvent(new Error(\n `Source layer \"${sourceLayer}\" ` +\n `does not exist on source \"${source.id}\" ` +\n `as specified by style layer \"${layer.id}\"`\n )));\n }\n }\n\n loaded(): boolean {\n if (!this._loaded)\n return false;\n\n if (Object.keys(this._updatedSources).length)\n return false;\n\n for (const id in this._sourceCaches)\n if (!this._sourceCaches[id].loaded())\n return false;\n\n if (!this.imageManager.isLoaded())\n return false;\n\n return true;\n }\n\n _serializeLayers(ids: Array): Array {\n const serializedLayers = [];\n for (const id of ids) {\n const layer = this._layers[id];\n if (layer.type !== 'custom') {\n serializedLayers.push(layer.serialize());\n }\n }\n return serializedLayers;\n }\n\n hasTransitions(): boolean {\n if (this.light && this.light.hasTransition()) {\n return true;\n }\n\n if (this.fog && this.fog.hasTransition()) {\n return true;\n }\n\n for (const id in this._sourceCaches) {\n if (this._sourceCaches[id].hasTransition()) {\n return true;\n }\n }\n\n for (const id in this._layers) {\n if (this._layers[id].hasTransition()) {\n return true;\n }\n }\n\n return false;\n }\n\n get order(): Array {\n if (this.map._optimizeForTerrain && this.terrain) {\n assert(this._drapedFirstOrder.length === this._order.length);\n return this._drapedFirstOrder;\n }\n return this._order;\n }\n\n isLayerDraped(layer: StyleLayer): boolean {\n if (!this.terrain) return false;\n // $FlowFixMe[prop-missing]\n // $FlowFixMe[incompatible-use]\n if (typeof layer.isLayerDraped === 'function') return layer.isLayerDraped();\n return drapedLayers[layer.type];\n }\n\n _checkLoaded(): void {\n if (!this._loaded) {\n throw new Error('Style is not done loading');\n }\n }\n\n /**\n * Apply queued style updates in a batch and recalculate zoom-dependent paint properties.\n * @private\n */\n update(parameters: EvaluationParameters) {\n if (!this._loaded) {\n return;\n }\n\n const changed = this._changed;\n if (this._changed) {\n const updatedIds = Object.keys(this._updatedLayers);\n const removedIds = Object.keys(this._removedLayers);\n\n if (updatedIds.length || removedIds.length) {\n this._updateWorkerLayers(updatedIds, removedIds);\n }\n for (const id in this._updatedSources) {\n const action = this._updatedSources[id];\n assert(action === 'reload' || action === 'clear');\n if (action === 'reload') {\n this._reloadSource(id);\n } else if (action === 'clear') {\n this._clearSource(id);\n }\n }\n\n this._updateTilesForChangedImages();\n\n for (const id in this._updatedPaintProps) {\n this._layers[id].updateTransitions(parameters);\n }\n\n this.light.updateTransitions(parameters);\n if (this.fog) {\n this.fog.updateTransitions(parameters);\n }\n\n this._resetUpdates();\n }\n\n const sourcesUsedBefore = {};\n\n for (const sourceId in this._sourceCaches) {\n const sourceCache = this._sourceCaches[sourceId];\n sourcesUsedBefore[sourceId] = sourceCache.used;\n sourceCache.used = false;\n }\n\n for (const layerId of this._order) {\n const layer = this._layers[layerId];\n\n layer.recalculate(parameters, this._availableImages);\n if (!layer.isHidden(parameters.zoom)) {\n const sourceCache = this._getLayerSourceCache(layer);\n if (sourceCache) sourceCache.used = true;\n }\n\n const painter = this.map.painter;\n if (painter) {\n const programIds = layer.getProgramIds();\n if (!programIds) continue;\n\n const programConfiguration = layer.getProgramConfiguration(parameters.zoom);\n\n for (const programId of programIds) {\n painter.useProgram(programId, programConfiguration);\n }\n }\n }\n\n for (const sourceId in sourcesUsedBefore) {\n const sourceCache = this._sourceCaches[sourceId];\n if (sourcesUsedBefore[sourceId] !== sourceCache.used) {\n sourceCache.getSource().fire(new Event('data', {sourceDataType: 'visibility', dataType:'source', sourceId: sourceCache.getSource().id}));\n }\n }\n\n this.light.recalculate(parameters);\n if (this.terrain) {\n this.terrain.recalculate(parameters);\n }\n if (this.fog) {\n this.fog.recalculate(parameters);\n }\n this.z = parameters.zoom;\n\n if (this._markersNeedUpdate) {\n this._updateMarkersOpacity();\n this._markersNeedUpdate = false;\n }\n\n if (changed) {\n this.fire(new Event('data', {dataType: 'style'}));\n }\n }\n\n /*\n * Apply any queued image changes.\n */\n _updateTilesForChangedImages() {\n const changedImages = Object.keys(this._changedImages);\n if (changedImages.length) {\n for (const name in this._sourceCaches) {\n this._sourceCaches[name].reloadTilesForDependencies(['icons', 'patterns'], changedImages);\n }\n this._changedImages = {};\n }\n }\n\n _updateWorkerLayers(updatedIds: Array, removedIds: Array) {\n this.dispatcher.broadcast('updateLayers', {\n layers: this._serializeLayers(updatedIds),\n removedIds\n });\n }\n\n _resetUpdates() {\n this._changed = false;\n\n this._updatedLayers = {};\n this._removedLayers = {};\n\n this._updatedSources = {};\n this._updatedPaintProps = {};\n\n this._changedImages = {};\n }\n\n /**\n * Update this style's state to match the given style JSON, performing only\n * the necessary mutations.\n *\n * May throw an Error ('Unimplemented: METHOD') if the mapbox-gl-style-spec\n * diff algorithm produces an operation that is not supported.\n *\n * @returns {boolean} true if any changes were made; false otherwise\n * @private\n */\n setState(nextState: StyleSpecification): boolean {\n this._checkLoaded();\n\n if (emitValidationErrors(this, validateStyle(nextState))) return false;\n\n nextState = clone(nextState);\n nextState.layers = deref(nextState.layers);\n\n const changes = diffStyles(this.serialize(), nextState)\n .filter(op => !(op.command in ignoredDiffOperations));\n\n if (changes.length === 0) {\n return false;\n }\n\n const unimplementedOps = changes.filter(op => !(op.command in supportedDiffOperations));\n if (unimplementedOps.length > 0) {\n throw new Error(`Unimplemented: ${unimplementedOps.map(op => op.command).join(', ')}.`);\n }\n\n changes.forEach((op) => {\n if (op.command === 'setTransition' || op.command === 'setProjection') {\n // `transition` and `projection` are always read directly from\n // `this.stylesheet`, which we update below\n return;\n }\n (this: any)[op.command].apply(this, op.args);\n });\n\n this.stylesheet = nextState;\n this._updateMapProjection();\n\n return true;\n }\n\n addImage(id: string, image: StyleImage): this {\n if (this.getImage(id)) {\n return this.fire(new ErrorEvent(new Error('An image with this name already exists.')));\n }\n this.imageManager.addImage(id, image);\n this._afterImageUpdated(id);\n return this;\n }\n\n updateImage(id: string, image: StyleImage) {\n this.imageManager.updateImage(id, image);\n }\n\n getImage(id: string): ?StyleImage {\n return this.imageManager.getImage(id);\n }\n\n removeImage(id: string): this {\n if (!this.getImage(id)) {\n return this.fire(new ErrorEvent(new Error('No image with this name exists.')));\n }\n this.imageManager.removeImage(id);\n this._afterImageUpdated(id);\n return this;\n }\n\n _afterImageUpdated(id: string) {\n this._availableImages = this.imageManager.listImages();\n this._changedImages[id] = true;\n this._changed = true;\n this.dispatcher.broadcast('setImages', this._availableImages);\n this.fire(new Event('data', {dataType: 'style'}));\n }\n\n listImages(): Array {\n this._checkLoaded();\n return this._availableImages.slice();\n }\n\n addSource(id: string, source: SourceSpecification, options: StyleSetterOptions = {}): void {\n this._checkLoaded();\n\n if (this.getSource(id) !== undefined) {\n throw new Error('There is already a source with this ID');\n }\n\n if (!source.type) {\n throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(source).join(', ')}.`);\n }\n\n const builtIns = ['vector', 'raster', 'geojson', 'video', 'image'];\n const shouldValidate = builtIns.indexOf(source.type) >= 0;\n if (shouldValidate && this._validate(validateSource, `sources.${id}`, source, null, options)) return;\n\n if (this.map && this.map._collectResourceTiming) (source: any).collectResourceTiming = true;\n\n const sourceInstance = createSource(id, source, this.dispatcher, this);\n\n sourceInstance.setEventedParent(this, () => ({\n isSourceLoaded: this._isSourceCacheLoaded(id),\n source: sourceInstance.serialize(),\n sourceId: id\n }));\n\n const addSourceCache = (onlySymbols: boolean) => {\n const sourceCacheId = (onlySymbols ? 'symbol:' : 'other:') + id;\n const sourceCache = this._sourceCaches[sourceCacheId] = new SourceCache(sourceCacheId, sourceInstance, onlySymbols);\n (onlySymbols ? this._symbolSourceCaches : this._otherSourceCaches)[id] = sourceCache;\n sourceCache.style = this;\n\n sourceCache.onAdd(this.map);\n };\n\n addSourceCache(false);\n if (source.type === 'vector' || source.type === 'geojson') {\n addSourceCache(true);\n }\n\n if (sourceInstance.onAdd) sourceInstance.onAdd(this.map);\n\n this._changed = true;\n }\n\n /**\n * Remove a source from this stylesheet, given its ID.\n * @param {string} id ID of the source to remove.\n * @throws {Error} If no source is found with the given ID.\n * @returns {Map} The {@link Map} object.\n */\n removeSource(id: string): this {\n this._checkLoaded();\n\n const source = this.getSource(id);\n if (!source) {\n throw new Error('There is no source with this ID');\n }\n for (const layerId in this._layers) {\n if (this._layers[layerId].source === id) {\n return this.fire(new ErrorEvent(new Error(`Source \"${id}\" cannot be removed while layer \"${layerId}\" is using it.`)));\n }\n }\n if (this.terrain && this.terrain.get().source === id) {\n return this.fire(new ErrorEvent(new Error(`Source \"${id}\" cannot be removed while terrain is using it.`)));\n }\n\n const sourceCaches = this._getSourceCaches(id);\n for (const sourceCache of sourceCaches) {\n delete this._sourceCaches[sourceCache.id];\n delete this._updatedSources[sourceCache.id];\n sourceCache.fire(new Event('data', {sourceDataType: 'metadata', dataType:'source', sourceId: sourceCache.getSource().id}));\n sourceCache.setEventedParent(null);\n sourceCache.clearTiles();\n }\n delete this._otherSourceCaches[id];\n delete this._symbolSourceCaches[id];\n\n source.setEventedParent(null);\n if (source.onRemove) {\n source.onRemove(this.map);\n }\n this._changed = true;\n return this;\n }\n\n /**\n * Set the data of a GeoJSON source, given its ID.\n * @param {string} id ID of the source.\n * @param {GeoJSON|string} data GeoJSON source.\n */\n setGeoJSONSourceData(id: string, data: GeoJSON | string) {\n this._checkLoaded();\n\n assert(this.getSource(id) !== undefined, 'There is no source with this ID');\n const geojsonSource: GeoJSONSource = (this.getSource(id): any);\n assert(geojsonSource.type === 'geojson');\n\n geojsonSource.setData(data);\n this._changed = true;\n }\n\n /**\n * Get a source by ID.\n * @param {string} id ID of the desired source.\n * @returns {?Source} The source object.\n */\n getSource(id: string): ?Source {\n const sourceCache = this._getSourceCache(id);\n return sourceCache && sourceCache.getSource();\n }\n\n _getSources(): Source[] {\n const sources = [];\n for (const id in this._otherSourceCaches) {\n const sourceCache = this._getSourceCache(id);\n if (sourceCache) sources.push(sourceCache.getSource());\n }\n\n return sources;\n }\n\n /**\n * Add a layer to the map style. The layer will be inserted before the layer with\n * ID `before`, or appended if `before` is omitted.\n * @param {Object | CustomLayerInterface} layerObject The style layer to add.\n * @param {string} [before] ID of an existing layer to insert before.\n * @param {Object} options Style setter options.\n * @returns {Map} The {@link Map} object.\n */\n addLayer(layerObject: LayerSpecification | CustomLayerInterface, before?: string, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const id = layerObject.id;\n\n if (this.getLayer(id)) {\n this.fire(new ErrorEvent(new Error(`Layer with id \"${id}\" already exists on this map`)));\n return;\n }\n\n let layer;\n if (layerObject.type === 'custom') {\n\n if (emitValidationErrors(this, validateCustomStyleLayer(layerObject))) return;\n\n layer = createStyleLayer(layerObject);\n\n } else {\n if (typeof layerObject.source === 'object') {\n this.addSource(id, layerObject.source);\n layerObject = clone(layerObject);\n layerObject = (extend(layerObject, {source: id}): any);\n }\n\n // this layer is not in the style.layers array, so we pass an impossible array index\n if (this._validate(validateLayer,\n `layers.${id}`, layerObject, {arrayIndex: -1}, options)) return;\n\n layer = createStyleLayer(layerObject);\n this._validateLayer(layer);\n\n layer.setEventedParent(this, {layer: {id}});\n this._serializedLayers[layer.id] = layer.serialize();\n this._updateLayerCount(layer, true);\n }\n\n const index = before ? this._order.indexOf(before) : this._order.length;\n if (before && index === -1) {\n this.fire(new ErrorEvent(new Error(`Layer with id \"${before}\" does not exist on this map.`)));\n return;\n }\n\n this._order.splice(index, 0, id);\n this._layerOrderChanged = true;\n\n this._layers[id] = layer;\n\n const sourceCache = this._getLayerSourceCache(layer);\n if (this._removedLayers[id] && layer.source && sourceCache && layer.type !== 'custom') {\n // If, in the current batch, we have already removed this layer\n // and we are now re-adding it with a different `type`, then we\n // need to clear (rather than just reload) the underyling source's\n // tiles. Otherwise, tiles marked 'reloading' will have buckets /\n // buffers that are set up for the _previous_ version of this\n // layer, causing, e.g.:\n // https://github.com/mapbox/mapbox-gl-js/issues/3633\n const removed = this._removedLayers[id];\n delete this._removedLayers[id];\n if (removed.type !== layer.type) {\n this._updatedSources[layer.source] = 'clear';\n } else {\n this._updatedSources[layer.source] = 'reload';\n sourceCache.pause();\n }\n }\n this._updateLayer(layer);\n\n // $FlowFixMe[method-unbinding]\n if (layer.onAdd) {\n layer.onAdd(this.map);\n }\n\n this._updateDrapeFirstLayers();\n }\n\n /**\n * Moves a layer to a different z-position. The layer will be inserted before the layer with\n * ID `before`, or appended if `before` is omitted.\n * @param {string} id ID of the layer to move.\n * @param {string} [before] ID of an existing layer to insert before.\n */\n moveLayer(id: string, before?: string) {\n this._checkLoaded();\n this._changed = true;\n\n const layer = this._layers[id];\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${id}' does not exist in the map's style and cannot be moved.`)));\n return;\n }\n\n if (id === before) {\n return;\n }\n\n const index = this._order.indexOf(id);\n this._order.splice(index, 1);\n\n const newIndex = before ? this._order.indexOf(before) : this._order.length;\n if (before && newIndex === -1) {\n this.fire(new ErrorEvent(new Error(`Layer with id \"${before}\" does not exist on this map.`)));\n return;\n }\n this._order.splice(newIndex, 0, id);\n\n this._layerOrderChanged = true;\n\n this._updateDrapeFirstLayers();\n }\n\n /**\n * Remove the layer with the given id from the style.\n *\n * If no such layer exists, an `error` event is fired.\n *\n * @param {string} id ID of the layer to remove.\n * @fires Map.event:error\n */\n removeLayer(id: string) {\n this._checkLoaded();\n\n const layer = this._layers[id];\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${id}' does not exist in the map's style and cannot be removed.`)));\n return;\n }\n\n layer.setEventedParent(null);\n\n this._updateLayerCount(layer, false);\n\n const index = this._order.indexOf(id);\n this._order.splice(index, 1);\n\n this._layerOrderChanged = true;\n this._changed = true;\n this._removedLayers[id] = layer;\n delete this._layers[id];\n delete this._serializedLayers[id];\n delete this._updatedLayers[id];\n delete this._updatedPaintProps[id];\n\n if (layer.onRemove) {\n layer.onRemove(this.map);\n }\n\n this._updateDrapeFirstLayers();\n }\n\n /**\n * Return the style layer object with the given `id`.\n *\n * @param {string} id ID of the desired layer.\n * @returns {?StyleLayer} A layer, if one with the given `id` exists.\n */\n getLayer(id: string): ?StyleLayer {\n return this._layers[id];\n }\n\n /**\n * Checks if a specific layer is present within the style.\n *\n * @param {string} id ID of the desired layer.\n * @returns {boolean} A boolean specifying if the given layer is present.\n */\n hasLayer(id: string): boolean {\n return id in this._layers;\n }\n\n /**\n * Checks if a specific layer type is present within the style.\n *\n * @param {string} type Type of the desired layer.\n * @returns {boolean} A boolean specifying if the given layer type is present.\n */\n hasLayerType(type: string): boolean {\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.type === type) {\n return true;\n }\n }\n return false;\n }\n\n setLayerZoomRange(layerId: string, minzoom: ?number, maxzoom: ?number) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot have zoom extent.`)));\n return;\n }\n\n if (layer.minzoom === minzoom && layer.maxzoom === maxzoom) return;\n\n if (minzoom != null) {\n layer.minzoom = minzoom;\n }\n if (maxzoom != null) {\n layer.maxzoom = maxzoom;\n }\n this._updateLayer(layer);\n }\n\n setFilter(layerId: string, filter: ?FilterSpecification, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be filtered.`)));\n return;\n }\n\n if (deepEqual(layer.filter, filter)) {\n return;\n }\n\n if (filter === null || filter === undefined) {\n layer.filter = undefined;\n this._updateLayer(layer);\n return;\n }\n\n if (this._validate(validateFilter, `layers.${layer.id}.filter`, filter, {layerType: layer.type}, options)) {\n return;\n }\n\n layer.filter = clone(filter);\n this._updateLayer(layer);\n }\n\n /**\n * Get a layer's filter object.\n * @param {string} layerId The layer to inspect.\n * @returns {*} The layer's filter, if any.\n */\n getFilter(layerId: string): ?FilterSpecification {\n const layer = this.getLayer(layerId);\n return layer && clone(layer.filter);\n }\n\n setLayoutProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be styled.`)));\n return;\n }\n\n if (deepEqual(layer.getLayoutProperty(name), value)) return;\n\n layer.setLayoutProperty(name, value, options);\n this._updateLayer(layer);\n }\n\n /**\n * Get a layout property's value from a given layer.\n * @param {string} layerId The layer to inspect.\n * @param {string} name The name of the layout property.\n * @returns {*} The property value.\n */\n getLayoutProperty(layerId: string, name: string): ?PropertyValueSpecification {\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style.`)));\n return;\n }\n\n return layer.getLayoutProperty(name);\n }\n\n setPaintProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be styled.`)));\n return;\n }\n\n if (deepEqual(layer.getPaintProperty(name), value)) return;\n\n const requiresRelayout = layer.setPaintProperty(name, value, options);\n if (requiresRelayout) {\n this._updateLayer(layer);\n }\n\n this._changed = true;\n this._updatedPaintProps[layerId] = true;\n }\n\n getPaintProperty(layerId: string, name: string): void | TransitionSpecification | PropertyValueSpecification {\n const layer = this.getLayer(layerId);\n return layer && layer.getPaintProperty(name);\n }\n\n setFeatureState(target: { source: string; sourceLayer?: string; id: string | number; }, state: Object) {\n this._checkLoaded();\n const sourceId = target.source;\n const sourceLayer = target.sourceLayer;\n const source = this.getSource(sourceId);\n\n if (!source) {\n this.fire(new ErrorEvent(new Error(`The source '${sourceId}' does not exist in the map's style.`)));\n return;\n }\n const sourceType = source.type;\n if (sourceType === 'geojson' && sourceLayer) {\n this.fire(new ErrorEvent(new Error(`GeoJSON sources cannot have a sourceLayer parameter.`)));\n return;\n }\n if (sourceType === 'vector' && !sourceLayer) {\n this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`)));\n return;\n }\n if (target.id === undefined) {\n this.fire(new ErrorEvent(new Error(`The feature id parameter must be provided.`)));\n }\n\n const sourceCaches = this._getSourceCaches(sourceId);\n for (const sourceCache of sourceCaches) {\n sourceCache.setFeatureState(sourceLayer, target.id, state);\n }\n }\n\n removeFeatureState(target: { source: string; sourceLayer?: string; id?: string | number; }, key?: string) {\n this._checkLoaded();\n const sourceId = target.source;\n const source = this.getSource(sourceId);\n\n if (!source) {\n this.fire(new ErrorEvent(new Error(`The source '${sourceId}' does not exist in the map's style.`)));\n return;\n }\n\n const sourceType = source.type;\n const sourceLayer = sourceType === 'vector' ? target.sourceLayer : undefined;\n\n if (sourceType === 'vector' && !sourceLayer) {\n this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`)));\n return;\n }\n\n if (key && (typeof target.id !== 'string' && typeof target.id !== 'number')) {\n this.fire(new ErrorEvent(new Error(`A feature id is required to remove its specific state property.`)));\n return;\n }\n\n const sourceCaches = this._getSourceCaches(sourceId);\n for (const sourceCache of sourceCaches) {\n sourceCache.removeFeatureState(sourceLayer, target.id, key);\n }\n }\n\n getFeatureState(target: { source: string; sourceLayer?: string; id: string | number; }): ?FeatureStates {\n this._checkLoaded();\n const sourceId = target.source;\n const sourceLayer = target.sourceLayer;\n const source = this.getSource(sourceId);\n\n if (!source) {\n this.fire(new ErrorEvent(new Error(`The source '${sourceId}' does not exist in the map's style.`)));\n return;\n }\n const sourceType = source.type;\n if (sourceType === 'vector' && !sourceLayer) {\n this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`)));\n return;\n }\n if (target.id === undefined) {\n this.fire(new ErrorEvent(new Error(`The feature id parameter must be provided.`)));\n }\n\n const sourceCaches = this._getSourceCaches(sourceId);\n return sourceCaches[0].getFeatureState(sourceLayer, target.id);\n }\n\n getTransition(): TransitionSpecification {\n return extend({duration: 300, delay: 0}, this.stylesheet && this.stylesheet.transition);\n }\n\n serialize(): StyleSpecification {\n const sources = {};\n for (const cacheId in this._sourceCaches) {\n const source = this._sourceCaches[cacheId].getSource();\n if (!sources[source.id]) {\n sources[source.id] = source.serialize();\n }\n }\n\n return filterObject({\n version: this.stylesheet.version,\n name: this.stylesheet.name,\n metadata: this.stylesheet.metadata,\n light: this.stylesheet.light,\n terrain: this.getTerrain() || undefined,\n fog: this.stylesheet.fog,\n center: this.stylesheet.center,\n zoom: this.stylesheet.zoom,\n bearing: this.stylesheet.bearing,\n pitch: this.stylesheet.pitch,\n sprite: this.stylesheet.sprite,\n glyphs: this.stylesheet.glyphs,\n transition: this.stylesheet.transition,\n projection: this.stylesheet.projection,\n sources,\n layers: this._serializeLayers(this._order)\n }, (value) => { return value !== undefined; });\n }\n\n _updateLayer(layer: StyleLayer) {\n this._updatedLayers[layer.id] = true;\n const sourceCache = this._getLayerSourceCache(layer);\n if (layer.source && !this._updatedSources[layer.source] &&\n //Skip for raster layers (https://github.com/mapbox/mapbox-gl-js/issues/7865)\n sourceCache &&\n sourceCache.getSource().type !== 'raster') {\n this._updatedSources[layer.source] = 'reload';\n sourceCache.pause();\n }\n this._changed = true;\n layer.invalidateCompiledFilter();\n\n }\n\n _flattenAndSortRenderedFeatures(sourceResults: Array): Array {\n // Feature order is complicated.\n // The order between features in two 2D layers is always determined by layer order.\n // The order between features in two 3D layers is always determined by depth.\n // The order between a feature in a 2D layer and a 3D layer is tricky:\n // Most often layer order determines the feature order in this case. If\n // a line layer is above a extrusion layer the line feature will be rendered\n // above the extrusion. If the line layer is below the extrusion layer,\n // it will be rendered below it.\n //\n // There is a weird case though.\n // You have layers in this order: extrusion_layer_a, line_layer, extrusion_layer_b\n // Each layer has a feature that overlaps the other features.\n // The feature in extrusion_layer_a is closer than the feature in extrusion_layer_b so it is rendered above.\n // The feature in line_layer is rendered above extrusion_layer_a.\n // This means that that the line_layer feature is above the extrusion_layer_b feature despite\n // it being in an earlier layer.\n\n const isLayer3D = (layerId: string) => this._layers[layerId].type === 'fill-extrusion';\n\n const layerIndex = {};\n const features3D = [];\n for (let l = this._order.length - 1; l >= 0; l--) {\n const layerId = this._order[l];\n if (isLayer3D(layerId)) {\n layerIndex[layerId] = l;\n for (const sourceResult of sourceResults) {\n const layerFeatures = sourceResult[layerId];\n if (layerFeatures) {\n for (const featureWrapper of layerFeatures) {\n features3D.push(featureWrapper);\n }\n }\n }\n }\n }\n\n features3D.sort((a, b) => {\n return b.intersectionZ - a.intersectionZ;\n });\n\n const features = [];\n for (let l = this._order.length - 1; l >= 0; l--) {\n const layerId = this._order[l];\n\n if (isLayer3D(layerId)) {\n // add all 3D features that are in or above the current layer\n for (let i = features3D.length - 1; i >= 0; i--) {\n const topmost3D = features3D[i].feature;\n if (layerIndex[topmost3D.layer.id] < l) break;\n features.push(topmost3D);\n features3D.pop();\n }\n } else {\n for (const sourceResult of sourceResults) {\n const layerFeatures = sourceResult[layerId];\n if (layerFeatures) {\n for (const featureWrapper of layerFeatures) {\n features.push(featureWrapper.feature);\n }\n }\n }\n }\n }\n\n return features;\n }\n\n queryRenderedFeatures(queryGeometry: PointLike | [PointLike, PointLike], params: any, transform: Transform): Array {\n if (params && params.filter) {\n this._validate(validateFilter, 'queryRenderedFeatures.filter', params.filter, null, params);\n }\n\n const includedSources = {};\n if (params && params.layers) {\n if (!Array.isArray(params.layers)) {\n this.fire(new ErrorEvent(new Error('parameters.layers must be an Array.')));\n return [];\n }\n for (const layerId of params.layers) {\n const layer = this._layers[layerId];\n if (!layer) {\n // this layer is not in the style.layers array\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be queried for features.`)));\n return [];\n }\n includedSources[layer.source] = true;\n }\n }\n\n const sourceResults: Array = [];\n\n params.availableImages = this._availableImages;\n\n const has3DLayer = (params && params.layers) ?\n params.layers.some((layerId) => {\n const layer = this.getLayer(layerId);\n return layer && layer.is3D();\n }) :\n this.has3DLayers();\n const queryGeometryStruct = QueryGeometry.createFromScreenPoints(queryGeometry, transform);\n\n for (const id in this._sourceCaches) {\n const sourceId = this._sourceCaches[id].getSource().id;\n if (params.layers && !includedSources[sourceId]) continue;\n sourceResults.push(\n queryRenderedFeatures(\n this._sourceCaches[id],\n this._layers,\n this._serializedLayers,\n queryGeometryStruct,\n params,\n transform,\n has3DLayer,\n !!this.map._showQueryGeometry)\n );\n }\n\n if (this.placement) {\n // If a placement has run, query against its CollisionIndex\n // for symbol results, and treat it as an extra source to merge\n sourceResults.push(\n queryRenderedSymbols(\n this._layers,\n this._serializedLayers,\n // $FlowFixMe[method-unbinding]\n this._getLayerSourceCache.bind(this),\n queryGeometryStruct.screenGeometry,\n params,\n this.placement.collisionIndex,\n this.placement.retainedQueryData)\n );\n }\n\n return (this._flattenAndSortRenderedFeatures(sourceResults): any);\n }\n\n querySourceFeatures(sourceID: string, params: ?{sourceLayer: ?string, filter: ?Array, validate?: boolean}): Array {\n if (params && params.filter) {\n this._validate(validateFilter, 'querySourceFeatures.filter', params.filter, null, params);\n }\n const sourceCaches = this._getSourceCaches(sourceID);\n let results = [];\n for (const sourceCache of sourceCaches) {\n results = results.concat(querySourceFeatures(sourceCache, params));\n }\n return results;\n }\n\n addSourceType(name: string, SourceType: SourceClass, callback: Callback): void {\n if (Style.getSourceType(name)) {\n return callback(new Error(`A source type called \"${name}\" already exists.`));\n }\n\n Style.setSourceType(name, SourceType);\n\n if (!SourceType.workerSourceURL) {\n return callback(null, null);\n }\n\n this.dispatcher.broadcast('loadWorkerSource', {\n name,\n url: SourceType.workerSourceURL\n }, callback);\n }\n\n getLight(): LightSpecification {\n return this.light.getLight();\n }\n\n setLight(lightOptions: LightSpecification, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const light = this.light.getLight();\n let _update = false;\n for (const key in lightOptions) {\n if (!deepEqual(lightOptions[key], light[key])) {\n _update = true;\n break;\n }\n }\n if (!_update) return;\n\n const parameters = this._setTransitionParameters({duration: 300, delay: 0});\n\n this.light.setLight(lightOptions, options);\n this.light.updateTransitions(parameters);\n }\n\n getTerrain(): ?TerrainSpecification {\n return this.terrain && this.terrain.drapeRenderMode === DrapeRenderMode.elevated ? this.terrain.get() : null;\n }\n\n setTerrainForDraping() {\n const mockTerrainOptions = {source: '', exaggeration: 0};\n this.setTerrain(mockTerrainOptions, DrapeRenderMode.deferred);\n }\n\n // eslint-disable-next-line no-warning-comments\n // TODO: generic approach for root level property: light, terrain, skybox.\n // It is not done here to prevent rebasing issues.\n setTerrain(terrainOptions: ?TerrainSpecification, drapeRenderMode: number = DrapeRenderMode.elevated) {\n this._checkLoaded();\n\n // Disabling\n if (!terrainOptions) {\n delete this.terrain;\n delete this.stylesheet.terrain;\n this.dispatcher.broadcast('enableTerrain', false);\n this._force3DLayerUpdate();\n this._markersNeedUpdate = true;\n return;\n }\n\n let options: TerrainSpecification = terrainOptions;\n if (drapeRenderMode === DrapeRenderMode.elevated) {\n // Input validation and source object unrolling\n if (typeof options.source === 'object') {\n const id = 'terrain-dem-src';\n this.addSource(id, options.source);\n options = clone(options);\n options = extend(options, {source: id});\n }\n\n if (this._validate(validateTerrain, 'terrain', options)) {\n return;\n }\n }\n\n // Enabling\n if (!this.terrain || (this.terrain && drapeRenderMode !== this.terrain.drapeRenderMode)) {\n if (!options) return;\n this._createTerrain(options, drapeRenderMode);\n } else { // Updating\n const terrain = this.terrain;\n const currSpec = terrain.get();\n\n for (const name of Object.keys(styleSpec.terrain)) {\n // Fallback to use default style specification when the properties wasn't set\n if (!options.hasOwnProperty(name) && !!styleSpec.terrain[name].default) {\n // $FlowFixMe[prop-missing]\n options[name] = styleSpec.terrain[name].default;\n }\n }\n for (const key in options) {\n if (!deepEqual(options[key], currSpec[key])) {\n terrain.set(options);\n this.stylesheet.terrain = options;\n const parameters = this._setTransitionParameters({duration: 0});\n terrain.updateTransitions(parameters);\n break;\n }\n }\n }\n\n this._updateDrapeFirstLayers();\n this._markersNeedUpdate = true;\n }\n\n _createFog(fogOptions: FogSpecification) {\n const fog = this.fog = new Fog(fogOptions, this.map.transform);\n this.stylesheet.fog = fogOptions;\n const parameters = this._setTransitionParameters({duration: 0});\n fog.updateTransitions(parameters);\n }\n\n _updateMarkersOpacity() {\n if (this.map._markers.length === 0) {\n return;\n }\n this.map._requestDomTask(() => {\n for (const marker of this.map._markers) {\n marker._evaluateOpacity();\n }\n });\n }\n\n getFog(): ?FogSpecification {\n return this.fog ? this.fog.get() : null;\n }\n\n setFog(fogOptions: FogSpecification) {\n this._checkLoaded();\n\n if (!fogOptions) {\n // Remove fog\n delete this.fog;\n delete this.stylesheet.fog;\n this._markersNeedUpdate = true;\n return;\n }\n\n if (!this.fog) {\n // Initialize Fog\n this._createFog(fogOptions);\n } else {\n // Updating fog\n const fog = this.fog;\n const currSpec = fog.get();\n\n // empty object should pass through to set default values\n if (Object.keys(fogOptions).length === 0) fog.set(fogOptions);\n\n for (const key in fogOptions) {\n if (!deepEqual(fogOptions[key], currSpec[key])) {\n fog.set(fogOptions);\n this.stylesheet.fog = fogOptions;\n const parameters = this._setTransitionParameters({duration: 0});\n fog.updateTransitions(parameters);\n break;\n }\n }\n }\n\n this._markersNeedUpdate = true;\n }\n\n _setTransitionParameters(transitionOptions: Object): TransitionParameters {\n return {\n now: browser.now(),\n transition: extend(\n transitionOptions,\n this.stylesheet.transition)\n };\n }\n\n _updateDrapeFirstLayers() {\n if (!this.map._optimizeForTerrain || !this.terrain) {\n return;\n }\n\n const draped = this._order.filter((id) => {\n return this.isLayerDraped(this._layers[id]);\n });\n\n const nonDraped = this._order.filter((id) => {\n return !this.isLayerDraped(this._layers[id]);\n });\n this._drapedFirstOrder = [];\n this._drapedFirstOrder.push(...draped);\n this._drapedFirstOrder.push(...nonDraped);\n }\n\n _createTerrain(terrainOptions: TerrainSpecification, drapeRenderMode: number) {\n const terrain = this.terrain = new Terrain(terrainOptions, drapeRenderMode);\n this.stylesheet.terrain = terrainOptions;\n this.dispatcher.broadcast('enableTerrain', !this.terrainSetForDrapingOnly());\n this._force3DLayerUpdate();\n const parameters = this._setTransitionParameters({duration: 0});\n terrain.updateTransitions(parameters);\n }\n\n _force3DLayerUpdate() {\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.type === 'fill-extrusion') {\n this._updateLayer(layer);\n }\n }\n }\n\n _forceSymbolLayerUpdate() {\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.type === 'symbol') {\n this._updateLayer(layer);\n }\n }\n }\n\n _validate(validate: Validator, key: string, value: any, props: any, options: { validate?: boolean } = {}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n return emitValidationErrors(this, validate.call(validateStyle, extend({\n key,\n style: this.serialize(),\n value,\n styleSpec\n }, props)));\n }\n\n _remove() {\n if (this._request) {\n this._request.cancel();\n this._request = null;\n }\n if (this._spriteRequest) {\n this._spriteRequest.cancel();\n this._spriteRequest = null;\n }\n rtlTextPluginEvented.off('pluginStateChange', this._rtlTextPluginCallback);\n for (const layerId in this._layers) {\n const layer: StyleLayer = this._layers[layerId];\n layer.setEventedParent(null);\n }\n for (const id in this._sourceCaches) {\n this._sourceCaches[id].clearTiles();\n this._sourceCaches[id].setEventedParent(null);\n }\n this.imageManager.setEventedParent(null);\n this.setEventedParent(null);\n this.dispatcher.remove();\n }\n\n _clearSource(id: string) {\n const sourceCaches = this._getSourceCaches(id);\n for (const sourceCache of sourceCaches) {\n sourceCache.clearTiles();\n }\n }\n\n _reloadSource(id: string) {\n const sourceCaches = this._getSourceCaches(id);\n for (const sourceCache of sourceCaches) {\n sourceCache.resume();\n sourceCache.reload();\n }\n }\n\n _reloadSources() {\n for (const source of this._getSources()) {\n if (source.reload) {\n source.reload();\n }\n }\n }\n\n _updateSources(transform: Transform) {\n for (const id in this._sourceCaches) {\n this._sourceCaches[id].update(transform);\n }\n }\n\n _generateCollisionBoxes() {\n for (const id in this._sourceCaches) {\n const sourceCache = this._sourceCaches[id];\n sourceCache.resume();\n sourceCache.reload();\n }\n }\n\n _updatePlacement(transform: Transform, showCollisionBoxes: boolean, fadeDuration: number, crossSourceCollisions: boolean, forceFullPlacement: boolean = false): boolean {\n let symbolBucketsChanged = false;\n let placementCommitted = false;\n\n const layerTiles = {};\n\n for (const layerID of this._order) {\n const styleLayer = this._layers[layerID];\n if (styleLayer.type !== 'symbol') continue;\n\n if (!layerTiles[styleLayer.source]) {\n const sourceCache = this._getLayerSourceCache(styleLayer);\n if (!sourceCache) continue;\n layerTiles[styleLayer.source] = sourceCache.getRenderableIds(true)\n .map((id) => sourceCache.getTileByID(id))\n .sort((a, b) => (b.tileID.overscaledZ - a.tileID.overscaledZ) || (a.tileID.isLessThan(b.tileID) ? -1 : 1));\n }\n\n const layerBucketsChanged = this.crossTileSymbolIndex.addLayer(styleLayer, layerTiles[styleLayer.source], transform.center.lng, transform.projection);\n symbolBucketsChanged = symbolBucketsChanged || layerBucketsChanged;\n }\n this.crossTileSymbolIndex.pruneUnusedLayers(this._order);\n\n // Anything that changes our \"in progress\" layer and tile indices requires us\n // to start over. When we start over, we do a full placement instead of incremental\n // to prevent starvation.\n // We need to restart placement to keep layer indices in sync.\n // Also force full placement when fadeDuration === 0 to ensure that newly loaded\n // tiles will fully display symbols in their first frame\n forceFullPlacement = forceFullPlacement || this._layerOrderChanged || fadeDuration === 0;\n\n if (this._layerOrderChanged) {\n this.fire(new Event('neworder'));\n }\n\n if (forceFullPlacement || !this.pauseablePlacement || (this.pauseablePlacement.isDone() && !this.placement.stillRecent(browser.now(), transform.zoom))) {\n const fogState = this.fog && transform.projection.supportsFog ? this.fog.state : null;\n this.pauseablePlacement = new PauseablePlacement(transform, this._order, forceFullPlacement, showCollisionBoxes, fadeDuration, crossSourceCollisions, this.placement, fogState);\n this._layerOrderChanged = false;\n }\n\n if (this.pauseablePlacement.isDone()) {\n // the last placement finished running, but the next one hasn’t\n // started yet because of the `stillRecent` check immediately\n // above, so mark it stale to ensure that we request another\n // render frame\n this.placement.setStale();\n } else {\n this.pauseablePlacement.continuePlacement(this._order, this._layers, layerTiles);\n\n if (this.pauseablePlacement.isDone()) {\n this.placement = this.pauseablePlacement.commit(browser.now());\n placementCommitted = true;\n }\n\n if (symbolBucketsChanged) {\n // since the placement gets split over multiple frames it is possible\n // these buckets were processed before they were changed and so the\n // placement is already stale while it is in progress\n this.pauseablePlacement.placement.setStale();\n }\n }\n\n if (placementCommitted || symbolBucketsChanged) {\n for (const layerID of this._order) {\n const styleLayer = this._layers[layerID];\n if (styleLayer.type !== 'symbol') continue;\n this.placement.updateLayerOpacities(styleLayer, layerTiles[styleLayer.source]);\n }\n }\n\n // needsRender is false when we have just finished a placement that didn't change the visibility of any symbols\n const needsRerender = !this.pauseablePlacement.isDone() || this.placement.hasTransitions(browser.now());\n return needsRerender;\n }\n\n _releaseSymbolFadeTiles() {\n for (const id in this._sourceCaches) {\n this._sourceCaches[id].releaseSymbolFadeTiles();\n }\n }\n\n // Callbacks from web workers\n\n getImages(mapId: string, params: {icons: Array, source: string, tileID: OverscaledTileID, type: string}, callback: Callback<{[_: string]: StyleImage}>) {\n\n this.imageManager.getImages(params.icons, callback);\n\n // Apply queued image changes before setting the tile's dependencies so that the tile\n // is not reloaded unecessarily. Without this forced update the reload could happen in cases\n // like this one:\n // - icons contains \"my-image\"\n // - imageManager.getImages(...) triggers `onstyleimagemissing`\n // - the user adds \"my-image\" within the callback\n // - addImage adds \"my-image\" to this._changedImages\n // - the next frame triggers a reload of this tile even though it already has the latest version\n this._updateTilesForChangedImages();\n\n const setDependencies = (sourceCache: SourceCache) => {\n if (sourceCache) {\n sourceCache.setDependencies(params.tileID.key, params.type, params.icons);\n }\n };\n setDependencies(this._otherSourceCaches[params.source]);\n setDependencies(this._symbolSourceCaches[params.source]);\n }\n\n getGlyphs(mapId: string, params: {stacks: {[_: string]: Array}}, callback: Callback<{[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}}>) {\n this.glyphManager.getGlyphs(params.stacks, callback);\n }\n\n getResource(mapId: string, params: RequestParameters, callback: ResponseCallback): Cancelable {\n return makeRequest(params, callback);\n }\n\n _getSourceCache(source: string): SourceCache | void {\n return this._otherSourceCaches[source];\n }\n\n _getLayerSourceCache(layer: StyleLayer): SourceCache | void {\n return layer.type === 'symbol' ?\n this._symbolSourceCaches[layer.source] :\n this._otherSourceCaches[layer.source];\n }\n\n _getSourceCaches(source: string): Array {\n const sourceCaches = [];\n if (this._otherSourceCaches[source]) {\n sourceCaches.push(this._otherSourceCaches[source]);\n }\n if (this._symbolSourceCaches[source]) {\n sourceCaches.push(this._symbolSourceCaches[source]);\n }\n return sourceCaches;\n }\n\n _isSourceCacheLoaded(source: string): boolean {\n const sourceCaches = this._getSourceCaches(source);\n if (sourceCaches.length === 0) {\n this.fire(new ErrorEvent(new Error(`There is no source with ID '${source}'`)));\n return false;\n }\n return sourceCaches.every(sc => sc.loaded());\n }\n\n has3DLayers(): boolean {\n return this._num3DLayers > 0;\n }\n\n hasSymbolLayers(): boolean {\n return this._numSymbolLayers > 0;\n }\n\n hasCircleLayers(): boolean {\n return this._numCircleLayers > 0;\n }\n\n _clearWorkerCaches() {\n this.dispatcher.broadcast('clearCaches');\n }\n\n destroy() {\n this._clearWorkerCaches();\n if (this.terrainSetForDrapingOnly()) {\n delete this.terrain;\n delete this.stylesheet.terrain;\n }\n }\n}\n\nStyle.getSourceType = getSourceType;\nStyle.setSourceType = setSourceType;\nStyle.registerForPluginStateChange = registerForPluginStateChange;\n\nexport default Style;\n","// @flow\nimport type {StyleSpecification} from './types.js';\n\nexport default function emptyStyle(): StyleSpecification {\n return {\n version: 8,\n layers: [],\n sources: {}\n };\n}\n","// @flow\n\nimport {getJSON, getImage, ResourceType} from '../util/ajax.js';\n\nimport browser from '../util/browser.js';\nimport {RGBAImage} from '../util/image.js';\n\nimport type {StyleImage} from './style_image.js';\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\nexport default function(baseURL: string,\n requestManager: RequestManager,\n callback: Callback<{[_: string]: StyleImage}>): Cancelable {\n let json: any, image, error;\n const format = browser.devicePixelRatio > 1 ? '@2x' : '';\n\n let jsonRequest: ?Cancelable = getJSON(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.json'), ResourceType.SpriteJSON), (err: ?Error, data: ?Object) => {\n jsonRequest = null;\n if (!error) {\n error = err;\n json = data;\n maybeComplete();\n }\n });\n\n let imageRequest: ?Cancelable = getImage(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.png'), ResourceType.SpriteImage), (err, img) => {\n imageRequest = null;\n if (!error) {\n error = err;\n image = img;\n maybeComplete();\n }\n });\n\n function maybeComplete() {\n if (error) {\n callback(error);\n } else if (json && image) {\n const imageData = browser.getImageData(image);\n const result = {};\n\n for (const id in json) {\n const {width, height, x, y, sdf, pixelRatio, stretchX, stretchY, content} = json[id];\n const data = new RGBAImage({width, height});\n RGBAImage.copy(imageData, data, {x, y}, {x: 0, y: 0}, {width, height});\n result[id] = {data, pixelRatio, sdf, stretchX, stretchY, content};\n }\n\n callback(null, result);\n }\n }\n\n return {\n cancel() {\n if (jsonRequest) {\n jsonRequest.cancel();\n jsonRequest = null;\n }\n if (imageRequest) {\n imageRequest.cancel();\n imageRequest = null;\n }\n }\n };\n}\n","\n// Disable Flow annotations here because Flow doesn't support importing GLSL files\n/* eslint-disable flowtype/require-valid-file-annotation */\n\nimport preludeCommon from './_prelude.glsl';\nimport preludeFrag from './_prelude.fragment.glsl';\nimport preludeVert from './_prelude.vertex.glsl';\nimport backgroundFrag from './background.fragment.glsl';\nimport backgroundVert from './background.vertex.glsl';\nimport backgroundPatternFrag from './background_pattern.fragment.glsl';\nimport backgroundPatternVert from './background_pattern.vertex.glsl';\nimport circleFrag from './circle.fragment.glsl';\nimport circleVert from './circle.vertex.glsl';\nimport clippingMaskFrag from './clipping_mask.fragment.glsl';\nimport clippingMaskVert from './clipping_mask.vertex.glsl';\nimport heatmapFrag from './heatmap.fragment.glsl';\nimport heatmapVert from './heatmap.vertex.glsl';\nimport heatmapTextureFrag from './heatmap_texture.fragment.glsl';\nimport heatmapTextureVert from './heatmap_texture.vertex.glsl';\nimport collisionBoxFrag from './collision_box.fragment.glsl';\nimport collisionBoxVert from './collision_box.vertex.glsl';\nimport collisionCircleFrag from './collision_circle.fragment.glsl';\nimport collisionCircleVert from './collision_circle.vertex.glsl';\nimport debugFrag from './debug.fragment.glsl';\nimport debugVert from './debug.vertex.glsl';\nimport fillFrag from './fill.fragment.glsl';\nimport fillVert from './fill.vertex.glsl';\nimport fillOutlineFrag from './fill_outline.fragment.glsl';\nimport fillOutlineVert from './fill_outline.vertex.glsl';\nimport fillOutlinePatternFrag from './fill_outline_pattern.fragment.glsl';\nimport fillOutlinePatternVert from './fill_outline_pattern.vertex.glsl';\nimport fillPatternFrag from './fill_pattern.fragment.glsl';\nimport fillPatternVert from './fill_pattern.vertex.glsl';\nimport fillExtrusionFrag from './fill_extrusion.fragment.glsl';\nimport fillExtrusionVert from './fill_extrusion.vertex.glsl';\nimport fillExtrusionPatternFrag from './fill_extrusion_pattern.fragment.glsl';\nimport fillExtrusionPatternVert from './fill_extrusion_pattern.vertex.glsl';\nimport hillshadePrepareFrag from './hillshade_prepare.fragment.glsl';\nimport hillshadePrepareVert from './hillshade_prepare.vertex.glsl';\nimport hillshadeFrag from './hillshade.fragment.glsl';\nimport hillshadeVert from './hillshade.vertex.glsl';\nimport lineFrag from './line.fragment.glsl';\nimport lineVert from './line.vertex.glsl';\nimport linePatternFrag from './line_pattern.fragment.glsl';\nimport linePatternVert from './line_pattern.vertex.glsl';\nimport rasterFrag from './raster.fragment.glsl';\nimport rasterVert from './raster.vertex.glsl';\nimport symbolIconFrag from './symbol_icon.fragment.glsl';\nimport symbolIconVert from './symbol_icon.vertex.glsl';\nimport symbolSDFFrag from './symbol_sdf.fragment.glsl';\nimport symbolSDFVert from './symbol_sdf.vertex.glsl';\nimport symbolTextAndIconFrag from './symbol_text_and_icon.fragment.glsl';\nimport symbolTextAndIconVert from './symbol_text_and_icon.vertex.glsl';\nimport skyboxFrag from './skybox.fragment.glsl';\nimport skyboxGradientFrag from './skybox_gradient.fragment.glsl';\nimport skyboxVert from './skybox.vertex.glsl';\nimport terrainRasterFrag from './terrain_raster.fragment.glsl';\nimport terrainRasterVert from './terrain_raster.vertex.glsl';\nimport terrainDepthFrag from './terrain_depth.fragment.glsl';\nimport terrainDepthVert from './terrain_depth.vertex.glsl';\nimport preludeTerrainVert from './_prelude_terrain.vertex.glsl';\nimport preludeFogVert from './_prelude_fog.vertex.glsl';\nimport preludeFogFrag from './_prelude_fog.fragment.glsl';\nimport skyboxCaptureFrag from './skybox_capture.fragment.glsl';\nimport skyboxCaptureVert from './skybox_capture.vertex.glsl';\nimport globeFrag from './globe_raster.fragment.glsl';\nimport globeVert from './globe_raster.vertex.glsl';\nimport atmosphereFrag from './atmosphere.fragment.glsl';\nimport atmosphereVert from './atmosphere.vertex.glsl';\n\nexport let preludeTerrain = {};\nexport let preludeFog = {};\n\nconst commonDefines = [];\nparseUsedPreprocessorDefines(preludeCommon, commonDefines);\nparseUsedPreprocessorDefines(preludeTerrainVert, commonDefines);\nparseUsedPreprocessorDefines(preludeFogVert, commonDefines);\nparseUsedPreprocessorDefines(preludeFogFrag, commonDefines);\n\npreludeTerrain = compile('', preludeTerrainVert);\npreludeFog = compile(preludeFogFrag, preludeFogVert);\n// Shadow prelude is not compiled until GL-JS implements shadows\n\nexport const prelude = compile(preludeFrag, preludeVert);\nexport const preludeCommonSource = preludeCommon;\n\nexport const preludeVertPrecisionQualifiers = `\n#ifdef GL_ES\nprecision highp float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif`;\nexport const preludeFragPrecisionQualifiers = `\n#ifdef GL_ES\nprecision mediump float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif`;\n\nexport const standardDerivativesExt = '#extension GL_OES_standard_derivatives : enable\\n';\n\nexport default {\n background: compile(backgroundFrag, backgroundVert),\n backgroundPattern: compile(backgroundPatternFrag, backgroundPatternVert),\n circle: compile(circleFrag, circleVert),\n clippingMask: compile(clippingMaskFrag, clippingMaskVert),\n heatmap: compile(heatmapFrag, heatmapVert),\n heatmapTexture: compile(heatmapTextureFrag, heatmapTextureVert),\n collisionBox: compile(collisionBoxFrag, collisionBoxVert),\n collisionCircle: compile(collisionCircleFrag, collisionCircleVert),\n debug: compile(debugFrag, debugVert),\n fill: compile(fillFrag, fillVert),\n fillOutline: compile(fillOutlineFrag, fillOutlineVert),\n fillOutlinePattern: compile(fillOutlinePatternFrag, fillOutlinePatternVert),\n fillPattern: compile(fillPatternFrag, fillPatternVert),\n fillExtrusion: compile(fillExtrusionFrag, fillExtrusionVert),\n fillExtrusionPattern: compile(fillExtrusionPatternFrag, fillExtrusionPatternVert),\n hillshadePrepare: compile(hillshadePrepareFrag, hillshadePrepareVert),\n hillshade: compile(hillshadeFrag, hillshadeVert),\n line: compile(lineFrag, lineVert),\n linePattern: compile(linePatternFrag, linePatternVert),\n raster: compile(rasterFrag, rasterVert),\n symbolIcon: compile(symbolIconFrag, symbolIconVert),\n symbolSDF: compile(symbolSDFFrag, symbolSDFVert),\n symbolTextAndIcon: compile(symbolTextAndIconFrag, symbolTextAndIconVert),\n terrainRaster: compile(terrainRasterFrag, terrainRasterVert),\n terrainDepth: compile(terrainDepthFrag, terrainDepthVert),\n skybox: compile(skyboxFrag, skyboxVert),\n skyboxGradient: compile(skyboxGradientFrag, skyboxVert),\n skyboxCapture: compile(skyboxCaptureFrag, skyboxCaptureVert),\n globeRaster: compile(globeFrag, globeVert),\n globeAtmosphere: compile(atmosphereFrag, atmosphereVert)\n};\n\nexport function parseUsedPreprocessorDefines(source, defines) {\n const lines = source.replace(/\\s*\\/\\/[^\\n]*\\n/g, '\\n').split('\\n');\n for (let line of lines) {\n line = line.trim();\n if (line[0] === '#') {\n if (line.includes('if') && !line.includes('endif')) {\n line = line.replace('#', '')\n .replace(/ifdef|ifndef|elif|if/g, '')\n .replace(/!|defined|\\(|\\)|\\|\\||&&/g, '')\n .replace(/\\s+/g, ' ').trim();\n\n const newDefines = line.split(' ');\n for (const define of newDefines) {\n if (!defines.includes(define)) {\n defines.push(define);\n }\n }\n }\n }\n }\n}\n\n// Expand #pragmas to #ifdefs.\nexport function compile(fragmentSource, vertexSource) {\n const pragmaRegex = /#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g;\n const attributeRegex = /attribute (highp |mediump |lowp )?([\\w]+) ([\\w]+)/g;\n\n const staticAttributes = vertexSource.match(attributeRegex);\n const fragmentPragmas = {};\n\n const usedDefines = [...commonDefines];\n parseUsedPreprocessorDefines(fragmentSource, usedDefines);\n parseUsedPreprocessorDefines(vertexSource, usedDefines);\n\n fragmentSource = fragmentSource.replace(pragmaRegex, (match, operation, precision, type, name) => {\n fragmentPragmas[name] = true;\n if (operation === 'define') {\n return `\n#ifndef HAS_UNIFORM_u_${name}\nvarying ${precision} ${type} ${name};\n#else\nuniform ${precision} ${type} u_${name};\n#endif\n`;\n } else /* if (operation === 'initialize') */ {\n return `\n#ifdef HAS_UNIFORM_u_${name}\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n }\n });\n\n vertexSource = vertexSource.replace(pragmaRegex, (match, operation, precision, type, name) => {\n const attrType = type === 'float' ? 'vec2' : 'vec4';\n const unpackType = name.match(/color/) ? 'color' : attrType;\n\n if (fragmentPragmas[name]) {\n if (operation === 'define') {\n return `\n#ifndef HAS_UNIFORM_u_${name}\nuniform lowp float u_${name}_t;\nattribute ${precision} ${attrType} a_${name};\nvarying ${precision} ${type} ${name};\n#else\nuniform ${precision} ${type} u_${name};\n#endif\n`;\n } else /* if (operation === 'initialize') */ {\n if (unpackType === 'vec4') {\n // vec4 attributes are only used for cross-faded properties, and are not packed\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${name} = a_${name};\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n } else {\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n }\n }\n } else {\n if (operation === 'define') {\n return `\n#ifndef HAS_UNIFORM_u_${name}\nuniform lowp float u_${name}_t;\nattribute ${precision} ${attrType} a_${name};\n#else\nuniform ${precision} ${type} u_${name};\n#endif\n`;\n } else /* if (operation === 'initialize') */ {\n if (unpackType === 'vec4') {\n // vec4 attributes are only used for cross-faded properties, and are not packed\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${precision} ${type} ${name} = a_${name};\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n } else /* */{\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${precision} ${type} ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n }\n }\n }\n });\n\n return {fragmentSource, vertexSource, staticAttributes, usedDefines};\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport type Program from './program.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type Context from '../gl/context.js';\n\nclass VertexArrayObject {\n context: Context;\n boundProgram: ?Program<*>;\n boundLayoutVertexBuffer: ?VertexBuffer;\n boundPaintVertexBuffers: Array;\n boundIndexBuffer: ?IndexBuffer;\n boundVertexOffset: ?number;\n boundDynamicVertexBuffers: Array;\n vao: any;\n\n constructor() {\n this.boundProgram = null;\n this.boundLayoutVertexBuffer = null;\n this.boundPaintVertexBuffers = [];\n this.boundIndexBuffer = null;\n this.boundVertexOffset = null;\n this.boundDynamicVertexBuffers = [];\n this.vao = null;\n }\n\n bind(context: Context,\n program: Program<*>,\n layoutVertexBuffer: VertexBuffer,\n paintVertexBuffers: Array,\n indexBuffer: ?IndexBuffer,\n vertexOffset: ?number,\n dynamicVertexBuffers: Array) {\n\n this.context = context;\n\n let paintBuffersDiffer = this.boundPaintVertexBuffers.length !== paintVertexBuffers.length;\n for (let i = 0; !paintBuffersDiffer && i < paintVertexBuffers.length; i++) {\n if (this.boundPaintVertexBuffers[i] !== paintVertexBuffers[i]) {\n paintBuffersDiffer = true;\n }\n }\n let dynamicBuffersDiffer = this.boundDynamicVertexBuffers.length !== dynamicVertexBuffers.length;\n for (let i = 0; !dynamicBuffersDiffer && i < dynamicVertexBuffers.length; i++) {\n if (this.boundDynamicVertexBuffers[i] !== dynamicVertexBuffers[i]) {\n dynamicBuffersDiffer = true;\n }\n }\n\n const isFreshBindRequired = (\n !this.vao ||\n this.boundProgram !== program ||\n this.boundLayoutVertexBuffer !== layoutVertexBuffer ||\n paintBuffersDiffer ||\n dynamicBuffersDiffer ||\n this.boundIndexBuffer !== indexBuffer ||\n this.boundVertexOffset !== vertexOffset\n );\n\n if (!context.extVertexArrayObject || isFreshBindRequired) {\n this.freshBind(program, layoutVertexBuffer, paintVertexBuffers, indexBuffer, vertexOffset, dynamicVertexBuffers);\n } else {\n context.bindVertexArrayOES.set(this.vao);\n for (const dynamicBuffer of dynamicVertexBuffers) {\n if (dynamicBuffer) {\n dynamicBuffer.bind();\n }\n }\n if (indexBuffer && indexBuffer.dynamicDraw) {\n indexBuffer.bind();\n }\n }\n }\n\n freshBind(program: Program<*>,\n layoutVertexBuffer: VertexBuffer,\n paintVertexBuffers: Array,\n indexBuffer: ?IndexBuffer,\n vertexOffset: ?number,\n dynamicVertexBuffers: Array) {\n let numPrevAttributes;\n const numNextAttributes = program.numAttributes;\n\n const context = this.context;\n const gl = context.gl;\n\n if (context.extVertexArrayObject) {\n if (this.vao) this.destroy();\n this.vao = context.extVertexArrayObject.createVertexArrayOES();\n context.bindVertexArrayOES.set(this.vao);\n numPrevAttributes = 0;\n\n // store the arguments so that we can verify them when the vao is bound again\n this.boundProgram = program;\n this.boundLayoutVertexBuffer = layoutVertexBuffer;\n this.boundPaintVertexBuffers = paintVertexBuffers;\n this.boundIndexBuffer = indexBuffer;\n this.boundVertexOffset = vertexOffset;\n this.boundDynamicVertexBuffers = dynamicVertexBuffers;\n\n } else {\n numPrevAttributes = context.currentNumAttributes || 0;\n\n // Disable all attributes from the previous program that aren't used in\n // the new program. Note: attribute indices are *not* program specific!\n for (let i = numNextAttributes; i < numPrevAttributes; i++) {\n // WebGL breaks if you disable attribute 0.\n // http://stackoverflow.com/questions/20305231\n assert(i !== 0);\n gl.disableVertexAttribArray(i);\n }\n }\n\n layoutVertexBuffer.enableAttributes(gl, program);\n layoutVertexBuffer.bind();\n layoutVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n\n for (const vertexBuffer of paintVertexBuffers) {\n vertexBuffer.enableAttributes(gl, program);\n vertexBuffer.bind();\n vertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n }\n\n for (const dynamicBuffer of dynamicVertexBuffers) {\n if (dynamicBuffer) {\n dynamicBuffer.enableAttributes(gl, program);\n dynamicBuffer.bind();\n dynamicBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n }\n }\n\n if (indexBuffer) {\n indexBuffer.bind();\n }\n\n context.currentNumAttributes = numNextAttributes;\n }\n\n destroy() {\n if (this.vao) {\n this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao);\n this.vao = null;\n }\n }\n}\n\nexport default VertexArrayObject;\n","// @flow\n\nimport {mat4} from 'gl-matrix';\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n UniformColor,\n UniformMatrix4f,\n Uniform4f\n} from '../uniform_binding.js';\nimport EXTENT from '../../data/extent.js';\nimport MercatorCoordinate from '../../geo/mercator_coordinate.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Tile from '../../source/tile.js';\nimport type Painter from '../painter.js';\nimport type HillshadeStyleLayer from '../../style/style_layer/hillshade_style_layer.js';\nimport type DEMData from '../../data/dem_data.js';\nimport type {OverscaledTileID} from '../../source/tile_id.js';\n\nexport type HillshadeUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_image': Uniform1i,\n 'u_latrange': Uniform2f,\n 'u_light': Uniform2f,\n 'u_shadow': UniformColor,\n 'u_highlight': UniformColor,\n 'u_accent': UniformColor\n|};\n\nexport type HillshadePrepareUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_image': Uniform1i,\n 'u_dimension': Uniform2f,\n 'u_zoom': Uniform1f,\n 'u_unpack': Uniform4f\n|};\n\nconst hillshadeUniforms = (context: Context): HillshadeUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_image': new Uniform1i(context),\n 'u_latrange': new Uniform2f(context),\n 'u_light': new Uniform2f(context),\n 'u_shadow': new UniformColor(context),\n 'u_highlight': new UniformColor(context),\n 'u_accent': new UniformColor(context)\n});\n\nconst hillshadePrepareUniforms = (context: Context): HillshadePrepareUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_image': new Uniform1i(context),\n 'u_dimension': new Uniform2f(context),\n 'u_zoom': new Uniform1f(context),\n 'u_unpack': new Uniform4f(context)\n});\n\nconst hillshadeUniformValues = (\n painter: Painter,\n tile: Tile,\n layer: HillshadeStyleLayer,\n matrix: ?Float32Array\n): UniformValues => {\n const shadow = layer.paint.get(\"hillshade-shadow-color\");\n const highlight = layer.paint.get(\"hillshade-highlight-color\");\n const accent = layer.paint.get(\"hillshade-accent-color\");\n\n let azimuthal = layer.paint.get('hillshade-illumination-direction') * (Math.PI / 180);\n // modify azimuthal angle by map rotation if light is anchored at the viewport\n if (layer.paint.get('hillshade-illumination-anchor') === 'viewport') {\n azimuthal -= painter.transform.angle;\n }\n const align = !painter.options.moving;\n return {\n 'u_matrix': matrix ? matrix : painter.transform.calculateProjMatrix(tile.tileID.toUnwrapped(), align),\n 'u_image': 0,\n 'u_latrange': getTileLatRange(painter, tile.tileID),\n 'u_light': [layer.paint.get('hillshade-exaggeration'), azimuthal],\n 'u_shadow': shadow,\n 'u_highlight': highlight,\n 'u_accent': accent\n };\n};\n\nconst hillshadeUniformPrepareValues = (\n tileID: OverscaledTileID, dem: DEMData\n): UniformValues => {\n\n const stride = dem.stride;\n const matrix = mat4.create();\n // Flip rendering at y axis.\n mat4.ortho(matrix, 0, EXTENT, -EXTENT, 0, 0, 1);\n mat4.translate(matrix, matrix, [0, -EXTENT, 0]);\n\n return {\n 'u_matrix': matrix,\n 'u_image': 1,\n 'u_dimension': [stride, stride],\n 'u_zoom': tileID.overscaledZ,\n 'u_unpack': dem.unpackVector\n };\n};\n\nfunction getTileLatRange(painter: Painter, tileID: OverscaledTileID) {\n // for scaling the magnitude of a points slope by its latitude\n const tilesAtZoom = Math.pow(2, tileID.canonical.z);\n const y = tileID.canonical.y;\n return [\n new MercatorCoordinate(0, y / tilesAtZoom).toLngLat().lat,\n new MercatorCoordinate(0, (y + 1) / tilesAtZoom).toLngLat().lat];\n}\n\nexport {\n hillshadeUniforms,\n hillshadePrepareUniforms,\n hillshadeUniformValues,\n hillshadeUniformPrepareValues\n};\n","// @flow\n\nimport Texture from './texture.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n hillshadeUniformValues,\n hillshadeUniformPrepareValues\n} from './program/hillshade_program.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type Tile from '../source/tile.js';\nimport type HillshadeStyleLayer from '../style/style_layer/hillshade_style_layer.js';\nimport type ColorMode from '../gl/color_mode.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport assert from 'assert';\nimport DEMData from '../data/dem_data.js';\n\nexport default drawHillshade;\n\nfunction drawHillshade(painter: Painter, sourceCache: SourceCache, layer: HillshadeStyleLayer, tileIDs: Array) {\n if (painter.renderPass !== 'offscreen' && painter.renderPass !== 'translucent') return;\n\n const context = painter.context;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n const colorMode = painter.colorModeForRenderPass();\n\n // When rendering to texture, coordinates are already sorted: primary by\n // proxy id and secondary sort is by Z.\n const renderingToTexture = painter.terrain && painter.terrain.renderingToTexture;\n const [stencilModes, coords] = painter.renderPass === 'translucent' && !renderingToTexture ?\n painter.stencilConfigForOverlap(tileIDs) : [{}, tileIDs];\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n if (tile.needsHillshadePrepare && painter.renderPass === 'offscreen') {\n prepareHillshade(painter, tile, layer, depthMode, StencilMode.disabled, colorMode);\n } else if (painter.renderPass === 'translucent') {\n const stencilMode = renderingToTexture && painter.terrain ?\n painter.terrain.stencilModeForRTTOverlap(coord) : stencilModes[coord.overscaledZ];\n renderHillshade(painter, coord, tile, layer, depthMode, stencilMode, colorMode);\n }\n }\n\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n painter.resetStencilClippingMasks();\n}\n\nfunction renderHillshade(painter: Painter, coord: OverscaledTileID, tile: Tile, layer: HillshadeStyleLayer, depthMode: DepthMode, stencilMode: StencilMode, colorMode: ColorMode) {\n const context = painter.context;\n const gl = context.gl;\n const fbo = tile.fbo;\n if (!fbo) return;\n painter.prepareDrawTile();\n\n const program = painter.useProgram('hillshade');\n\n context.activeTexture.set(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n\n const uniformValues = hillshadeUniformValues(painter, tile, layer, painter.terrain ? coord.projMatrix : null);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n}\n\nexport function prepareDEMTexture(painter: Painter, tile: Tile, dem: DEMData) {\n if (!tile.needsDEMTextureUpload) return;\n\n const context = painter.context;\n const gl = context.gl;\n\n context.pixelStoreUnpackPremultiplyAlpha.set(false);\n const textureStride = dem.stride;\n tile.demTexture = tile.demTexture || painter.getTileTexture(textureStride);\n const pixelData = dem.getPixels();\n if (tile.demTexture) {\n tile.demTexture.update(pixelData, {premultiply: false});\n } else {\n tile.demTexture = new Texture(context, pixelData, gl.RGBA, {premultiply: false});\n }\n tile.needsDEMTextureUpload = false;\n}\n\n// hillshade rendering is done in two steps. the prepare step first calculates the slope of the terrain in the x and y\n// directions for each pixel, and saves those values to a framebuffer texture in the r and g channels.\nfunction prepareHillshade(painter: Painter, tile: Tile, layer: HillshadeStyleLayer, depthMode: DepthMode, stencilMode: StencilMode, colorMode: ColorMode) {\n const context = painter.context;\n const gl = context.gl;\n if (!tile.dem) return;\n const dem: DEMData = tile.dem;\n\n context.activeTexture.set(gl.TEXTURE1);\n prepareDEMTexture(painter, tile, dem);\n assert(tile.demTexture);\n if (!tile.demTexture) return; // Silence flow.\n tile.demTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n const tileSize = dem.dim;\n\n context.activeTexture.set(gl.TEXTURE0);\n let fbo = tile.fbo;\n if (!fbo) {\n const renderTexture = new Texture(context, {width: tileSize, height: tileSize, data: null}, gl.RGBA);\n renderTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n fbo = tile.fbo = context.createFramebuffer(tileSize, tileSize, true);\n fbo.colorAttachment.set(renderTexture.texture);\n }\n\n context.bindFramebuffer.set(fbo.framebuffer);\n context.viewport.set([0, 0, tileSize, tileSize]);\n\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getMercatorTileBoundsBuffers();\n\n painter.useProgram('hillshadePrepare').draw(context, gl.TRIANGLES,\n depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n hillshadeUniformPrepareValues(tile.tileID, dem),\n layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n\n tile.needsHillshadePrepare = false;\n}\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n UniformMatrix4f\n} from '../render/uniform_binding.js';\n\nimport type Context from '../gl/context.js';\nimport type {UniformValues} from '../render/uniform_binding.js';\n\nexport type TerrainRasterUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_image0': Uniform1i,\n 'u_skirt_height': Uniform1f\n|};\n\nconst terrainRasterUniforms = (context: Context): TerrainRasterUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_image0': new Uniform1i(context),\n 'u_skirt_height': new Uniform1f(context)\n});\n\nconst terrainRasterUniformValues = (\n matrix: Float32Array,\n skirtHeight: number\n): UniformValues => ({\n 'u_matrix': matrix,\n 'u_image0': 0,\n 'u_skirt_height': skirtHeight\n});\n\nexport {terrainRasterUniforms, terrainRasterUniformValues};\n","// @flow\n\nimport {\n Uniform1i,\n Uniform2f,\n Uniform3f,\n Uniform4f,\n UniformMatrix4f,\n Uniform1f,\n UniformMatrix3f\n} from '../render/uniform_binding.js';\nimport browser from '../util/browser.js';\n\nimport type Context from '../gl/context.js';\nimport type {UniformValues} from '../render/uniform_binding.js';\nimport type {Mat4} from 'gl-matrix';\n\nexport type GlobeRasterUniformsType = {|\n 'u_proj_matrix': UniformMatrix4f,\n 'u_globe_matrix': UniformMatrix4f,\n 'u_normalize_matrix': UniformMatrix4f,\n 'u_merc_matrix': UniformMatrix4f,\n 'u_zoom_transition': Uniform1f,\n 'u_merc_center': Uniform2f,\n 'u_image0': Uniform1i,\n 'u_grid_matrix': UniformMatrix3f,\n 'u_skirt_height': Uniform1f,\n 'u_frustum_tl': Uniform3f,\n 'u_frustum_tr': Uniform3f,\n 'u_frustum_br': Uniform3f,\n 'u_frustum_bl': Uniform3f,\n 'u_globe_pos': Uniform3f,\n 'u_globe_radius': Uniform1f,\n 'u_viewport': Uniform2f\n|};\n\nexport type AtmosphereUniformsType = {|\n 'u_frustum_tl': Uniform3f,\n 'u_frustum_tr': Uniform3f,\n 'u_frustum_br': Uniform3f,\n 'u_frustum_bl': Uniform3f,\n 'u_horizon': Uniform1f,\n 'u_transition': Uniform1f,\n 'u_fadeout_range': Uniform1f,\n 'u_color': Uniform4f,\n 'u_high_color': Uniform4f,\n 'u_space_color': Uniform4f,\n 'u_star_intensity': Uniform1f,\n 'u_star_size': Uniform1f,\n 'u_star_density': Uniform1f,\n 'u_temporal_offset': Uniform1f,\n 'u_horizon_angle': Uniform1f,\n 'u_rotation_matrix': UniformMatrix4f\n|};\n\nconst globeRasterUniforms = (context: Context): GlobeRasterUniformsType => ({\n 'u_proj_matrix': new UniformMatrix4f(context),\n 'u_globe_matrix': new UniformMatrix4f(context),\n 'u_normalize_matrix': new UniformMatrix4f(context),\n 'u_merc_matrix': new UniformMatrix4f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_image0': new Uniform1i(context),\n 'u_grid_matrix': new UniformMatrix3f(context),\n 'u_skirt_height': new Uniform1f(context),\n 'u_frustum_tl': new Uniform3f(context),\n 'u_frustum_tr': new Uniform3f(context),\n 'u_frustum_br': new Uniform3f(context),\n 'u_frustum_bl': new Uniform3f(context),\n 'u_globe_pos': new Uniform3f(context),\n 'u_globe_radius': new Uniform1f(context),\n 'u_viewport': new Uniform2f(context)\n});\n\nconst atmosphereUniforms = (context: Context): AtmosphereUniformsType => ({\n 'u_frustum_tl': new Uniform3f(context),\n 'u_frustum_tr': new Uniform3f(context),\n 'u_frustum_br': new Uniform3f(context),\n 'u_frustum_bl': new Uniform3f(context),\n 'u_horizon': new Uniform1f(context),\n 'u_transition': new Uniform1f(context),\n 'u_fadeout_range': new Uniform1f(context),\n 'u_color': new Uniform4f(context),\n 'u_high_color': new Uniform4f(context),\n 'u_space_color': new Uniform4f(context),\n 'u_star_intensity': new Uniform1f(context),\n 'u_star_density': new Uniform1f(context),\n 'u_star_size': new Uniform1f(context),\n 'u_temporal_offset': new Uniform1f(context),\n 'u_horizon_angle': new Uniform1f(context),\n 'u_rotation_matrix': new UniformMatrix4f(context)\n});\n\nconst globeRasterUniformValues = (\n projMatrix: Mat4,\n globeMatrix: Float32Array,\n globeMercatorMatrix: Float32Array,\n normalizeMatrix: Float64Array,\n zoomTransition: number,\n mercCenter: [number, number],\n frustumDirTl: [number, number, number],\n frustumDirTr: [number, number, number],\n frustumDirBr: [number, number, number],\n frustumDirBl: [number, number, number],\n globePosition: [number, number, number],\n globeRadius: number,\n viewport: [number, number],\n skirtHeight: number,\n gridMatrix: ?Mat4\n): UniformValues => ({\n 'u_proj_matrix': Float32Array.from(projMatrix),\n 'u_globe_matrix': globeMatrix,\n 'u_normalize_matrix': Float32Array.from(normalizeMatrix),\n 'u_merc_matrix': globeMercatorMatrix,\n 'u_zoom_transition': zoomTransition,\n 'u_merc_center': mercCenter,\n 'u_image0': 0,\n 'u_frustum_tl': frustumDirTl,\n 'u_frustum_tr': frustumDirTr,\n 'u_frustum_br': frustumDirBr,\n 'u_frustum_bl': frustumDirBl,\n 'u_globe_pos': globePosition,\n 'u_globe_radius': globeRadius,\n 'u_viewport': viewport,\n 'u_grid_matrix': gridMatrix ? Float32Array.from(gridMatrix) : new Float32Array(9),\n 'u_skirt_height': skirtHeight\n});\n\nconst atmosphereUniformValues = (\n frustumDirTl: [number, number, number],\n frustumDirTr: [number, number, number],\n frustumDirBr: [number, number, number],\n frustumDirBl: [number, number, number],\n horizon: number,\n transitionT: number,\n fadeoutRange: number,\n color: [number, number, number, number],\n highColor: [number, number, number, number],\n spaceColor: [number, number, number, number],\n starIntensity: number,\n temporalOffset: number,\n horizonAngle: number,\n rotationMatrix: Float32Array\n): UniformValues => ({\n 'u_frustum_tl': frustumDirTl,\n 'u_frustum_tr': frustumDirTr,\n 'u_frustum_br': frustumDirBr,\n 'u_frustum_bl': frustumDirBl,\n 'u_horizon': horizon,\n 'u_transition': transitionT,\n 'u_fadeout_range': fadeoutRange,\n 'u_color': color,\n 'u_high_color': highColor,\n 'u_space_color': spaceColor,\n 'u_star_intensity': starIntensity,\n 'u_star_size': 5.0 * browser.devicePixelRatio,\n 'u_star_density': 0.0,\n 'u_temporal_offset': temporalOffset,\n 'u_horizon_angle': horizonAngle,\n 'u_rotation_matrix': rotationMatrix\n});\n\nexport {globeRasterUniforms, globeRasterUniformValues, atmosphereUniforms, atmosphereUniformValues};\n\nexport type GlobeDefinesType = 'PROJECTION_GLOBE_VIEW' | 'GLOBE_POLES' | 'CUSTOM_ANTIALIASING';\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {terrainRasterUniformValues} from './terrain_raster_program.js';\nimport {globeRasterUniformValues} from './globe_raster_program.js';\nimport {Terrain} from './terrain.js';\nimport Tile from '../source/tile.js';\nimport assert from 'assert';\nimport {easeCubicInOut} from '../util/util.js';\nimport browser from '../util/browser.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\nimport type Painter from '../render/painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport {OverscaledTileID, CanonicalTileID} from '../source/tile_id.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport {mat4} from 'gl-matrix';\nimport {\n calculateGlobeMercatorMatrix,\n globeToMercatorTransition,\n globePoleMatrixForTile,\n getGridMatrix,\n tileCornersToBounds,\n globeNormalizeECEF,\n globeTileBounds,\n globeUseCustomAntiAliasing,\n getLatitudinalLod\n} from '../geo/projection/globe_util.js';\nimport extend from '../style-spec/util/extend.js';\nimport type Program from '../render/program.js';\nimport type VertexBuffer from \"../gl/vertex_buffer.js\";\n\nexport {\n drawTerrainRaster,\n drawTerrainDepth\n};\n\ntype DEMChain = {\n startTime: number,\n phase: number,\n duration: number, // Interpolation duration in milliseconds\n from: Tile,\n to: Tile,\n queued: ?Tile\n};\n\nclass VertexMorphing {\n operations: {[string | number]: DEMChain };\n\n constructor() {\n this.operations = {};\n }\n\n newMorphing(key: number, from: Tile, to: Tile, now: number, duration: number) {\n assert(from.demTexture && to.demTexture);\n assert(from.tileID.key !== to.tileID.key);\n\n if (key in this.operations) {\n const op = this.operations[key];\n assert(op.from && op.to);\n // Queue the target tile unless it's being morphed to already\n if (op.to.tileID.key !== to.tileID.key)\n op.queued = to;\n } else {\n this.operations[key] = {\n startTime: now,\n phase: 0.0,\n duration,\n from,\n to,\n queued: null\n };\n }\n }\n\n getMorphValuesForProxy(key: number): ?{from: Tile, to: Tile, phase: number} {\n if (!(key in this.operations))\n return null;\n\n const op = this.operations[key];\n const from = op.from;\n const to = op.to;\n assert(from && to);\n\n return {from, to, phase: op.phase};\n }\n\n update(now: number) {\n for (const key in this.operations) {\n const op = this.operations[key];\n assert(op.from && op.to);\n\n op.phase = (now - op.startTime) / op.duration;\n\n // Start the queued operation if the current one is finished or the data has expired\n while (op.phase >= 1.0 || !this._validOp(op)) {\n if (!this._nextOp(op, now)) {\n delete this.operations[key];\n break;\n }\n }\n }\n }\n\n _nextOp(op: DEMChain, now: number): boolean {\n if (!op.queued)\n return false;\n op.from = op.to;\n op.to = op.queued;\n op.queued = null;\n op.phase = 0.0;\n op.startTime = now;\n return true;\n }\n\n _validOp(op: DEMChain): boolean {\n return op.from.hasData() && op.to.hasData();\n }\n}\n\nfunction demTileChanged(prev: ?Tile, next: ?Tile): boolean {\n if (prev == null || next == null)\n return false;\n if (!prev.hasData() || !next.hasData())\n return false;\n if (prev.demTexture == null || next.demTexture == null)\n return false;\n return prev.tileID.key !== next.tileID.key;\n}\n\nconst vertexMorphing = new VertexMorphing();\nconst SHADER_DEFAULT = 0;\nconst SHADER_MORPHING = 1;\nconst SHADER_TERRAIN_WIREFRAME = 2;\nconst defaultDuration = 250;\n\nconst shaderDefines = {\n \"0\": null,\n \"1\": 'TERRAIN_VERTEX_MORPHING',\n \"2\": 'TERRAIN_WIREFRAME'\n};\n\nfunction drawTerrainForGlobe(painter: Painter, terrain: Terrain, sourceCache: SourceCache, tileIDs: Array, now: number) {\n const context = painter.context;\n const gl = context.gl;\n\n let program, programMode;\n const showWireframe = painter.options.showTerrainWireframe ? SHADER_TERRAIN_WIREFRAME : SHADER_DEFAULT;\n const tr = painter.transform;\n const useCustomAntialiasing = globeUseCustomAntiAliasing(painter, context, tr);\n\n const setShaderMode = (mode: number, isWireframe: boolean) => {\n if (programMode === mode) return;\n const defines = [shaderDefines[mode], 'PROJECTION_GLOBE_VIEW'];\n\n if (useCustomAntialiasing) defines.push('CUSTOM_ANTIALIASING');\n if (isWireframe) defines.push(shaderDefines[showWireframe]);\n\n program = painter.useProgram('globeRaster', null, defines);\n programMode = mode;\n };\n\n const colorMode = painter.colorModeForRenderPass();\n const depthMode = new DepthMode(gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n vertexMorphing.update(now);\n const globeMercatorMatrix = calculateGlobeMercatorMatrix(tr);\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n const batches = showWireframe ? [false, true] : [false];\n const sharedBuffers = painter.globeSharedBuffers;\n const viewport = [tr.width * browser.devicePixelRatio, tr.height * browser.devicePixelRatio];\n const globeMatrix = Float32Array.from(tr.globeMatrix);\n const elevationOptions = {useDenormalizedUpVectorScale: true};\n\n batches.forEach(isWireframe => {\n const tr = painter.transform;\n const skirtHeightValue = skirtHeight(tr.zoom) * terrain.exaggeration();\n\n // This code assumes the rendering is batched into mesh terrain and then wireframe\n // terrain (if applicable) so that this is enough to ensure the correct program is\n // set when we switch from one to the other.\n programMode = -1;\n\n const primitive = isWireframe ? gl.LINES : gl.TRIANGLES;\n\n for (const coord of tileIDs) {\n const tile = sourceCache.getTile(coord);\n const stencilMode = StencilMode.disabled;\n\n const prevDemTile = terrain.prevTerrainTileForTile[coord.key];\n const nextDemTile = terrain.terrainTileForTile[coord.key];\n\n if (demTileChanged(prevDemTile, nextDemTile)) {\n vertexMorphing.newMorphing(coord.key, prevDemTile, nextDemTile, now, defaultDuration);\n }\n\n // Bind the main draped texture\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n const morph = vertexMorphing.getMorphValuesForProxy(coord.key);\n const shaderMode = morph ? SHADER_MORPHING : SHADER_DEFAULT;\n\n if (morph) {\n extend(elevationOptions, {morphing: {srcDemTile: morph.from, dstDemTile: morph.to, phase: easeCubicInOut(morph.phase)}});\n }\n\n const tileBounds = tileCornersToBounds(coord.canonical);\n const latitudinalLod = getLatitudinalLod(tileBounds.getCenter().lat);\n const gridMatrix = getGridMatrix(coord.canonical, tileBounds, latitudinalLod, tr.worldSize / tr._pixelsPerMercatorPixel);\n const normalizeMatrix = globeNormalizeECEF(globeTileBounds(coord.canonical));\n const uniformValues = globeRasterUniformValues(\n tr.projMatrix, globeMatrix, globeMercatorMatrix, normalizeMatrix, globeToMercatorTransition(tr.zoom),\n mercatorCenter, tr.frustumCorners.TL, tr.frustumCorners.TR, tr.frustumCorners.BR,\n tr.frustumCorners.BL, tr.globeCenterInViewSpace, tr.globeRadius, viewport, skirtHeightValue, gridMatrix);\n\n setShaderMode(shaderMode, isWireframe);\n\n terrain.setupElevationDraw(tile, program, elevationOptions);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n if (sharedBuffers) {\n const [buffer, indexBuffer, segments] = isWireframe ?\n sharedBuffers.getWirefameBuffers(painter.context, latitudinalLod) :\n sharedBuffers.getGridBuffers(latitudinalLod, skirtHeightValue !== 0);\n\n program.draw(context, primitive, depthMode, stencilMode, colorMode, CullFaceMode.backCCW,\n uniformValues, \"globe_raster\", buffer, indexBuffer, segments);\n }\n }\n });\n\n // Render the poles.\n if (sharedBuffers) {\n const defines = ['GLOBE_POLES', 'PROJECTION_GLOBE_VIEW'];\n if (useCustomAntialiasing) defines.push('CUSTOM_ANTIALIASING');\n\n program = painter.useProgram('globeRaster', null, defines);\n for (const coord of tileIDs) {\n // Fill poles by extrapolating adjacent border tiles\n const {x, y, z} = coord.canonical;\n const topCap = y === 0;\n const bottomCap = y === (1 << z) - 1;\n\n const [northPoleBuffer, southPoleBuffer, indexBuffer, segment] = sharedBuffers.getPoleBuffers(z);\n\n if (segment && (topCap || bottomCap)) {\n const tile = sourceCache.getTile(coord);\n\n // Bind the main draped texture\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n let poleMatrix = globePoleMatrixForTile(z, x, tr);\n const normalizeMatrix = globeNormalizeECEF(globeTileBounds(coord.canonical));\n\n const drawPole = (program: Program, vertexBuffer: VertexBuffer) => program.draw(\n context, gl.TRIANGLES, depthMode, StencilMode.disabled, colorMode, CullFaceMode.disabled,\n globeRasterUniformValues(tr.projMatrix, poleMatrix, poleMatrix, normalizeMatrix, 0.0, mercatorCenter,\n tr.frustumCorners.TL, tr.frustumCorners.TR, tr.frustumCorners.BR, tr.frustumCorners.BL,\n tr.globeCenterInViewSpace, tr.globeRadius, viewport, 0), \"globe_pole_raster\", vertexBuffer,\n indexBuffer, segment);\n\n terrain.setupElevationDraw(tile, program, elevationOptions);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n if (topCap) {\n drawPole(program, northPoleBuffer);\n }\n if (bottomCap) {\n poleMatrix = mat4.scale(mat4.create(), poleMatrix, [1, -1, 1]);\n drawPole(program, southPoleBuffer);\n }\n }\n }\n }\n}\n\nfunction drawTerrainRaster(painter: Painter, terrain: Terrain, sourceCache: SourceCache, tileIDs: Array, now: number) {\n if (painter.transform.projection.name === 'globe') {\n drawTerrainForGlobe(painter, terrain, sourceCache, tileIDs, now);\n } else {\n const context = painter.context;\n const gl = context.gl;\n\n let program, programMode;\n const showWireframe = painter.options.showTerrainWireframe ? SHADER_TERRAIN_WIREFRAME : SHADER_DEFAULT;\n\n const setShaderMode = (mode: number, isWireframe: boolean) => {\n if (programMode === mode)\n return;\n const modes = [shaderDefines[mode]];\n if (isWireframe) modes.push(shaderDefines[showWireframe]);\n program = painter.useProgram('terrainRaster', null, modes);\n programMode = mode;\n };\n\n const colorMode = painter.colorModeForRenderPass();\n const depthMode = new DepthMode(gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n vertexMorphing.update(now);\n const tr = painter.transform;\n const skirt = skirtHeight(tr.zoom) * terrain.exaggeration();\n\n const batches = showWireframe ? [false, true] : [false];\n\n batches.forEach(isWireframe => {\n // This code assumes the rendering is batched into mesh terrain and then wireframe\n // terrain (if applicable) so that this is enough to ensure the correct program is\n // set when we switch from one to the other.\n programMode = -1;\n\n const primitive = isWireframe ? gl.LINES : gl.TRIANGLES;\n const [buffer, segments] = isWireframe ? terrain.getWirefameBuffer() : [terrain.gridIndexBuffer, terrain.gridSegments];\n\n for (const coord of tileIDs) {\n const tile = sourceCache.getTile(coord);\n const stencilMode = StencilMode.disabled;\n\n const prevDemTile = terrain.prevTerrainTileForTile[coord.key];\n const nextDemTile = terrain.terrainTileForTile[coord.key];\n\n if (demTileChanged(prevDemTile, nextDemTile)) {\n vertexMorphing.newMorphing(coord.key, prevDemTile, nextDemTile, now, defaultDuration);\n }\n\n // Bind the main draped texture\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);\n\n const morph = vertexMorphing.getMorphValuesForProxy(coord.key);\n const shaderMode = morph ? SHADER_MORPHING : SHADER_DEFAULT;\n let elevationOptions;\n\n if (morph) {\n elevationOptions = {morphing: {srcDemTile: morph.from, dstDemTile: morph.to, phase: easeCubicInOut(morph.phase)}};\n }\n\n const uniformValues = terrainRasterUniformValues(coord.projMatrix, isEdgeTile(coord.canonical, tr.renderWorldCopies) ? skirt / 10 : skirt);\n setShaderMode(shaderMode, isWireframe);\n\n terrain.setupElevationDraw(tile, program, elevationOptions);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n program.draw(context, primitive, depthMode, stencilMode, colorMode, CullFaceMode.backCCW,\n uniformValues, \"terrain_raster\", terrain.gridBuffer, buffer, segments);\n }\n });\n }\n}\n\nfunction drawTerrainDepth(painter: Painter, terrain: Terrain, sourceCache: SourceCache, tileIDs: Array) {\n if (painter.transform.projection.name === 'globe') {\n return;\n }\n\n assert(painter.renderPass === 'offscreen');\n\n const context = painter.context;\n const gl = context.gl;\n\n context.clear({depth: 1});\n const program = painter.useProgram('terrainDepth');\n const depthMode = new DepthMode(gl.LESS, DepthMode.ReadWrite, painter.depthRangeFor3D);\n\n for (const coord of tileIDs) {\n const tile = sourceCache.getTile(coord);\n const uniformValues = terrainRasterUniformValues(coord.projMatrix, 0);\n terrain.setupElevationDraw(tile, program);\n\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled, ColorMode.unblended, CullFaceMode.backCCW,\n uniformValues, \"terrain_depth\", terrain.gridBuffer, terrain.gridIndexBuffer, terrain.gridNoSkirtSegments);\n }\n}\n\nfunction skirtHeight(zoom: number) {\n // Skirt height calculation is heuristic: provided value hides\n // seams between tiles and it is not too large: 9 at zoom 22, ~20000m at zoom 0.\n return 6 * Math.pow(1.5, 22 - zoom);\n}\n\nfunction isEdgeTile(cid: CanonicalTileID, renderWorldCopies: boolean): boolean {\n const numTiles = 1 << cid.z;\n return (!renderWorldCopies && (cid.x === 0 || cid.x === numTiles - 1)) || cid.y === 0 || cid.y === numTiles - 1;\n}\n\nexport {\n VertexMorphing\n};\n","// @flow\n\nimport {UniformMatrix4f} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\n\nexport type ClippingMaskUniformsType = {|\n 'u_matrix': UniformMatrix4f\n|};\n\nconst clippingMaskUniforms = (context: Context): ClippingMaskUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context)\n});\n\nconst clippingMaskUniformValues = (matrix: Float32Array): UniformValues => ({\n 'u_matrix': matrix\n});\n\nexport {clippingMaskUniforms, clippingMaskUniformValues};\n","// @flow\n\nimport type SourceCache from '../source/source_cache.js';\nimport {clamp} from '../util/util.js';\nimport browser from '../util/browser.js';\nimport Tile from '../source/tile.js';\nimport type Transform from '../geo/transform.js';\n\nexport type RasterFade = {|\n opacity: number,\n mix: number,\n|};\n\nfunction rasterFade(tile: Tile, parentTile: ?Tile, sourceCache: SourceCache, transform: Transform, fadeDuration: number): RasterFade {\n if (fadeDuration > 0) {\n const now = browser.now();\n const sinceTile = (now - tile.timeAdded) / fadeDuration;\n const sinceParent = parentTile ? (now - parentTile.timeAdded) / fadeDuration : -1;\n\n const source = sourceCache.getSource();\n const idealZ = transform.coveringZoomLevel({\n tileSize: source.tileSize,\n roundZoom: source.roundZoom\n });\n\n // if no parent or parent is older, fade in; if parent is younger, fade out\n const fadeIn = !parentTile || Math.abs(parentTile.tileID.overscaledZ - idealZ) > Math.abs(tile.tileID.overscaledZ - idealZ);\n\n const childOpacity = (fadeIn && tile.refreshedUponExpiration) ? 1 : clamp(fadeIn ? sinceTile : 1 - sinceParent, 0, 1);\n\n // we don't crossfade tiles that were just refreshed upon expiring:\n // once they're old enough to pass the crossfading threshold\n // (fadeDuration), unset the `refreshedUponExpiration` flag so we don't\n // incorrectly fail to crossfade them when zooming\n if (tile.refreshedUponExpiration && sinceTile >= 1) tile.refreshedUponExpiration = false;\n\n if (parentTile) {\n return {\n opacity: 1,\n mix: 1 - childOpacity\n };\n } else {\n return {\n opacity: childOpacity,\n mix: 0\n };\n }\n } else {\n return {\n opacity: 1,\n mix: 0\n };\n }\n}\n\nexport default rasterFade;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport SourceCache from '../source/source_cache.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport Tile from '../source/tile.js';\nimport posAttributes from '../data/pos_attributes.js';\nimport {TriangleIndexArray, LineIndexArray, PosArray} from '../data/array_types.js';\nimport SegmentVector from '../data/segment.js';\nimport Texture from '../render/texture.js';\nimport Program from '../render/program.js';\nimport {Uniform1i, Uniform1f, Uniform2f, Uniform3f, Uniform4f, UniformMatrix4f} from '../render/uniform_binding.js';\nimport {prepareDEMTexture} from '../render/draw_hillshade.js';\nimport EXTENT from '../data/extent.js';\nimport {clamp, warnOnce} from '../util/util.js';\nimport assert from 'assert';\nimport {vec3, mat4, vec4} from 'gl-matrix';\nimport getWorkerPool from '../util/global_worker_pool.js';\nimport Dispatcher from '../util/dispatcher.js';\nimport GeoJSONSource from '../source/geojson_source.js';\nimport ImageSource from '../source/image_source.js';\nimport RasterDEMTileSource from '../source/raster_dem_tile_source.js';\nimport RasterTileSource from '../source/raster_tile_source.js';\nimport VectorTileSource from '../source/vector_tile_source.js';\nimport Color from '../style-spec/util/color.js';\nimport type {Callback} from '../types/callback.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport {DepthStencilAttachment} from '../gl/value.js';\nimport {drawTerrainRaster, drawTerrainDepth} from './draw_terrain_raster.js';\nimport type RasterStyleLayer from '../style/style_layer/raster_style_layer.js';\nimport type CustomStyleLayer from '../style/style_layer/custom_style_layer.js';\nimport type LineStyleLayer from '../style/style_layer/line_style_layer.js';\nimport {Elevation} from './elevation.js';\nimport Framebuffer from '../gl/framebuffer.js';\nimport ColorMode from '../gl/color_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {clippingMaskUniformValues} from '../render/program/clipping_mask_program.js';\nimport MercatorCoordinate, {mercatorZfromAltitude} from '../geo/mercator_coordinate.js';\nimport browser from '../util/browser.js';\nimport DEMData from '../data/dem_data.js';\nimport {DrapeRenderMode} from '../style/terrain.js';\nimport rasterFade from '../render/raster_fade.js';\nimport {create as createSource} from '../source/source.js';\nimport {RGBAImage} from '../util/image.js';\nimport {globeMetersToEcef} from '../geo/projection/globe_util.js';\nimport {ZoomDependentExpression} from '../style-spec/expression/index.js';\n\nimport type Map from '../ui/map.js';\nimport type Painter from '../render/painter.js';\nimport type Style from '../style/style.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type Context from '../gl/context.js';\nimport type {UniformValues} from '../render/uniform_binding.js';\nimport type Transform from '../geo/transform.js';\nimport type {DEMEncoding} from '../data/dem_data.js';\nimport type {Vec3, Vec4} from 'gl-matrix';\nimport type {CanonicalTileID} from '../source/tile_id.js';\n\nconst GRID_DIM = 128;\n\nconst FBO_POOL_SIZE = 5;\nconst RENDER_CACHE_MAX_SIZE = 50;\n\ntype RenderBatch = {\n start: number;\n end: number;\n}\n\nclass MockSourceCache extends SourceCache {\n constructor(map: Map) {\n const sourceSpec = {type: 'raster-dem', maxzoom: map.transform.maxZoom};\n const sourceDispatcher = new Dispatcher(getWorkerPool(), null);\n const source = createSource('mock-dem', sourceSpec, sourceDispatcher, map.style);\n\n super('mock-dem', source, false);\n\n source.setEventedParent(this);\n\n this._sourceLoaded = true;\n }\n\n _loadTile(tile: Tile, callback: Callback) {\n tile.state = 'loaded';\n callback(null);\n }\n}\n\n/**\n * Proxy source cache gets ideal screen tile cover coordinates. All the other\n * source caches's coordinates get mapped to subrects of proxy coordinates (or\n * vice versa, subrects of larger tiles from all source caches get mapped to\n * full proxy tile). This happens on every draw call in Terrain.updateTileBinding.\n * Approach is used here for terrain : all the visible source tiles of all the\n * source caches get rendered to proxy source cache textures and then draped over\n * terrain. It is in future reusable for handling overscalling as buckets could be\n * constructed only for proxy tile content, not for full overscalled vector tile.\n */\nclass ProxySourceCache extends SourceCache {\n renderCache: Array;\n renderCachePool: Array;\n proxyCachedFBO: {[string | number]: {[string | number]: number}};\n\n constructor(map: Map) {\n\n const source = createSource('proxy', {\n type: 'geojson',\n maxzoom: map.transform.maxZoom\n }, new Dispatcher(getWorkerPool(), null), map.style);\n\n super('proxy', source, false);\n\n source.setEventedParent(this);\n\n // This source is not to be added as a map source: we use it's tile management.\n // For that, initialize internal structures used for tile cover update.\n this.map = ((this.getSource(): any): GeoJSONSource).map = map;\n this.used = this._sourceLoaded = true;\n this.renderCache = [];\n this.renderCachePool = [];\n this.proxyCachedFBO = {};\n }\n\n // Override for transient nature of cover here: don't cache and retain.\n update(transform: Transform, tileSize?: number, updateForTerrain?: boolean) { // eslint-disable-line no-unused-vars\n if (transform.freezeTileCoverage) { return; }\n this.transform = transform;\n const idealTileIDs = transform.coveringTiles({\n tileSize: this._source.tileSize,\n minzoom: this._source.minzoom,\n maxzoom: this._source.maxzoom,\n roundZoom: this._source.roundZoom,\n reparseOverscaled: this._source.reparseOverscaled\n });\n\n const incoming: {[string]: string} = idealTileIDs.reduce((acc, tileID) => {\n acc[tileID.key] = '';\n if (!this._tiles[tileID.key]) {\n const tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor(), transform.tileZoom);\n tile.state = 'loaded';\n this._tiles[tileID.key] = tile;\n }\n return acc;\n }, {});\n\n for (const id in this._tiles) {\n if (!(id in incoming)) {\n this.freeFBO(id);\n this._tiles[id].unloadVectorData();\n delete this._tiles[id];\n }\n }\n }\n\n freeFBO(id: string) {\n const fbos = this.proxyCachedFBO[id];\n if (fbos !== undefined) {\n const fboIds = ((Object.values(fbos): any): Array);\n this.renderCachePool.push(...fboIds);\n delete this.proxyCachedFBO[id];\n }\n }\n\n deallocRenderCache() {\n this.renderCache.forEach(fbo => fbo.fb.destroy());\n this.renderCache = [];\n this.renderCachePool = [];\n this.proxyCachedFBO = {};\n }\n}\n\n/**\n * Canonical, wrap and overscaledZ contain information of original source cache tile.\n * This tile gets ortho-rendered to proxy tile (defined by proxyTileKey).\n * `posMatrix` holds orthographic, scaling and translation information that is used\n * for rendering original tile content to a proxy tile. Proxy tile covers whole\n * or sub-rectangle of the original tile.\n */\nclass ProxiedTileID extends OverscaledTileID {\n proxyTileKey: number;\n\n constructor(tileID: OverscaledTileID, proxyTileKey: number, projMatrix: Float32Array) {\n super(tileID.overscaledZ, tileID.wrap, tileID.canonical.z, tileID.canonical.x, tileID.canonical.y);\n this.proxyTileKey = proxyTileKey;\n this.projMatrix = projMatrix;\n }\n}\n\ntype OverlapStencilType = false | 'Clip' | 'Mask';\ntype FBO = {fb: Framebuffer, tex: Texture, dirty: boolean};\n\nexport class Terrain extends Elevation {\n terrainTileForTile: {[number | string]: Tile};\n prevTerrainTileForTile: {[number | string]: Tile};\n painter: Painter;\n sourceCache: SourceCache;\n gridBuffer: VertexBuffer;\n gridIndexBuffer: IndexBuffer;\n gridSegments: SegmentVector;\n gridNoSkirtSegments: SegmentVector;\n wireframeSegments: SegmentVector;\n wireframeIndexBuffer: IndexBuffer;\n proxiedCoords: {[string]: Array};\n proxyCoords: Array;\n proxyToSource: {[number]: {[string]: Array}};\n proxySourceCache: ProxySourceCache;\n renderingToTexture: boolean;\n _style: Style;\n _mockSourceCache: MockSourceCache;\n orthoMatrix: Float32Array;\n enabled: boolean;\n renderMode: number;\n\n _visibleDemTiles: Array;\n _sourceTilesOverlap: {[string]: boolean};\n _overlapStencilMode: StencilMode;\n _overlapStencilType: OverlapStencilType;\n _stencilRef: number;\n\n _exaggeration: number;\n _depthFBO: ?Framebuffer;\n _depthTexture: ?Texture;\n _previousZoom: number;\n _updateTimestamp: number;\n _useVertexMorphing: boolean;\n pool: Array;\n renderedToTile: boolean;\n _drapedRenderBatches: Array;\n _sharedDepthStencil: ?WebGLRenderbuffer;\n\n _findCoveringTileCache: {[string]: {[number]: ?number}};\n\n _tilesDirty: {[string]: {[number]: boolean}};\n _invalidateRenderCache: boolean;\n\n _emptyDepthBufferTexture: ?Texture;\n _emptyDEMTexture: ?Texture;\n _initializing: ?boolean;\n _emptyDEMTextureDirty: ?boolean;\n\n constructor(painter: Painter, style: Style) {\n super();\n this.painter = painter;\n this.terrainTileForTile = {};\n this.prevTerrainTileForTile = {};\n\n // Terrain rendering grid is 129x129 cell grid, made by 130x130 points.\n // 130 vertices map to 128 DEM data + 1px padding on both sides.\n // DEM texture is padded (1, 1, 1, 1) and padding pixels are backfilled\n // by neighboring tile edges. This way we achieve tile stitching as\n // edge vertices from neighboring tiles evaluate to the same 3D point.\n const [triangleGridArray, triangleGridIndices, skirtIndicesOffset] = createGrid(GRID_DIM + 1);\n const context = painter.context;\n this.gridBuffer = context.createVertexBuffer(triangleGridArray, posAttributes.members);\n this.gridIndexBuffer = context.createIndexBuffer(triangleGridIndices);\n this.gridSegments = SegmentVector.simpleSegment(0, 0, triangleGridArray.length, triangleGridIndices.length);\n this.gridNoSkirtSegments = SegmentVector.simpleSegment(0, 0, triangleGridArray.length, skirtIndicesOffset);\n this.proxyCoords = [];\n this.proxiedCoords = {};\n this._visibleDemTiles = [];\n this._drapedRenderBatches = [];\n this._sourceTilesOverlap = {};\n this.proxySourceCache = new ProxySourceCache(style.map);\n this.orthoMatrix = mat4.create();\n const epsilon = this.painter.transform.projection.name === 'globe' ? .015 : 0; // Experimentally the smallest value to avoid rendering artifacts (https://github.com/mapbox/mapbox-gl-js/issues/11975)\n mat4.ortho(this.orthoMatrix, epsilon, EXTENT, 0, EXTENT, 0, 1);\n const gl = context.gl;\n this._overlapStencilMode = new StencilMode({func: gl.GEQUAL, mask: 0xFF}, 0, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE);\n this._previousZoom = painter.transform.zoom;\n this.pool = [];\n this._findCoveringTileCache = {};\n this._tilesDirty = {};\n this.style = style;\n this._useVertexMorphing = true;\n this._exaggeration = 1;\n this._mockSourceCache = new MockSourceCache(style.map);\n }\n\n set style(style: Style) {\n // $FlowFixMe[method-unbinding]\n style.on('data', this._onStyleDataEvent.bind(this));\n // $FlowFixMe[method-unbinding]\n style.on('neworder', this._checkRenderCacheEfficiency.bind(this));\n this._style = style;\n this._checkRenderCacheEfficiency();\n this._style.map.on('moveend', () => {\n this._clearLineLayersFromRenderCache();\n });\n }\n\n /*\n * Validate terrain and update source cache used for elevation.\n * Explicitly pass transform to update elevation (Transform.updateElevation)\n * before using transform for source cache update.\n */\n update(style: Style, transform: Transform, adaptCameraAltitude: boolean) {\n if (style && style.terrain) {\n if (this._style !== style) {\n this.style = style;\n }\n this.enabled = true;\n const terrainProps = style.terrain.properties;\n const isDrapeModeDeferred = style.terrain.drapeRenderMode === DrapeRenderMode.deferred;\n this.sourceCache = isDrapeModeDeferred ? this._mockSourceCache :\n ((style._getSourceCache(terrainProps.get('source')): any): SourceCache);\n this._exaggeration = terrainProps.get('exaggeration');\n\n const updateSourceCache = () => {\n if (this.sourceCache.used) {\n warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\\n` +\n 'This leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.');\n }\n // Lower tile zoom is sufficient for terrain, given the size of terrain grid.\n const scaledDemTileSize = this.getScaledDemTileSize();\n // Dem tile needs to be parent or at least of the same zoom level as proxy tile.\n // Tile cover roundZoom behavior is set to the same as for proxy (false) in SourceCache.update().\n this.sourceCache.update(transform, scaledDemTileSize, true);\n // As a result of update, we get new set of tiles: reset lookup cache.\n this.resetTileLookupCache(this.sourceCache.id);\n };\n\n if (!this.sourceCache.usedForTerrain) {\n // Init cache entry.\n this.resetTileLookupCache(this.sourceCache.id);\n // When toggling terrain on/off load available terrain tiles from cache\n // before reading elevation at center.\n this.sourceCache.usedForTerrain = true;\n updateSourceCache();\n this._initializing = true;\n }\n\n updateSourceCache();\n // Camera gets constrained over terrain. Issue constrainCameraOverTerrain = true\n // here to cover potential under terrain situation on data, style, or other camera changes.\n transform.updateElevation(true, adaptCameraAltitude);\n\n // Reset tile lookup cache and update draped tiles coordinates.\n this.resetTileLookupCache(this.proxySourceCache.id);\n this.proxySourceCache.update(transform);\n\n this._emptyDEMTextureDirty = true;\n } else {\n this._disable();\n }\n }\n\n resetTileLookupCache(sourceCacheID: string) {\n this._findCoveringTileCache[sourceCacheID] = {};\n }\n\n getScaledDemTileSize(): number {\n const demScale = this.sourceCache.getSource().tileSize / GRID_DIM;\n const proxyTileSize = this.proxySourceCache.getSource().tileSize;\n return demScale * proxyTileSize;\n }\n\n _checkRenderCacheEfficiency() {\n const renderCacheInfo = this.renderCacheEfficiency(this._style);\n if (this._style.map._optimizeForTerrain) {\n assert(renderCacheInfo.efficiency === 100);\n } else if (renderCacheInfo.efficiency !== 100) {\n warnOnce(`Terrain render cache efficiency is not optimal (${renderCacheInfo.efficiency}%) and performance\n may be affected negatively, consider placing all background, fill and line layers before layer\n with id '${renderCacheInfo.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`);\n }\n }\n\n _onStyleDataEvent(event: any) {\n if (event.coord && event.dataType === 'source') {\n this._clearRenderCacheForTile(event.sourceCacheId, event.coord);\n } else if (event.dataType === 'style') {\n this._invalidateRenderCache = true;\n }\n }\n\n // Terrain\n _disable() {\n if (!this.enabled) return;\n this.enabled = false;\n this._sharedDepthStencil = undefined;\n this.proxySourceCache.deallocRenderCache();\n if (this._style) {\n for (const id in this._style._sourceCaches) {\n this._style._sourceCaches[id].usedForTerrain = false;\n }\n }\n }\n\n destroy() {\n this._disable();\n if (this._emptyDEMTexture) this._emptyDEMTexture.destroy();\n if (this._emptyDepthBufferTexture) this._emptyDepthBufferTexture.destroy();\n this.pool.forEach(fbo => fbo.fb.destroy());\n this.pool = [];\n if (this._depthFBO) {\n this._depthFBO.destroy();\n this._depthFBO = undefined;\n this._depthTexture = undefined;\n }\n }\n\n // Implements Elevation::_source.\n _source(): ?SourceCache {\n return this.enabled ? this.sourceCache : null;\n }\n\n isUsingMockSource(): boolean {\n return this.sourceCache === this._mockSourceCache;\n }\n\n // Implements Elevation::exaggeration.\n exaggeration(): number {\n return this._exaggeration;\n }\n\n get visibleDemTiles(): Array {\n return this._visibleDemTiles;\n }\n\n get drapeBufferSize(): [number, number] {\n const extent = this.proxySourceCache.getSource().tileSize * 2; // *2 is to avoid upscaling bitmap on zoom.\n return [extent, extent];\n }\n\n set useVertexMorphing(enable: boolean) {\n this._useVertexMorphing = enable;\n }\n\n // For every renderable coordinate in every source cache, assign one proxy\n // tile (see _setupProxiedCoordsForOrtho). Mapping of source tile to proxy\n // tile is modeled by ProxiedTileID. In general case, source and proxy tile\n // are of different zoom: ProxiedTileID.projMatrix models ortho, scale and\n // translate from source to proxy. This matrix is used when rendering source\n // tile to proxy tile's texture.\n // One proxy tile can have multiple source tiles, or pieces of source tiles,\n // that get rendered to it.\n // For each proxy tile we assign one terrain tile (_assignTerrainTiles). The\n // terrain tile provides elevation data when rendering (draping) proxy tile\n // texture over terrain grid.\n updateTileBinding(sourcesCoords: {[string]: Array}) {\n if (!this.enabled) return;\n this.prevTerrainTileForTile = this.terrainTileForTile;\n\n const psc = this.proxySourceCache;\n const tr = this.painter.transform;\n if (this._initializing) {\n // Don't activate terrain until center tile gets loaded.\n this._initializing = tr._centerAltitude === 0 && this.getAtPointOrZero(MercatorCoordinate.fromLngLat(tr.center), -1) === -1;\n this._emptyDEMTextureDirty = !this._initializing;\n }\n\n const coords = this.proxyCoords = psc.getIds().map((id) => {\n const tileID = psc.getTileByID(id).tileID;\n tileID.projMatrix = tr.calculateProjMatrix(tileID.toUnwrapped());\n return tileID;\n });\n sortByDistanceToCamera(coords, this.painter);\n this._previousZoom = tr.zoom;\n\n const previousProxyToSource = this.proxyToSource || {};\n this.proxyToSource = {};\n coords.forEach((tileID) => {\n this.proxyToSource[tileID.key] = {};\n });\n\n this.terrainTileForTile = {};\n const sourceCaches = this._style._sourceCaches;\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n if (!sourceCache.used) continue;\n if (sourceCache !== this.sourceCache) this.resetTileLookupCache(sourceCache.id);\n this._setupProxiedCoordsForOrtho(sourceCache, sourcesCoords[id], previousProxyToSource);\n if (sourceCache.usedForTerrain) continue;\n const coordinates = sourcesCoords[id];\n if (sourceCache.getSource().reparseOverscaled) {\n // Do this for layers that are not rasterized to proxy tile.\n this._assignTerrainTiles(coordinates);\n }\n }\n\n // Background has no source. Using proxy coords with 1-1 ortho (this.proxiedCoords[psc.id])\n // when rendering background to proxy tiles.\n this.proxiedCoords[psc.id] = coords.map(tileID => new ProxiedTileID(tileID, tileID.key, this.orthoMatrix));\n this._assignTerrainTiles(coords);\n this._prepareDEMTextures();\n this._setupDrapedRenderBatches();\n this._initFBOPool();\n this._setupRenderCache(previousProxyToSource);\n\n this.renderingToTexture = false;\n this._updateTimestamp = browser.now();\n\n // Gather all dem tiles that are assigned to proxy tiles\n const visibleKeys = {};\n this._visibleDemTiles = [];\n\n for (const id of this.proxyCoords) {\n const demTile = this.terrainTileForTile[id.key];\n if (!demTile)\n continue;\n const key = demTile.tileID.key;\n if (key in visibleKeys)\n continue;\n this._visibleDemTiles.push(demTile);\n visibleKeys[key] = key;\n }\n\n }\n\n _assignTerrainTiles(coords: Array) {\n if (this._initializing) return;\n coords.forEach((tileID) => {\n if (this.terrainTileForTile[tileID.key]) return;\n const demTile = this._findTileCoveringTileID(tileID, this.sourceCache);\n if (demTile) this.terrainTileForTile[tileID.key] = demTile;\n });\n }\n\n _prepareDEMTextures() {\n const context = this.painter.context;\n const gl = context.gl;\n for (const key in this.terrainTileForTile) {\n const tile = this.terrainTileForTile[key];\n const dem = tile.dem;\n if (dem && (!tile.demTexture || tile.needsDEMTextureUpload)) {\n context.activeTexture.set(gl.TEXTURE1);\n prepareDEMTexture(this.painter, tile, dem);\n }\n }\n }\n\n _prepareDemTileUniforms(proxyTile: Tile, demTile: ?Tile, uniforms: UniformValues, uniformSuffix: ?string): boolean {\n if (!demTile || demTile.demTexture == null)\n return false;\n\n assert(demTile.dem);\n const proxyId = proxyTile.tileID.canonical;\n const demId = demTile.tileID.canonical;\n const demScaleBy = Math.pow(2, demId.z - proxyId.z);\n const suffix = uniformSuffix || \"\";\n // $FlowFixMe[prop-missing]\n uniforms[`u_dem_tl${suffix}`] = [proxyId.x * demScaleBy % 1, proxyId.y * demScaleBy % 1];\n // $FlowFixMe[prop-missing]\n uniforms[`u_dem_scale${suffix}`] = demScaleBy;\n return true;\n }\n\n get emptyDEMTexture(): Texture {\n return !this._emptyDEMTextureDirty && this._emptyDEMTexture ?\n this._emptyDEMTexture : this._updateEmptyDEMTexture();\n }\n\n get emptyDepthBufferTexture(): Texture {\n const context = this.painter.context;\n const gl = context.gl;\n if (!this._emptyDepthBufferTexture) {\n const image = new RGBAImage({width: 1, height: 1}, Uint8Array.of(255, 255, 255, 255));\n this._emptyDepthBufferTexture = new Texture(context, image, gl.RGBA, {premultiply: false});\n }\n return this._emptyDepthBufferTexture;\n }\n\n _getLoadedAreaMinimum(): number {\n let nonzero = 0;\n const min = this._visibleDemTiles.reduce((acc, tile) => {\n if (!tile.dem) return acc;\n const m = tile.dem.tree.minimums[0];\n acc += m;\n if (m > 0) nonzero++;\n return acc;\n }, 0);\n return nonzero ? min / nonzero : 0;\n }\n\n _updateEmptyDEMTexture(): Texture {\n const context = this.painter.context;\n const gl = context.gl;\n context.activeTexture.set(gl.TEXTURE2);\n\n const min = this._getLoadedAreaMinimum();\n const image = new RGBAImage(\n {width: 1, height: 1},\n new Uint8Array(DEMData.pack(min, ((this.sourceCache.getSource(): any): RasterDEMTileSource).encoding))\n );\n\n this._emptyDEMTextureDirty = false;\n let texture = this._emptyDEMTexture;\n if (!texture) {\n texture = this._emptyDEMTexture = new Texture(context, image, gl.RGBA, {premultiply: false});\n } else {\n texture.update(image, {premultiply: false});\n }\n return texture;\n }\n\n // useDepthForOcclusion: Pre-rendered depth to texture (this._depthTexture) is\n // used to hide (actually moves all object's vertices out of viewport).\n // useMeterToDem: u_meter_to_dem uniform is not used for all terrain programs,\n // optimization to avoid unnecessary computation and upload.\n setupElevationDraw(tile: Tile, program: Program<*>,\n options?: {\n useDepthForOcclusion?: boolean,\n useMeterToDem?: boolean,\n labelPlaneMatrixInv?: ?Float32Array,\n morphing?: { srcDemTile: Tile, dstDemTile: Tile, phase: number },\n useDenormalizedUpVectorScale?: boolean\n }) {\n const context = this.painter.context;\n const gl = context.gl;\n const uniforms = defaultTerrainUniforms(((this.sourceCache.getSource(): any): RasterDEMTileSource).encoding);\n uniforms['u_dem_size'] = this.sourceCache.getSource().tileSize;\n uniforms['u_exaggeration'] = this.exaggeration();\n\n let demTile = null;\n let prevDemTile = null;\n let morphingPhase = 1.0;\n\n if (options && options.morphing && this._useVertexMorphing) {\n const srcTile = options.morphing.srcDemTile;\n const dstTile = options.morphing.dstDemTile;\n morphingPhase = options.morphing.phase;\n\n if (srcTile && dstTile) {\n if (this._prepareDemTileUniforms(tile, srcTile, uniforms, \"_prev\"))\n prevDemTile = srcTile;\n if (this._prepareDemTileUniforms(tile, dstTile, uniforms))\n demTile = dstTile;\n }\n }\n\n if (prevDemTile && demTile) {\n // Both DEM textures are expected to be correctly set if geomorphing is enabled\n context.activeTexture.set(gl.TEXTURE2);\n (demTile.demTexture: any).bind(gl.NEAREST, gl.CLAMP_TO_EDGE, gl.NEAREST);\n context.activeTexture.set(gl.TEXTURE4);\n (prevDemTile.demTexture: any).bind(gl.NEAREST, gl.CLAMP_TO_EDGE, gl.NEAREST);\n\n uniforms[\"u_dem_lerp\"] = morphingPhase;\n } else {\n demTile = this.terrainTileForTile[tile.tileID.key];\n context.activeTexture.set(gl.TEXTURE2);\n const demTexture = this._prepareDemTileUniforms(tile, demTile, uniforms) ?\n (demTile.demTexture: any) : this.emptyDEMTexture;\n demTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n }\n\n context.activeTexture.set(gl.TEXTURE3);\n if (options && options.useDepthForOcclusion) {\n if (this._depthTexture) this._depthTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n if (this._depthFBO) uniforms['u_depth_size_inv'] = [1 / this._depthFBO.width, 1 / this._depthFBO.height];\n } else {\n this.emptyDepthBufferTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n uniforms['u_depth_size_inv'] = [1, 1];\n }\n\n if (options && options.useMeterToDem && demTile) {\n const meterToDEM = (1 << demTile.tileID.canonical.z) * mercatorZfromAltitude(1, this.painter.transform.center.lat) * this.sourceCache.getSource().tileSize;\n uniforms['u_meter_to_dem'] = meterToDEM;\n }\n if (options && options.labelPlaneMatrixInv) {\n uniforms['u_label_plane_matrix_inv'] = options.labelPlaneMatrixInv;\n }\n program.setTerrainUniformValues(context, uniforms);\n\n if (this.painter.transform.projection.name === 'globe') {\n const globeUniforms = this.globeUniformValues(this.painter.transform, tile.tileID.canonical, options && options.useDenormalizedUpVectorScale);\n program.setGlobeUniformValues(context, globeUniforms);\n }\n }\n\n globeUniformValues(tr: Transform, id: CanonicalTileID, useDenormalizedUpVectorScale: ?boolean): UniformValues {\n const projection = tr.projection;\n return {\n 'u_tile_tl_up': (projection.upVector(id, 0, 0): any),\n 'u_tile_tr_up': (projection.upVector(id, EXTENT, 0): any),\n 'u_tile_br_up': (projection.upVector(id, EXTENT, EXTENT): any),\n 'u_tile_bl_up': (projection.upVector(id, 0, EXTENT): any),\n 'u_tile_up_scale': (useDenormalizedUpVectorScale ? globeMetersToEcef(1) : projection.upVectorScale(id, tr.center.lat, tr.worldSize).metersToTile: any)\n };\n }\n\n renderToBackBuffer(accumulatedDrapes: Array) {\n const painter = this.painter;\n const context = this.painter.context;\n\n if (accumulatedDrapes.length === 0) {\n return;\n }\n\n context.bindFramebuffer.set(null);\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n painter.gpuTimingDeferredRenderStart();\n\n this.renderingToTexture = false;\n drawTerrainRaster(painter, this, this.proxySourceCache, accumulatedDrapes, this._updateTimestamp);\n this.renderingToTexture = true;\n\n painter.gpuTimingDeferredRenderEnd();\n\n accumulatedDrapes.splice(0, accumulatedDrapes.length);\n }\n\n // For each proxy tile, render all layers until the non-draped layer (and\n // render the tile to the screen) before advancing to the next proxy tile.\n // Returns the last drawn index that is used as a start\n // layer for interleaved draped rendering.\n // Apart to layer-by-layer rendering used in 2D, here we have proxy-tile-by-proxy-tile\n // rendering.\n renderBatch(startLayerIndex: number): number {\n if (this._drapedRenderBatches.length === 0) {\n return startLayerIndex + 1;\n }\n\n this.renderingToTexture = true;\n const painter = this.painter;\n const context = this.painter.context;\n const psc = this.proxySourceCache;\n const proxies = this.proxiedCoords[psc.id];\n\n // Consume batch of sequential drape layers and move next\n const drapedLayerBatch = this._drapedRenderBatches.shift();\n assert(drapedLayerBatch.start === startLayerIndex);\n\n const accumulatedDrapes = [];\n const layerIds = painter.style.order;\n\n let poolIndex = 0;\n for (const proxy of proxies) {\n // bind framebuffer and assign texture to the tile (texture used in drawTerrainRaster).\n const tile = psc.getTileByID(proxy.proxyTileKey);\n const renderCacheIndex = psc.proxyCachedFBO[proxy.key] ? psc.proxyCachedFBO[proxy.key][startLayerIndex] : undefined;\n const fbo = renderCacheIndex !== undefined ? psc.renderCache[renderCacheIndex] : this.pool[poolIndex++];\n const useRenderCache = renderCacheIndex !== undefined;\n\n tile.texture = fbo.tex;\n\n if (useRenderCache && !fbo.dirty) {\n // Use cached render from previous pass, no need to render again.\n accumulatedDrapes.push(tile.tileID);\n continue;\n }\n\n context.bindFramebuffer.set(fbo.fb.framebuffer);\n this.renderedToTile = false; // reset flag.\n if (fbo.dirty) {\n // Clear on start.\n context.clear({color: Color.transparent, stencil: 0});\n fbo.dirty = false;\n }\n\n let currentStencilSource; // There is no need to setup stencil for the same source for consecutive layers.\n for (let j = drapedLayerBatch.start; j <= drapedLayerBatch.end; ++j) {\n const layer = painter.style._layers[layerIds[j]];\n const hidden = layer.isHidden(painter.transform.zoom);\n assert(this._style.isLayerDraped(layer) || hidden);\n if (hidden) continue;\n\n const sourceCache = painter.style._getLayerSourceCache(layer);\n const proxiedCoords = sourceCache ? this.proxyToSource[proxy.key][sourceCache.id] : [proxy];\n if (!proxiedCoords) continue; // when tile is not loaded yet for the source cache.\n\n const coords = ((proxiedCoords: any): Array);\n context.viewport.set([0, 0, fbo.fb.width, fbo.fb.height]);\n if (currentStencilSource !== (sourceCache ? sourceCache.id : null)) {\n this._setupStencil(fbo, proxiedCoords, layer, sourceCache);\n currentStencilSource = sourceCache ? sourceCache.id : null;\n }\n painter.renderLayer(painter, sourceCache, layer, coords);\n }\n\n if (this.renderedToTile) {\n fbo.dirty = true;\n accumulatedDrapes.push(tile.tileID);\n } else if (!useRenderCache) {\n --poolIndex;\n assert(poolIndex >= 0);\n }\n if (poolIndex === FBO_POOL_SIZE) {\n poolIndex = 0;\n this.renderToBackBuffer(accumulatedDrapes);\n }\n }\n\n // Reset states and render last drapes\n this.renderToBackBuffer(accumulatedDrapes);\n this.renderingToTexture = false;\n\n context.bindFramebuffer.set(null);\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n return drapedLayerBatch.end + 1;\n }\n\n postRender() {\n // Make sure we consumed all the draped terrain batches at this point\n assert(this._drapedRenderBatches.length === 0);\n }\n\n renderCacheEfficiency(style: Style): Object {\n const layerCount = style.order.length;\n\n if (layerCount === 0) {\n return {efficiency: 100.0};\n }\n\n let uncacheableLayerCount = 0;\n let drapedLayerCount = 0;\n let reachedUndrapedLayer = false;\n let firstUndrapedLayer;\n\n for (let i = 0; i < layerCount; ++i) {\n const layer = style._layers[style.order[i]];\n if (!this._style.isLayerDraped(layer)) {\n if (!reachedUndrapedLayer) {\n reachedUndrapedLayer = true;\n firstUndrapedLayer = layer.id;\n }\n } else {\n if (reachedUndrapedLayer) {\n ++uncacheableLayerCount;\n }\n ++drapedLayerCount;\n }\n }\n\n if (drapedLayerCount === 0) {\n return {efficiency: 100.0};\n }\n\n return {efficiency: (1.0 - uncacheableLayerCount / drapedLayerCount) * 100.0, firstUndrapedLayer};\n }\n\n getMinElevationBelowMSL(): number {\n let min = 0.0;\n // The maximum DEM error in meters to be conservative (SRTM).\n const maxDEMError = 30.0;\n this._visibleDemTiles.filter(tile => tile.dem).forEach(tile => {\n const minMaxTree = (tile.dem: any).tree;\n min = Math.min(min, minMaxTree.minimums[0]);\n });\n return min === 0.0 ? min : (min - maxDEMError) * this._exaggeration;\n }\n\n // Performs raycast against visible DEM tiles on the screen and returns the distance travelled along the ray.\n // x & y components of the position are expected to be in normalized mercator coordinates [0, 1] and z in meters.\n raycast(pos: Vec3, dir: Vec3, exaggeration: number): ?number {\n if (!this._visibleDemTiles)\n return null;\n\n // Perform initial raycasts against root nodes of the available dem tiles\n // and use this information to sort them from closest to furthest.\n const preparedTiles = this._visibleDemTiles.filter(tile => tile.dem).map(tile => {\n const id = tile.tileID;\n const tiles = 1 << id.overscaledZ;\n const {x, y} = id.canonical;\n\n // Compute tile boundaries in mercator coordinates\n const minx = x / tiles;\n const maxx = (x + 1) / tiles;\n const miny = y / tiles;\n const maxy = (y + 1) / tiles;\n const tree = (tile.dem: any).tree;\n\n return {\n minx, miny, maxx, maxy,\n t: tree.raycastRoot(minx, miny, maxx, maxy, pos, dir, exaggeration),\n tile\n };\n });\n\n preparedTiles.sort((a, b) => {\n const at = a.t !== null ? a.t : Number.MAX_VALUE;\n const bt = b.t !== null ? b.t : Number.MAX_VALUE;\n return at - bt;\n });\n\n for (const obj of preparedTiles) {\n if (obj.t == null)\n return null;\n\n // Perform more accurate raycast against the dem tree. First intersection is the closest on\n // as all tiles are sorted from closest to furthest\n const tree = (obj.tile.dem: any).tree;\n const t = tree.raycast(obj.minx, obj.miny, obj.maxx, obj.maxy, pos, dir, exaggeration);\n\n if (t != null)\n return t;\n }\n\n return null;\n }\n\n _createFBO(): FBO {\n const painter = this.painter;\n const context = painter.context;\n const gl = context.gl;\n const bufferSize = this.drapeBufferSize;\n context.activeTexture.set(gl.TEXTURE0);\n const tex = new Texture(context, {width: bufferSize[0], height: bufferSize[1], data: null}, gl.RGBA);\n tex.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n const fb = context.createFramebuffer(bufferSize[0], bufferSize[1], false);\n fb.colorAttachment.set(tex.texture);\n fb.depthAttachment = new DepthStencilAttachment(context, fb.framebuffer);\n\n if (this._sharedDepthStencil === undefined) {\n this._sharedDepthStencil = context.createRenderbuffer(context.gl.DEPTH_STENCIL, bufferSize[0], bufferSize[1]);\n this._stencilRef = 0;\n fb.depthAttachment.set(this._sharedDepthStencil);\n context.clear({stencil: 0});\n } else {\n fb.depthAttachment.set(this._sharedDepthStencil);\n }\n\n if (context.extTextureFilterAnisotropic && !context.extTextureFilterAnisotropicForceOff) {\n gl.texParameterf(gl.TEXTURE_2D,\n context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,\n context.extTextureFilterAnisotropicMax);\n }\n\n return {fb, tex, dirty: false};\n }\n\n _initFBOPool() {\n while (this.pool.length < Math.min(FBO_POOL_SIZE, this.proxyCoords.length)) {\n this.pool.push(this._createFBO());\n }\n }\n\n _shouldDisableRenderCache(): boolean {\n // Disable render caches on dynamic events due to fading or transitioning.\n if (this._style.light && this._style.light.hasTransition()) {\n return true;\n }\n\n for (const id in this._style._sourceCaches) {\n if (this._style._sourceCaches[id].hasTransition()) {\n return true;\n }\n }\n\n const isTransitioning = (id: string) => {\n const layer = this._style._layers[id];\n const isHidden = layer.isHidden(this.painter.transform.zoom);\n if (layer.type === 'custom') {\n return !isHidden && ((layer: any): CustomStyleLayer).shouldRedrape();\n }\n return !isHidden && layer.hasTransition();\n };\n return this._style.order.some(isTransitioning);\n }\n\n _clearLineLayersFromRenderCache() {\n let hasVectorSource = false;\n for (const source of this._style._getSources()) {\n if (source instanceof VectorTileSource) {\n hasVectorSource = true;\n break;\n }\n }\n\n if (!hasVectorSource) return;\n\n const clearSourceCaches = {};\n for (let i = 0; i < this._style.order.length; ++i) {\n const layer = this._style._layers[this._style.order[i]];\n const sourceCache = this._style._getLayerSourceCache(layer);\n if (!sourceCache || clearSourceCaches[sourceCache.id]) continue;\n\n const isHidden = layer.isHidden(this.painter.transform.zoom);\n if (isHidden || layer.type !== 'line') continue;\n\n // Check if layer has a zoom dependent \"line-width\" expression\n const widthExpression = ((layer: any): LineStyleLayer).widthExpression();\n if (!(widthExpression instanceof ZoomDependentExpression)) continue;\n\n // Mark sourceCache as cleared\n clearSourceCaches[sourceCache.id] = true;\n for (const proxy of this.proxyCoords) {\n const proxiedCoords = this.proxyToSource[proxy.key][sourceCache.id];\n const coords = ((proxiedCoords: any): Array);\n if (!coords) continue;\n\n for (const coord of coords) {\n this._clearRenderCacheForTile(sourceCache.id, coord);\n }\n }\n }\n }\n\n _clearRasterLayersFromRenderCache() {\n let hasRasterSource = false;\n for (const id in this._style._sourceCaches) {\n if (this._style._sourceCaches[id]._source instanceof RasterTileSource) {\n hasRasterSource = true;\n break;\n }\n }\n\n if (!hasRasterSource) return;\n\n const clearSourceCaches = {};\n for (let i = 0; i < this._style.order.length; ++i) {\n const layer = this._style._layers[this._style.order[i]];\n const sourceCache = this._style._getLayerSourceCache(layer);\n if (!sourceCache || clearSourceCaches[sourceCache.id]) continue;\n\n const isHidden = layer.isHidden(this.painter.transform.zoom);\n if (isHidden || layer.type !== 'raster') continue;\n\n // Check if any raster tile is in a fading state\n const fadeDuration = ((layer: any): RasterStyleLayer).paint.get('raster-fade-duration');\n for (const proxy of this.proxyCoords) {\n const proxiedCoords = this.proxyToSource[proxy.key][sourceCache.id];\n const coords = ((proxiedCoords: any): Array);\n if (!coords) continue;\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n const parent = sourceCache.findLoadedParent(coord, 0);\n const fade = rasterFade(tile, parent, sourceCache, this.painter.transform, fadeDuration);\n const isFading = fade.opacity !== 1 || fade.mix !== 0;\n if (isFading) {\n this._clearRenderCacheForTile(sourceCache.id, coord);\n }\n }\n }\n }\n }\n\n _setupDrapedRenderBatches() {\n const layerIds = this._style.order;\n const layerCount = layerIds.length;\n if (layerCount === 0) {\n return;\n }\n\n const batches: Array = [];\n\n let currentLayer = 0;\n let layer = this._style._layers[layerIds[currentLayer]];\n while (!this._style.isLayerDraped(layer) && layer.isHidden(this.painter.transform.zoom) && ++currentLayer < layerCount) {\n layer = this._style._layers[layerIds[currentLayer]];\n }\n\n let batchStart: number | void;\n for (; currentLayer < layerCount; ++currentLayer) {\n const layer = this._style._layers[layerIds[currentLayer]];\n if (layer.isHidden(this.painter.transform.zoom)) {\n continue;\n }\n if (!this._style.isLayerDraped(layer)) {\n if (batchStart !== undefined) {\n batches.push({start: batchStart, end: currentLayer - 1});\n batchStart = undefined;\n }\n continue;\n }\n if (batchStart === undefined) {\n batchStart = currentLayer;\n }\n }\n\n if (batchStart !== undefined) {\n batches.push({start: batchStart, end: currentLayer - 1});\n }\n\n if (this._style.map._optimizeForTerrain) {\n // Draped first approach should result in a single or no batch\n assert(batches.length === 1 || batches.length === 0);\n }\n\n this._drapedRenderBatches = batches;\n }\n\n _setupRenderCache(previousProxyToSource: {[number]: {[string]: Array}}) {\n const psc = this.proxySourceCache;\n if (this._shouldDisableRenderCache() || this._invalidateRenderCache) {\n this._invalidateRenderCache = false;\n if (psc.renderCache.length > psc.renderCachePool.length) {\n const used = ((Object.values(psc.proxyCachedFBO): any): Array<{[string | number]: number}>);\n psc.proxyCachedFBO = {};\n for (let i = 0; i < used.length; ++i) {\n const fbos = ((Object.values(used[i]): any): Array);\n psc.renderCachePool.push(...fbos);\n }\n assert(psc.renderCache.length === psc.renderCachePool.length);\n }\n return;\n }\n\n this._clearRasterLayersFromRenderCache();\n\n const coords = this.proxyCoords;\n const dirty = this._tilesDirty;\n for (let i = coords.length - 1; i >= 0; i--) {\n const proxy = coords[i];\n const tile = psc.getTileByID(proxy.key);\n\n if (psc.proxyCachedFBO[proxy.key] !== undefined) {\n assert(tile.texture);\n const prev = previousProxyToSource[proxy.key];\n assert(prev);\n // Reuse previous render from cache if there was no change of\n // content that was used to render proxy tile.\n const current = this.proxyToSource[proxy.key];\n let equal = 0;\n for (const source in current) {\n const tiles = current[source];\n const prevTiles = prev[source];\n if (!prevTiles || prevTiles.length !== tiles.length ||\n tiles.some((t, index) =>\n (t !== prevTiles[index] ||\n (dirty[source] && dirty[source].hasOwnProperty(t.key)\n )))\n ) {\n equal = -1;\n break;\n }\n ++equal;\n }\n // dirty === false: doesn't need to be rendered to, just use cached render.\n for (const proxyFBO in psc.proxyCachedFBO[proxy.key]) {\n psc.renderCache[psc.proxyCachedFBO[proxy.key][proxyFBO]].dirty = equal < 0 || equal !== Object.values(prev).length;\n }\n }\n }\n\n const sortedRenderBatches = [...this._drapedRenderBatches];\n sortedRenderBatches.sort((batchA, batchB) => {\n const batchASize = batchA.end - batchA.start;\n const batchBSize = batchB.end - batchB.start;\n return batchBSize - batchASize;\n });\n\n for (const batch of sortedRenderBatches) {\n for (const id of coords) {\n if (psc.proxyCachedFBO[id.key]) {\n continue;\n }\n\n // Assign renderCache FBO if there are available FBOs in pool.\n let index = psc.renderCachePool.pop();\n if (index === undefined && psc.renderCache.length < RENDER_CACHE_MAX_SIZE) {\n index = psc.renderCache.length;\n psc.renderCache.push(this._createFBO());\n }\n if (index !== undefined) {\n psc.proxyCachedFBO[id.key] = {};\n psc.proxyCachedFBO[id.key][batch.start] = index;\n psc.renderCache[index].dirty = true; // needs to be rendered to.\n }\n }\n }\n this._tilesDirty = {};\n }\n\n _setupStencil(fbo: FBO, proxiedCoords: Array, layer: StyleLayer, sourceCache?: SourceCache) {\n if (!sourceCache || !this._sourceTilesOverlap[sourceCache.id]) {\n if (this._overlapStencilType) this._overlapStencilType = false;\n return;\n }\n const context = this.painter.context;\n const gl = context.gl;\n\n // If needed, setup stencilling. Don't bother to remove when there is no\n // more need: in such case, if there is no overlap, stencilling is disabled.\n if (proxiedCoords.length <= 1) { this._overlapStencilType = false; return; }\n\n let stencilRange;\n if (layer.isTileClipped()) {\n stencilRange = proxiedCoords.length;\n this._overlapStencilMode.test = {func: gl.EQUAL, mask: 0xFF};\n this._overlapStencilType = 'Clip';\n } else if (proxiedCoords[0].overscaledZ > proxiedCoords[proxiedCoords.length - 1].overscaledZ) {\n stencilRange = 1;\n this._overlapStencilMode.test = {func: gl.GREATER, mask: 0xFF};\n this._overlapStencilType = 'Mask';\n } else {\n this._overlapStencilType = false;\n return;\n }\n if (this._stencilRef + stencilRange > 255) {\n context.clear({stencil: 0});\n this._stencilRef = 0;\n }\n this._stencilRef += stencilRange;\n this._overlapStencilMode.ref = this._stencilRef;\n if (layer.isTileClipped()) {\n this._renderTileClippingMasks(proxiedCoords, this._overlapStencilMode.ref);\n }\n }\n\n clipOrMaskOverlapStencilType(): boolean {\n return this._overlapStencilType === 'Clip' || this._overlapStencilType === 'Mask';\n }\n\n stencilModeForRTTOverlap(id: OverscaledTileID): $ReadOnly {\n if (!this.renderingToTexture || !this._overlapStencilType) {\n return StencilMode.disabled;\n }\n // All source tiles contributing to the same proxy are processed in sequence, in zoom descending order.\n // For raster / hillshade overlap masking, ref is based on zoom dif.\n // For vector layer clipping, every tile gets dedicated stencil ref.\n if (this._overlapStencilType === 'Clip') {\n // In immediate 2D mode, we render rects to mark clipping area and handle behavior on tile borders.\n // Here, there is no need for now for this:\n // 1. overlap is handled by proxy render to texture tiles (there is no overlap there)\n // 2. here we handle only brief zoom out semi-transparent color intensity flickering\n // and that is avoided fine by stenciling primitives as part of drawing (instead of additional tile quad step).\n this._overlapStencilMode.ref = this.painter._tileClippingMaskIDs[id.key];\n } // else this._overlapStencilMode.ref is set to a single value used per proxy tile, in _setupStencil.\n return this._overlapStencilMode;\n }\n\n _renderTileClippingMasks(proxiedCoords: Array, ref: number) {\n const painter = this.painter;\n const context = this.painter.context;\n const gl = context.gl;\n painter._tileClippingMaskIDs = {};\n context.setColorMode(ColorMode.disabled);\n context.setDepthMode(DepthMode.disabled);\n\n const program = painter.useProgram('clippingMask');\n\n for (const tileID of proxiedCoords) {\n const id = painter._tileClippingMaskIDs[tileID.key] = --ref;\n program.draw(context, gl.TRIANGLES, DepthMode.disabled,\n // Tests will always pass, and ref value will be written to stencil buffer.\n new StencilMode({func: gl.ALWAYS, mask: 0}, id, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE),\n ColorMode.disabled, CullFaceMode.disabled, clippingMaskUniformValues(tileID.projMatrix),\n '$clipping', painter.tileExtentBuffer,\n painter.quadTriangleIndexBuffer, painter.tileExtentSegments);\n }\n }\n\n // Casts a ray from a point on screen and returns the intersection point with the terrain.\n // The returned point contains the mercator coordinates in its first 3 components, and elevation\n // in meter in its 4th coordinate.\n pointCoordinate(screenPoint: Point): ?Vec4 {\n const transform = this.painter.transform;\n if (screenPoint.x < 0 || screenPoint.x > transform.width ||\n screenPoint.y < 0 || screenPoint.y > transform.height) {\n return null;\n }\n\n const far = [screenPoint.x, screenPoint.y, 1, 1];\n vec4.transformMat4(far, far, transform.pixelMatrixInverse);\n vec4.scale(far, far, 1.0 / far[3]);\n // x & y in pixel coordinates, z is altitude in meters\n far[0] /= transform.worldSize;\n far[1] /= transform.worldSize;\n const camera = transform._camera.position;\n const mercatorZScale = mercatorZfromAltitude(1, transform.center.lat);\n const p = [camera[0], camera[1], camera[2] / mercatorZScale, 0.0];\n const dir = vec3.subtract([], far.slice(0, 3), p);\n vec3.normalize(dir, dir);\n\n const exaggeration = this._exaggeration;\n const distanceAlongRay = this.raycast(p, dir, exaggeration);\n\n if (distanceAlongRay === null || !distanceAlongRay) return null;\n vec3.scaleAndAdd(p, p, dir, distanceAlongRay);\n p[3] = p[2];\n p[2] *= mercatorZScale;\n return p;\n }\n\n drawDepth() {\n const painter = this.painter;\n const context = painter.context;\n const psc = this.proxySourceCache;\n\n const width = Math.ceil(painter.width), height = Math.ceil(painter.height);\n if (this._depthFBO && (this._depthFBO.width !== width || this._depthFBO.height !== height)) {\n this._depthFBO.destroy();\n this._depthFBO = undefined;\n this._depthTexture = undefined;\n }\n if (!this._depthFBO) {\n const gl = context.gl;\n const fbo = context.createFramebuffer(width, height, true);\n context.activeTexture.set(gl.TEXTURE0);\n const texture = new Texture(context, {width, height, data: null}, gl.RGBA);\n texture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n fbo.colorAttachment.set(texture.texture);\n const renderbuffer = context.createRenderbuffer(context.gl.DEPTH_COMPONENT16, width, height);\n fbo.depthAttachment.set(renderbuffer);\n this._depthFBO = fbo;\n this._depthTexture = texture;\n }\n context.bindFramebuffer.set(this._depthFBO.framebuffer);\n context.viewport.set([0, 0, width, height]);\n\n drawTerrainDepth(painter, this, psc, this.proxyCoords);\n }\n\n _setupProxiedCoordsForOrtho(sourceCache: SourceCache, sourceCoords: Array, previousProxyToSource: {[number]: {[string]: Array}}): void {\n if (sourceCache.getSource() instanceof ImageSource) {\n return this._setupProxiedCoordsForImageSource(sourceCache, sourceCoords, previousProxyToSource);\n }\n this._findCoveringTileCache[sourceCache.id] = this._findCoveringTileCache[sourceCache.id] || {};\n const coords = this.proxiedCoords[sourceCache.id] = [];\n const proxys = this.proxyCoords;\n for (let i = 0; i < proxys.length; i++) {\n const proxyTileID = proxys[i];\n const proxied = this._findTileCoveringTileID(proxyTileID, sourceCache);\n if (proxied) {\n assert(proxied.hasData());\n const id = this._createProxiedId(proxyTileID, proxied, previousProxyToSource[proxyTileID.key] && previousProxyToSource[proxyTileID.key][sourceCache.id]);\n coords.push(id);\n this.proxyToSource[proxyTileID.key][sourceCache.id] = [id];\n }\n }\n let hasOverlap = false;\n for (let i = 0; i < sourceCoords.length; i++) {\n const tile = sourceCache.getTile(sourceCoords[i]);\n if (!tile || !tile.hasData()) continue;\n const proxy = this._findTileCoveringTileID(tile.tileID, this.proxySourceCache);\n // Don't add the tile if already added in loop above.\n if (proxy && proxy.tileID.canonical.z !== tile.tileID.canonical.z) {\n const array = this.proxyToSource[proxy.tileID.key][sourceCache.id];\n const id = this._createProxiedId(proxy.tileID, tile, previousProxyToSource[proxy.tileID.key] && previousProxyToSource[proxy.tileID.key][sourceCache.id]);\n if (!array) {\n this.proxyToSource[proxy.tileID.key][sourceCache.id] = [id];\n } else {\n // The last element is parent added in loop above. This way we get\n // a list in Z descending order which is needed for stencil masking.\n array.splice(array.length - 1, 0, id);\n }\n coords.push(id);\n hasOverlap = true;\n }\n }\n this._sourceTilesOverlap[sourceCache.id] = hasOverlap;\n }\n\n _setupProxiedCoordsForImageSource(sourceCache: SourceCache, sourceCoords: Array, previousProxyToSource: {[number]: {[string]: Array}}) {\n if (!sourceCache.getSource().loaded()) return;\n\n const coords = this.proxiedCoords[sourceCache.id] = [];\n const proxys = this.proxyCoords;\n const imageSource: ImageSource = ((sourceCache.getSource(): any): ImageSource);\n\n const anchor = new Point(imageSource.tileID.x, imageSource.tileID.y)._div(1 << imageSource.tileID.z);\n // $FlowFixMe[method-unbinding]\n const aabb = imageSource.coordinates.map(MercatorCoordinate.fromLngLat).reduce((acc, coord) => {\n acc.min.x = Math.min(acc.min.x, coord.x - anchor.x);\n acc.min.y = Math.min(acc.min.y, coord.y - anchor.y);\n acc.max.x = Math.max(acc.max.x, coord.x - anchor.x);\n acc.max.y = Math.max(acc.max.y, coord.y - anchor.y);\n return acc;\n }, {min: new Point(Number.MAX_VALUE, Number.MAX_VALUE), max: new Point(-Number.MAX_VALUE, -Number.MAX_VALUE)});\n\n // Fast conservative check using aabb: content outside proxy tile gets clipped out by on render, anyway.\n const tileOutsideImage = (tileID: OverscaledTileID, imageTileID: OverscaledTileID) => {\n const x = tileID.wrap + tileID.canonical.x / (1 << tileID.canonical.z);\n const y = tileID.canonical.y / (1 << tileID.canonical.z);\n const d = EXTENT / (1 << tileID.canonical.z);\n\n const ix = imageTileID.wrap + imageTileID.canonical.x / (1 << imageTileID.canonical.z);\n const iy = imageTileID.canonical.y / (1 << imageTileID.canonical.z);\n\n return x + d < ix + aabb.min.x || x > ix + aabb.max.x || y + d < iy + aabb.min.y || y > iy + aabb.max.y;\n };\n\n for (let i = 0; i < proxys.length; i++) {\n const proxyTileID = proxys[i];\n for (let j = 0; j < sourceCoords.length; j++) {\n const tile = sourceCache.getTile(sourceCoords[j]);\n if (!tile || !tile.hasData()) continue;\n\n // Setup proxied -> proxy mapping only if image on given tile wrap intersects the proxy tile.\n if (tileOutsideImage(proxyTileID, tile.tileID)) continue;\n\n const id = this._createProxiedId(proxyTileID, tile, previousProxyToSource[proxyTileID.key] && previousProxyToSource[proxyTileID.key][sourceCache.id]);\n const array = this.proxyToSource[proxyTileID.key][sourceCache.id];\n if (!array) {\n this.proxyToSource[proxyTileID.key][sourceCache.id] = [id];\n } else {\n array.push(id);\n }\n coords.push(id);\n }\n }\n }\n\n // recycle is previous pass content that likely contains proxied ID combining proxy and source tile.\n _createProxiedId(proxyTileID: OverscaledTileID, tile: Tile, recycle: Array): ProxiedTileID {\n let matrix = this.orthoMatrix;\n if (recycle) {\n const recycled = recycle.find(proxied => (proxied.key === tile.tileID.key));\n if (recycled) return recycled;\n }\n if (tile.tileID.key !== proxyTileID.key) {\n const scale = proxyTileID.canonical.z - tile.tileID.canonical.z;\n matrix = mat4.create();\n let size, xOffset, yOffset;\n const wrap = (tile.tileID.wrap - proxyTileID.wrap) << proxyTileID.overscaledZ;\n if (scale > 0) {\n size = EXTENT >> scale;\n xOffset = size * ((tile.tileID.canonical.x << scale) - proxyTileID.canonical.x + wrap);\n yOffset = size * ((tile.tileID.canonical.y << scale) - proxyTileID.canonical.y);\n } else {\n size = EXTENT << -scale;\n xOffset = EXTENT * (tile.tileID.canonical.x - ((proxyTileID.canonical.x + wrap) << -scale));\n yOffset = EXTENT * (tile.tileID.canonical.y - (proxyTileID.canonical.y << -scale));\n }\n mat4.ortho(matrix, 0, size, 0, size, 0, 1);\n mat4.translate(matrix, matrix, [xOffset, yOffset, 0]);\n }\n return new ProxiedTileID(tile.tileID, proxyTileID.key, matrix);\n }\n\n // A variant of SourceCache.findLoadedParent that considers only visible\n // tiles (and doesn't check SourceCache._cache). Another difference is in\n // caching \"not found\" results along the lookup, to leave the lookup early.\n // Not found is cached by this._findCoveringTileCache[key] = null;\n _findTileCoveringTileID(tileID: OverscaledTileID, sourceCache: SourceCache): ?Tile {\n let tile: ?Tile = sourceCache.getTile(tileID);\n if (tile && tile.hasData()) return tile;\n\n const lookup = this._findCoveringTileCache[sourceCache.id];\n const key = lookup[tileID.key];\n tile = key ? sourceCache.getTileByID(key) : null;\n if ((tile && tile.hasData()) || key === null) return tile;\n\n assert(!key || tile);\n\n let sourceTileID = tile ? tile.tileID : tileID;\n let z = sourceTileID.overscaledZ;\n const minzoom = sourceCache.getSource().minzoom;\n const path = [];\n if (!key) {\n const maxzoom = sourceCache.getSource().maxzoom;\n if (tileID.canonical.z >= maxzoom) {\n const downscale = tileID.canonical.z - maxzoom;\n if (sourceCache.getSource().reparseOverscaled) {\n z = Math.max(tileID.canonical.z + 2, sourceCache.transform.tileZoom);\n sourceTileID = new OverscaledTileID(z, tileID.wrap, maxzoom,\n tileID.canonical.x >> downscale, tileID.canonical.y >> downscale);\n } else if (downscale !== 0) {\n z = maxzoom;\n sourceTileID = new OverscaledTileID(z, tileID.wrap, maxzoom,\n tileID.canonical.x >> downscale, tileID.canonical.y >> downscale);\n }\n }\n if (sourceTileID.key !== tileID.key) {\n path.push(sourceTileID.key);\n tile = sourceCache.getTile(sourceTileID);\n }\n }\n\n const pathToLookup = (key: ?number) => {\n path.forEach(id => { lookup[id] = key; });\n path.length = 0;\n };\n\n for (z = z - 1; z >= minzoom && !(tile && tile.hasData()); z--) {\n if (tile) {\n pathToLookup(tile.tileID.key); // Store lookup to parents not loaded (yet).\n }\n const id = sourceTileID.calculateScaledKey(z);\n tile = sourceCache.getTileByID(id);\n if (tile && tile.hasData()) break;\n const key = lookup[id];\n if (key === null) {\n break; // There's no tile loaded and no point searching further.\n } else if (key !== undefined) {\n tile = sourceCache.getTileByID(key);\n assert(tile);\n continue;\n }\n path.push(id);\n }\n\n pathToLookup(tile ? tile.tileID.key : null);\n return tile && tile.hasData() ? tile : null;\n }\n\n findDEMTileFor(tileID: OverscaledTileID): ?Tile {\n return this.enabled ? this._findTileCoveringTileID(tileID, this.sourceCache) : null;\n }\n\n /*\n * Bookkeeping if something gets rendered to the tile.\n */\n prepareDrawTile() {\n this.renderedToTile = true;\n }\n\n _clearRenderCacheForTile(source: string, coord: OverscaledTileID) {\n let sourceTiles = this._tilesDirty[source];\n if (!sourceTiles) sourceTiles = this._tilesDirty[source] = {};\n sourceTiles[coord.key] = true;\n }\n\n /*\n * Lazily instantiate the wireframe index buffer and segment vector so that we don't\n * allocate the geometry for rendering a debug wireframe until it's needed.\n */\n getWirefameBuffer(): [IndexBuffer, SegmentVector] {\n if (!this.wireframeSegments) {\n const wireframeGridIndices = createWireframeGrid(GRID_DIM + 1);\n this.wireframeIndexBuffer = this.painter.context.createIndexBuffer(wireframeGridIndices);\n this.wireframeSegments = SegmentVector.simpleSegment(0, 0, this.gridBuffer.length, wireframeGridIndices.length);\n }\n return [this.wireframeIndexBuffer, this.wireframeSegments];\n }\n\n}\n\nfunction sortByDistanceToCamera(tileIDs: Array, painter: Painter) {\n const cameraCoordinate = painter.transform.pointCoordinate(painter.transform.getCameraPoint());\n const cameraPoint = new Point(cameraCoordinate.x, cameraCoordinate.y);\n tileIDs.sort((a, b) => {\n if (b.overscaledZ - a.overscaledZ) return b.overscaledZ - a.overscaledZ;\n const aPoint = new Point(a.canonical.x + (1 << a.canonical.z) * a.wrap, a.canonical.y);\n const bPoint = new Point(b.canonical.x + (1 << b.canonical.z) * b.wrap, b.canonical.y);\n const cameraScaled = cameraPoint.mult(1 << a.canonical.z);\n cameraScaled.x -= 0.5;\n cameraScaled.y -= 0.5;\n return cameraScaled.distSqr(aPoint) - cameraScaled.distSqr(bPoint);\n });\n}\n\n/**\n * Creates uniform grid of triangles, covering EXTENT x EXTENT square, with two\n * adjustent traigles forming a quad, so that there are |count| columns and rows\n * of these quads in EXTENT x EXTENT square.\n * e.g. for count of 2:\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * @param {number} count Count of rows and columns\n * @private\n */\nfunction createGrid(count: number): [PosArray, TriangleIndexArray, number] {\n const boundsArray = new PosArray();\n // Around the grid, add one more row/column padding for \"skirt\".\n const indexArray = new TriangleIndexArray();\n const size = count + 2;\n boundsArray.reserve(size * size);\n indexArray.reserve((size - 1) * (size - 1) * 2);\n const step = EXTENT / (count - 1);\n const gridBound = EXTENT + step / 2;\n const bound = gridBound + step;\n\n // Skirt offset of 0x5FFF is chosen randomly to encode boolean value (skirt\n // on/off) with x position (max value EXTENT = 4096) to 16-bit signed integer.\n const skirtOffset = 24575; // 0x5FFF\n for (let y = -step; y < bound; y += step) {\n for (let x = -step; x < bound; x += step) {\n const offset = (x < 0 || x > gridBound || y < 0 || y > gridBound) ? skirtOffset : 0;\n const xi = clamp(Math.round(x), 0, EXTENT);\n const yi = clamp(Math.round(y), 0, EXTENT);\n boundsArray.emplaceBack(xi + offset, yi);\n }\n }\n\n // For cases when there's no need to render \"skirt\", the \"inner\" grid indices\n // are followed by skirt indices.\n const skirtIndicesOffset = (size - 3) * (size - 3) * 2;\n const quad = (i: number, j: number) => {\n const index = j * size + i;\n indexArray.emplaceBack(index + 1, index, index + size);\n indexArray.emplaceBack(index + size, index + size + 1, index + 1);\n };\n for (let j = 1; j < size - 2; j++) {\n for (let i = 1; i < size - 2; i++) {\n quad(i, j);\n }\n }\n // Padding (skirt) indices:\n [0, size - 2].forEach(j => {\n for (let i = 0; i < size - 1; i++) {\n quad(i, j);\n quad(j, i);\n }\n });\n return [boundsArray, indexArray, skirtIndicesOffset];\n}\n\n/**\n * Creates a grid of indices corresponding to the grid constructed by createGrid\n * in order to render that grid as a wireframe rather than a solid mesh. It does\n * not create a skirt and so only goes from 1 to count + 1, e.g. for count of 2:\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * @param {number} count Count of rows and columns\n * @private\n */\nfunction createWireframeGrid(count: number): LineIndexArray {\n let index = 0;\n const indexArray = new LineIndexArray();\n const size = count + 2;\n // Draw two edges of a quad and its diagonal. The very last row and column have\n // an additional line to close off the grid.\n for (let j = 1; j < count; j++) {\n for (let i = 1; i < count; i++) {\n index = j * size + i;\n indexArray.emplaceBack(index, index + 1);\n indexArray.emplaceBack(index, index + size);\n indexArray.emplaceBack(index + 1, index + size);\n\n // Place an extra line at the end of each row\n if (j === count - 1) indexArray.emplaceBack(index + size, index + size + 1);\n }\n // Place an extra line at the end of each col\n indexArray.emplaceBack(index + 1, index + 1 + size);\n }\n return indexArray;\n}\n\nexport type TerrainUniformsType = {|\n 'u_dem': Uniform1i,\n 'u_dem_prev': Uniform1i,\n 'u_dem_unpack': Uniform4f,\n 'u_dem_tl': Uniform2f,\n 'u_dem_scale': Uniform1f,\n 'u_dem_tl_prev': Uniform2f,\n 'u_dem_scale_prev': Uniform1f,\n 'u_dem_size': Uniform1f,\n 'u_dem_lerp': Uniform1f,\n \"u_exaggeration\": Uniform1f,\n 'u_depth': Uniform1i,\n 'u_depth_size_inv': Uniform2f,\n 'u_meter_to_dem'?: Uniform1f,\n 'u_label_plane_matrix_inv'?: UniformMatrix4f,\n|};\n\nexport const terrainUniforms = (context: Context): TerrainUniformsType => ({\n 'u_dem': new Uniform1i(context),\n 'u_dem_prev': new Uniform1i(context),\n 'u_dem_unpack': new Uniform4f(context),\n 'u_dem_tl': new Uniform2f(context),\n 'u_dem_scale': new Uniform1f(context),\n 'u_dem_tl_prev': new Uniform2f(context),\n 'u_dem_scale_prev': new Uniform1f(context),\n 'u_dem_size': new Uniform1f(context),\n 'u_dem_lerp': new Uniform1f(context),\n 'u_exaggeration': new Uniform1f(context),\n 'u_depth': new Uniform1i(context),\n 'u_depth_size_inv': new Uniform2f(context),\n 'u_meter_to_dem': new Uniform1f(context),\n 'u_label_plane_matrix_inv': new UniformMatrix4f(context),\n});\n\nfunction defaultTerrainUniforms(encoding: DEMEncoding): UniformValues {\n return {\n 'u_dem': 2,\n 'u_dem_prev': 4,\n 'u_dem_unpack': DEMData.getUnpackVector(encoding),\n 'u_dem_tl': [0, 0],\n 'u_dem_tl_prev': [0, 0],\n 'u_dem_scale': 0,\n 'u_dem_scale_prev': 0,\n 'u_dem_size': 0,\n 'u_dem_lerp': 1.0,\n 'u_depth': 3,\n 'u_depth_size_inv': [0, 0],\n 'u_exaggeration': 0,\n };\n}\n\nexport type GlobeUniformsType = {|\n 'u_tile_tl_up': Uniform3f,\n 'u_tile_tr_up': Uniform3f,\n 'u_tile_br_up': Uniform3f,\n 'u_tile_bl_up': Uniform3f,\n 'u_tile_up_scale': Uniform1f\n|};\n\nexport const globeUniforms = (context: Context): GlobeUniformsType => ({\n 'u_tile_tl_up': new Uniform3f(context),\n 'u_tile_tr_up': new Uniform3f(context),\n 'u_tile_br_up': new Uniform3f(context),\n 'u_tile_bl_up': new Uniform3f(context),\n 'u_tile_up_scale': new Uniform1f(context)\n});\n","// @flow\n\nimport {\n prelude,\n preludeFragPrecisionQualifiers,\n preludeVertPrecisionQualifiers,\n preludeTerrain,\n preludeFog,\n preludeCommonSource,\n standardDerivativesExt\n} from '../shaders/shaders.js';\nimport assert from 'assert';\nimport ProgramConfiguration from '../data/program_configuration.js';\nimport VertexArrayObject from './vertex_array_object.js';\nimport Context from '../gl/context.js';\nimport {terrainUniforms, globeUniforms} from '../terrain/terrain.js';\nimport type {TerrainUniformsType, GlobeUniformsType} from '../terrain/terrain.js';\nimport {fogUniforms} from './fog.js';\nimport type {FogUniformsType} from './fog.js';\n\nimport type SegmentVector from '../data/segment.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type DepthMode from '../gl/depth_mode.js';\nimport type StencilMode from '../gl/stencil_mode.js';\nimport type ColorMode from '../gl/color_mode.js';\nimport type CullFaceMode from '../gl/cull_face_mode.js';\nimport type {UniformBindings, UniformValues} from './uniform_binding.js';\nimport type {BinderUniform} from '../data/program_configuration.js';\n\nexport type DrawMode =\n | $PropertyType\n | $PropertyType\n | $PropertyType;\n\ntype ShaderSource = {\n fragmentSource: string,\n vertexSource: string,\n staticAttributes: Array,\n usedDefines: Array\n};\n\nfunction getTokenizedAttributes(array: Array): Array {\n const result = [];\n\n for (let i = 0; i < array.length; i++) {\n if (array[i] === null) continue;\n const token = array[i].split(' ');\n result.push(token.pop());\n }\n return result;\n}\n\nclass Program {\n program: WebGLProgram;\n attributes: {[_: string]: number};\n numAttributes: number;\n fixedUniforms: Us;\n binderUniforms: Array;\n failedToCreate: boolean;\n terrainUniforms: ?TerrainUniformsType;\n fogUniforms: ?FogUniformsType;\n globeUniforms: ?GlobeUniformsType;\n\n static cacheKey(source: ShaderSource, name: string, defines: string[], programConfiguration: ?ProgramConfiguration): string {\n let key = `${name}${programConfiguration ? programConfiguration.cacheKey : ''}`;\n for (const define of defines) {\n if (source.usedDefines.includes(define)) {\n key += `/${define}`;\n }\n }\n return key;\n }\n\n constructor(context: Context,\n name: string,\n source: ShaderSource,\n configuration: ?ProgramConfiguration,\n fixedUniforms: (Context) => Us,\n fixedDefines: string[]) {\n const gl = context.gl;\n this.program = ((gl.createProgram(): any): WebGLProgram);\n\n const staticAttrInfo = getTokenizedAttributes(source.staticAttributes);\n const dynamicAttrInfo = configuration ? configuration.getBinderAttributes() : [];\n const allAttrInfo = staticAttrInfo.concat(dynamicAttrInfo);\n\n let defines = configuration ? configuration.defines() : [];\n defines = defines.concat(fixedDefines.map((define) => `#define ${define}`));\n const version = context.isWebGL2 ? '#version 300 es\\n' : '';\n\n const fragmentSource = version + defines.concat(\n context.extStandardDerivatives && version.length === 0 ? standardDerivativesExt.concat(preludeFragPrecisionQualifiers) : preludeFragPrecisionQualifiers,\n preludeFragPrecisionQualifiers,\n preludeCommonSource,\n prelude.fragmentSource,\n preludeFog.fragmentSource,\n source.fragmentSource).join('\\n');\n const vertexSource = version + defines.concat(\n preludeVertPrecisionQualifiers,\n preludeCommonSource,\n prelude.vertexSource,\n preludeFog.vertexSource,\n preludeTerrain.vertexSource,\n source.vertexSource).join('\\n');\n\n const fragmentShader = ((gl.createShader(gl.FRAGMENT_SHADER): any): WebGLShader);\n if (gl.isContextLost()) {\n this.failedToCreate = true;\n return;\n }\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n assert(gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS), (gl.getShaderInfoLog(fragmentShader): any));\n gl.attachShader(this.program, fragmentShader);\n\n const vertexShader = ((gl.createShader(gl.VERTEX_SHADER): any): WebGLShader);\n if (gl.isContextLost()) {\n this.failedToCreate = true;\n return;\n }\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n assert(gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS), (gl.getShaderInfoLog(vertexShader): any));\n gl.attachShader(this.program, vertexShader);\n\n this.attributes = {};\n\n this.numAttributes = allAttrInfo.length;\n\n for (let i = 0; i < this.numAttributes; i++) {\n if (allAttrInfo[i]) {\n gl.bindAttribLocation(this.program, i, allAttrInfo[i]);\n this.attributes[allAttrInfo[i]] = i;\n }\n }\n\n gl.linkProgram(this.program);\n assert(gl.getProgramParameter(this.program, gl.LINK_STATUS), (gl.getProgramInfoLog(this.program): any));\n\n gl.deleteShader(vertexShader);\n gl.deleteShader(fragmentShader);\n\n this.fixedUniforms = fixedUniforms(context);\n this.binderUniforms = configuration ? configuration.getUniforms(context) : [];\n if (fixedDefines.includes('TERRAIN')) {\n this.terrainUniforms = terrainUniforms(context);\n }\n if (fixedDefines.includes('GLOBE')) {\n this.globeUniforms = globeUniforms(context);\n }\n if (fixedDefines.includes('FOG')) {\n this.fogUniforms = fogUniforms(context);\n }\n }\n\n setTerrainUniformValues(context: Context, terrainUniformValues: UniformValues) {\n if (!this.terrainUniforms) return;\n const uniforms: TerrainUniformsType = this.terrainUniforms;\n\n if (this.failedToCreate) return;\n context.program.set(this.program);\n\n for (const name in terrainUniformValues) {\n if (uniforms[name]) {\n uniforms[name].set(this.program, name, terrainUniformValues[name]);\n }\n }\n }\n\n setGlobeUniformValues(context: Context, globeUniformValues: UniformValues) {\n if (!this.globeUniforms) return;\n const uniforms: GlobeUniformsType = this.globeUniforms;\n\n if (this.failedToCreate) return;\n context.program.set(this.program);\n\n for (const name in globeUniformValues) {\n if (uniforms[name]) {\n uniforms[name].set(this.program, name, globeUniformValues[name]);\n }\n }\n }\n\n setFogUniformValues(context: Context, fogUniformsValues: UniformValues) {\n if (!this.fogUniforms) return;\n const uniforms: FogUniformsType = this.fogUniforms;\n\n if (this.failedToCreate) return;\n context.program.set(this.program);\n\n for (const name in fogUniformsValues) {\n uniforms[name].set(this.program, name, fogUniformsValues[name]);\n }\n }\n\n draw(\n context: Context,\n drawMode: DrawMode,\n depthMode: $ReadOnly,\n stencilMode: $ReadOnly,\n colorMode: $ReadOnly,\n cullFaceMode: $ReadOnly,\n uniformValues: UniformValues,\n layerID: string,\n layoutVertexBuffer: VertexBuffer,\n indexBuffer: IndexBuffer,\n segments: SegmentVector,\n currentProperties: any,\n zoom: ?number,\n configuration: ?ProgramConfiguration,\n dynamicLayoutBuffers: ?Array) {\n\n const gl = context.gl;\n\n if (this.failedToCreate) return;\n\n context.program.set(this.program);\n context.setDepthMode(depthMode);\n context.setStencilMode(stencilMode);\n context.setColorMode(colorMode);\n context.setCullFace(cullFaceMode);\n\n for (const name of Object.keys(this.fixedUniforms)) {\n this.fixedUniforms[name].set(this.program, name, uniformValues[name]);\n }\n\n if (configuration) {\n configuration.setUniforms(this.program, context, this.binderUniforms, currentProperties, {zoom: (zoom: any)});\n }\n\n const primitiveSize = {\n [gl.LINES]: 2,\n [gl.TRIANGLES]: 3,\n [gl.LINE_STRIP]: 1\n }[drawMode];\n\n for (const segment of segments.get()) {\n const vaos = segment.vaos || (segment.vaos = {});\n const vao: VertexArrayObject = vaos[layerID] || (vaos[layerID] = new VertexArrayObject());\n\n vao.bind(\n context,\n this,\n layoutVertexBuffer,\n configuration ? configuration.getPaintVertexBuffers() : [],\n indexBuffer,\n segment.vertexOffset,\n dynamicLayoutBuffers ? dynamicLayoutBuffers : []\n );\n\n gl.drawElements(\n drawMode,\n segment.primitiveLength * primitiveSize,\n gl.UNSIGNED_SHORT,\n segment.primitiveOffset * primitiveSize * 2);\n }\n }\n}\n\nexport default Program;\n","// @flow\n\nimport Context from '../gl/context.js';\nimport type {UniformValues} from './uniform_binding.js';\nimport type {UnwrappedTileID} from '../source/tile_id.js';\nimport Painter from './painter.js';\nimport Fog from '../style/fog.js';\nimport {Uniform1f, Uniform1i, Uniform2f, Uniform3f, Uniform4f, UniformMatrix4f} from './uniform_binding.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\nexport type FogUniformsType = {|\n 'u_fog_matrix': UniformMatrix4f,\n 'u_fog_range': Uniform2f,\n 'u_fog_color': Uniform4f,\n 'u_fog_horizon_blend': Uniform1f,\n 'u_fog_temporal_offset': Uniform1f,\n 'u_frustum_tl': Uniform3f,\n 'u_frustum_tr': Uniform3f,\n 'u_frustum_br': Uniform3f,\n 'u_frustum_bl': Uniform3f,\n 'u_globe_pos': Uniform3f,\n 'u_globe_radius': Uniform1f,\n 'u_globe_transition': Uniform1f,\n 'u_is_globe': Uniform1i,\n 'u_viewport': Uniform2f,\n|};\n\nexport const fogUniforms = (context: Context): FogUniformsType => ({\n 'u_fog_matrix': new UniformMatrix4f(context),\n 'u_fog_range': new Uniform2f(context),\n 'u_fog_color': new Uniform4f(context),\n 'u_fog_horizon_blend': new Uniform1f(context),\n 'u_fog_temporal_offset': new Uniform1f(context),\n 'u_frustum_tl': new Uniform3f(context),\n 'u_frustum_tr': new Uniform3f(context),\n 'u_frustum_br': new Uniform3f(context),\n 'u_frustum_bl': new Uniform3f(context),\n 'u_globe_pos': new Uniform3f(context),\n 'u_globe_radius': new Uniform1f(context),\n 'u_globe_transition': new Uniform1f(context),\n 'u_is_globe': new Uniform1i(context),\n 'u_viewport': new Uniform2f(context)\n});\n\nexport const fogUniformValues = (\n painter: Painter,\n fog: Fog,\n tileID: ?UnwrappedTileID,\n fogOpacity: number,\n frustumDirTl: [number, number, number],\n frustumDirTr: [number, number, number],\n frustumDirBr: [number, number, number],\n frustumDirBl: [number, number, number],\n globePosition: [number, number, number],\n globeRadius: number,\n viewport: [number, number]\n): UniformValues => {\n const tr = painter.transform;\n const fogColor = fog.properties.get('color').toArray01();\n fogColor[3] = fogOpacity; // Update Alpha\n const temporalOffset = (painter.frameCounter / 1000.0) % 1;\n return {\n 'u_fog_matrix': tileID ? tr.calculateFogTileMatrix(tileID) : painter.identityMat,\n 'u_fog_range': fog.getFovAdjustedRange(tr._fov),\n 'u_fog_color': fogColor,\n 'u_fog_horizon_blend': fog.properties.get('horizon-blend'),\n 'u_fog_temporal_offset': temporalOffset,\n 'u_frustum_tl': frustumDirTl,\n 'u_frustum_tr': frustumDirTr,\n 'u_frustum_br': frustumDirBr,\n 'u_frustum_bl': frustumDirBl,\n 'u_globe_pos': globePosition,\n 'u_globe_radius': globeRadius,\n 'u_viewport': viewport,\n 'u_globe_transition': globeToMercatorTransition(tr.zoom),\n 'u_is_globe': +(tr.projection.name === 'globe')\n };\n};\n","// @flow\n\nimport assert from 'assert';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f\n} from '../uniform_binding.js';\nimport pixelsToTileUnits from '../../source/pixels_to_tile_units.js';\n\nimport type Painter from '../painter.js';\nimport type {OverscaledTileID} from '../../source/tile_id.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Tile from '../../source/tile.js';\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\ntype BackgroundPatternUniformsType = {|\n 'u_image': Uniform1i,\n 'u_pattern_tl': Uniform2f,\n 'u_pattern_br': Uniform2f,\n 'u_texsize': Uniform2f,\n 'u_pattern_size': Uniform2f,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f\n|};\n\nexport type PatternUniformsType = {|\n 'u_image': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f\n|};\n\nfunction patternUniformValues(painter: Painter, tile: Tile): UniformValues {\n\n const numTiles = Math.pow(2, tile.tileID.overscaledZ);\n const tileSizeAtNearestZoom = tile.tileSize * Math.pow(2, painter.transform.tileZoom) / numTiles;\n\n const pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);\n const pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;\n\n return {\n 'u_image': 0,\n 'u_texsize': tile.imageAtlasTexture.size,\n 'u_tile_units_to_pixels': 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom),\n // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.\n 'u_pixel_coord_upper': [pixelX >> 16, pixelY >> 16],\n 'u_pixel_coord_lower': [pixelX & 0xFFFF, pixelY & 0xFFFF]\n };\n}\n\nfunction bgPatternUniformValues(image: ResolvedImage, painter: Painter,\n tile: {tileID: OverscaledTileID, tileSize: number}\n): UniformValues {\n\n const imagePos = painter.imageManager.getPattern(image.toString());\n assert(imagePos);\n const {width, height} = painter.imageManager.getPixelSize();\n\n const numTiles = Math.pow(2, tile.tileID.overscaledZ);\n const tileSizeAtNearestZoom = tile.tileSize * Math.pow(2, painter.transform.tileZoom) / numTiles;\n\n const pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);\n const pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;\n\n return {\n 'u_image': 0,\n 'u_pattern_tl': (imagePos: any).tl,\n 'u_pattern_br': (imagePos: any).br,\n 'u_texsize': [width, height],\n 'u_pattern_size': (imagePos: any).displaySize,\n 'u_tile_units_to_pixels': 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom),\n // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.\n 'u_pixel_coord_upper': [pixelX >> 16, pixelY >> 16],\n 'u_pixel_coord_lower': [pixelX & 0xFFFF, pixelY & 0xFFFF]\n };\n}\nexport {bgPatternUniformValues, patternUniformValues};\n","// @flow\n\nimport {patternUniformValues} from './pattern.js';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {mat3, mat4, vec3} from 'gl-matrix';\nimport {extend} from '../../util/util.js';\nimport type Context from '../../gl/context.js';\nimport type Painter from '../painter.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Tile from '../../source/tile.js';\nimport {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport EXTENT from '../../data/extent.js';\n\nexport type FillExtrusionUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_lightpos': Uniform3f,\n 'u_lightintensity': Uniform1f,\n 'u_lightcolor': Uniform3f,\n 'u_vertical_gradient': Uniform1f,\n 'u_opacity': Uniform1f,\n // globe uniforms:\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_up_dir': Uniform3f,\n 'u_height_lift': Uniform1f,\n 'u_ao': Uniform2f,\n 'u_edge_radius': Uniform1f\n|};\n\nexport type FillExtrusionPatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_lightpos': Uniform3f,\n 'u_lightintensity': Uniform1f,\n 'u_lightcolor': Uniform3f,\n 'u_height_factor': Uniform1f,\n 'u_vertical_gradient': Uniform1f,\n 'u_ao': Uniform2f,\n 'u_edge_radius': Uniform1f,\n // globe uniforms:\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_up_dir': Uniform3f,\n 'u_height_lift': Uniform1f,\n // pattern uniforms:\n 'u_texsize': Uniform2f,\n 'u_image': Uniform1i,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f,\n 'u_opacity': Uniform1f\n|};\n\nconst fillExtrusionUniforms = (context: Context): FillExtrusionUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_lightpos': new Uniform3f(context),\n 'u_lightintensity': new Uniform1f(context),\n 'u_lightcolor': new Uniform3f(context),\n 'u_vertical_gradient': new Uniform1f(context),\n 'u_opacity': new Uniform1f(context),\n 'u_edge_radius': new Uniform1f(context),\n 'u_ao': new Uniform2f(context),\n // globe uniforms:\n 'u_tile_id': new Uniform3f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_inv_rot_matrix': new UniformMatrix4f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_up_dir': new Uniform3f(context),\n 'u_height_lift': new Uniform1f(context)\n});\n\nconst fillExtrusionPatternUniforms = (context: Context): FillExtrusionPatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_lightpos': new Uniform3f(context),\n 'u_lightintensity': new Uniform1f(context),\n 'u_lightcolor': new Uniform3f(context),\n 'u_vertical_gradient': new Uniform1f(context),\n 'u_height_factor': new Uniform1f(context),\n 'u_edge_radius': new Uniform1f(context),\n 'u_ao': new Uniform2f(context),\n // globe uniforms:\n 'u_tile_id': new Uniform3f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_inv_rot_matrix': new UniformMatrix4f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_up_dir': new Uniform3f(context),\n 'u_height_lift': new Uniform1f(context),\n // pattern uniforms\n 'u_image': new Uniform1i(context),\n 'u_texsize': new Uniform2f(context),\n 'u_pixel_coord_upper': new Uniform2f(context),\n 'u_pixel_coord_lower': new Uniform2f(context),\n 'u_tile_units_to_pixels': new Uniform1f(context),\n 'u_opacity': new Uniform1f(context)\n});\n\nconst identityMatrix = mat4.create();\n\nconst fillExtrusionUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n shouldUseVerticalGradient: boolean,\n opacity: number,\n aoIntensityRadius: [number, number],\n edgeRadius: number,\n coord: OverscaledTileID,\n heightLift: number,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array\n): UniformValues => {\n const light = painter.style.light;\n const _lp = light.properties.get('position');\n const lightPos = [_lp.x, _lp.y, _lp.z];\n const lightMat = mat3.create();\n const anchor = light.properties.get('anchor');\n if (anchor === 'viewport') {\n mat3.fromRotation(lightMat, -painter.transform.angle);\n vec3.transformMat3(lightPos, lightPos, lightMat);\n }\n\n const lightColor = light.properties.get('color');\n const tr = painter.transform;\n\n const uniformValues = {\n 'u_matrix': matrix,\n 'u_lightpos': lightPos,\n 'u_lightintensity': light.properties.get('intensity'),\n 'u_lightcolor': [lightColor.r, lightColor.g, lightColor.b],\n 'u_vertical_gradient': +shouldUseVerticalGradient,\n 'u_opacity': opacity,\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_up_dir': [0, 0, 0],\n 'u_height_lift': 0,\n 'u_ao': aoIntensityRadius,\n 'u_edge_radius': edgeRadius\n };\n\n if (tr.projection.name === 'globe') {\n uniformValues['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n uniformValues['u_zoom_transition'] = zoomTransition;\n uniformValues['u_inv_rot_matrix'] = invMatrix;\n uniformValues['u_merc_center'] = mercatorCenter;\n uniformValues['u_up_dir'] = (tr.projection.upVector(new CanonicalTileID(0, 0, 0), mercatorCenter[0] * EXTENT, mercatorCenter[1] * EXTENT): any);\n uniformValues['u_height_lift'] = heightLift;\n }\n\n return uniformValues;\n};\n\nconst fillExtrusionPatternUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n shouldUseVerticalGradient: boolean,\n opacity: number,\n aoIntensityRadius: [number, number],\n edgeRadius: number,\n coord: OverscaledTileID,\n tile: Tile,\n heightLift: number,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array\n): UniformValues => {\n const uniformValues = fillExtrusionUniformValues(\n matrix, painter, shouldUseVerticalGradient, opacity, aoIntensityRadius, edgeRadius, coord,\n heightLift, zoomTransition, mercatorCenter, invMatrix);\n const heightFactorUniform = {\n 'u_height_factor': -Math.pow(2, coord.overscaledZ) / tile.tileSize / 8\n };\n return extend(uniformValues, patternUniformValues(painter, tile), heightFactorUniform);\n};\n\nexport {\n fillExtrusionUniforms,\n fillExtrusionPatternUniforms,\n fillExtrusionUniformValues,\n fillExtrusionPatternUniformValues\n};\n","// @flow\n\nimport {patternUniformValues} from './pattern.js';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {extend} from '../../util/util.js';\n\nimport type Painter from '../painter.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\nimport type Tile from '../../source/tile.js';\n\nexport type FillUniformsType = {|\n 'u_matrix': UniformMatrix4f\n|};\n\nexport type FillOutlineUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_world': Uniform2f\n|};\n\nexport type FillPatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n // pattern uniforms:\n 'u_texsize': Uniform2f,\n 'u_image': Uniform1i,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f\n|};\n\nexport type FillOutlinePatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_world': Uniform2f,\n // pattern uniforms:\n 'u_texsize': Uniform2f,\n 'u_image': Uniform1i,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f\n|};\n\nconst fillUniforms = (context: Context): FillUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context)\n});\n\nconst fillPatternUniforms = (context: Context): FillPatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_image': new Uniform1i(context),\n 'u_texsize': new Uniform2f(context),\n 'u_pixel_coord_upper': new Uniform2f(context),\n 'u_pixel_coord_lower': new Uniform2f(context),\n 'u_tile_units_to_pixels': new Uniform1f(context)\n\n});\n\nconst fillOutlineUniforms = (context: Context): FillOutlineUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_world': new Uniform2f(context)\n});\n\nconst fillOutlinePatternUniforms = (context: Context): FillOutlinePatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_world': new Uniform2f(context),\n 'u_image': new Uniform1i(context),\n 'u_texsize': new Uniform2f(context),\n 'u_pixel_coord_upper': new Uniform2f(context),\n 'u_pixel_coord_lower': new Uniform2f(context),\n 'u_tile_units_to_pixels': new Uniform1f(context)\n});\n\nconst fillUniformValues = (matrix: Float32Array): UniformValues => ({\n 'u_matrix': matrix\n});\n\nconst fillPatternUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n tile: Tile\n): UniformValues => extend(\n fillUniformValues(matrix),\n patternUniformValues(painter, tile)\n);\n\nconst fillOutlineUniformValues = (\n matrix: Float32Array,\n drawingBufferSize: [number, number]\n): UniformValues => ({\n 'u_matrix': matrix,\n 'u_world': drawingBufferSize\n});\n\nconst fillOutlinePatternUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n tile: Tile,\n drawingBufferSize: [number, number]\n): UniformValues => extend(\n fillPatternUniformValues(matrix, painter, tile),\n {\n 'u_world': drawingBufferSize\n }\n);\n\nexport {\n fillUniforms,\n fillPatternUniforms,\n fillOutlineUniforms,\n fillOutlinePatternUniforms,\n fillUniformValues,\n fillPatternUniformValues,\n fillOutlineUniformValues,\n fillOutlinePatternUniformValues\n};\n","// @flow\n\nimport {\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport type Tile from '../../source/tile.js';\nimport type CircleStyleLayer from '../../style/style_layer/circle_style_layer.js';\nimport type Painter from '../painter.js';\nimport browser from '../../util/browser.js';\nimport {mat4} from 'gl-matrix';\nimport {globeToMercatorTransition, globePixelsToTileUnits} from '../../geo/projection/globe_util.js';\nimport EXTENT from '../../data/extent.js';\n\nexport type CircleUniformsType = {|\n 'u_camera_to_center_distance': Uniform1f,\n 'u_extrude_scale': UniformMatrix2f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_up_dir': Uniform3f,\n|};\n\nexport type CircleDefinesType = 'PITCH_WITH_MAP' | 'SCALE_WITH_MAP' | 'PROJECTION_GLOBE_VIEW';\n\nconst circleUniforms = (context: Context): CircleUniformsType => ({\n 'u_camera_to_center_distance': new Uniform1f(context),\n 'u_extrude_scale': new UniformMatrix2f(context),\n 'u_device_pixel_ratio': new Uniform1f(context),\n 'u_matrix': new UniformMatrix4f(context),\n 'u_inv_rot_matrix': new UniformMatrix4f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_tile_id': new Uniform3f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_up_dir': new Uniform3f(context),\n});\n\nconst identityMatrix = mat4.create();\n\nconst circleUniformValues = (\n painter: Painter,\n coord: OverscaledTileID,\n tile: Tile,\n invMatrix: Float32Array,\n mercatorCenter: [number, number],\n layer: CircleStyleLayer\n): UniformValues => {\n const transform = painter.transform;\n const isGlobe = transform.projection.name === 'globe';\n\n let extrudeScale;\n if (layer.paint.get('circle-pitch-alignment') === 'map') {\n if (isGlobe) {\n const s = globePixelsToTileUnits(transform.zoom, coord.canonical) * transform._pixelsPerMercatorPixel;\n extrudeScale = Float32Array.from([s, 0, 0, s]);\n } else {\n extrudeScale = transform.calculatePixelsToTileUnitsMatrix(tile);\n }\n } else {\n extrudeScale = new Float32Array([\n transform.pixelsToGLUnits[0],\n 0,\n 0,\n transform.pixelsToGLUnits[1]]);\n }\n\n const values = {\n 'u_camera_to_center_distance': transform.cameraToCenterDistance,\n 'u_matrix': painter.translatePosMatrix(\n coord.projMatrix,\n tile,\n layer.paint.get('circle-translate'),\n layer.paint.get('circle-translate-anchor')),\n 'u_device_pixel_ratio': browser.devicePixelRatio,\n 'u_extrude_scale': extrudeScale,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_up_dir': [0, 0, 0]\n };\n\n if (isGlobe) {\n values['u_inv_rot_matrix'] = invMatrix;\n values['u_merc_center'] = mercatorCenter;\n values['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n values['u_zoom_transition'] = globeToMercatorTransition(transform.zoom);\n const x = mercatorCenter[0] * EXTENT;\n const y = mercatorCenter[1] * EXTENT;\n values['u_up_dir'] = (transform.projection.upVector(new CanonicalTileID(0, 0, 0), x, y): any);\n }\n\n return values;\n};\n\nconst circleDefinesValues = (layer: CircleStyleLayer): CircleDefinesType[] => {\n const values = [];\n if (layer.paint.get('circle-pitch-alignment') === 'map') values.push('PITCH_WITH_MAP');\n if (layer.paint.get('circle-pitch-scale') === 'map') values.push('SCALE_WITH_MAP');\n\n return values;\n};\n\nexport {circleUniforms, circleUniformValues, circleDefinesValues};\n","// @flow\n\nimport {\n Uniform1f,\n Uniform2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport EXTENT from '../../data/extent.js';\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Transform from '../../geo/transform.js';\nimport type Tile from '../../source/tile.js';\nimport type Projection from '../../geo/projection/projection.js';\n\nexport type CollisionUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_extrude_scale': Uniform2f\n|};\n\nexport type CollisionCircleUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_inv_matrix': UniformMatrix4f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_viewport_size': Uniform2f\n|};\n\nconst collisionUniforms = (context: Context): CollisionUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_camera_to_center_distance': new Uniform1f(context),\n 'u_extrude_scale': new Uniform2f(context)\n});\n\nconst collisionCircleUniforms = (context: Context): CollisionCircleUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_inv_matrix': new UniformMatrix4f(context),\n 'u_camera_to_center_distance': new Uniform1f(context),\n 'u_viewport_size': new Uniform2f(context)\n});\n\nconst collisionUniformValues = (\n matrix: Float32Array,\n transform: Transform,\n tile: Tile,\n projection: Projection\n): UniformValues => {\n const pixelRatio = EXTENT / tile.tileSize;\n\n return {\n 'u_matrix': matrix,\n 'u_camera_to_center_distance': transform.getCameraToCenterDistance(projection),\n 'u_extrude_scale': [transform.pixelsToGLUnits[0] / pixelRatio,\n transform.pixelsToGLUnits[1] / pixelRatio]\n };\n};\n\nconst collisionCircleUniformValues = (\n matrix: Float32Array,\n invMatrix: Float32Array,\n transform: Transform,\n projection: Projection\n): UniformValues => {\n return {\n 'u_matrix': matrix,\n 'u_inv_matrix': invMatrix,\n 'u_camera_to_center_distance': transform.getCameraToCenterDistance(projection),\n 'u_viewport_size': [transform.width, transform.height]\n };\n};\n\nexport {collisionUniforms, collisionUniformValues, collisionCircleUniforms, collisionCircleUniformValues};\n","// @flow\n\nimport {\n UniformColor,\n UniformMatrix4f,\n Uniform1i,\n Uniform1f\n} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Color from '../../style-spec/util/color.js';\n\nexport type DebugUniformsType = {|\n 'u_color': UniformColor,\n 'u_matrix': UniformMatrix4f,\n 'u_overlay': Uniform1i,\n 'u_overlay_scale': Uniform1f\n|};\n\nconst debugUniforms = (context: Context): DebugUniformsType => ({\n 'u_color': new UniformColor(context),\n 'u_matrix': new UniformMatrix4f(context),\n 'u_overlay': new Uniform1i(context),\n 'u_overlay_scale': new Uniform1f(context),\n});\n\nconst debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues => ({\n 'u_matrix': matrix,\n 'u_color': color,\n 'u_overlay': 0,\n 'u_overlay_scale': scaleRatio\n});\n\nexport {debugUniforms, debugUniformValues};\n\nexport type DebugDefinesType = 'PROJECTION_GLOBE_VIEW';\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport pixelsToTileUnits from '../../source/pixels_to_tile_units.js';\n\nimport type Context from '../../gl/context.js';\nimport type Tile from '../../source/tile.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Painter from '../painter.js';\nimport type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer.js';\nimport {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport {mat4} from 'gl-matrix';\nimport {globeToMercatorTransition, globePixelsToTileUnits} from '../../geo/projection/globe_util.js';\nimport EXTENT from '../../data/extent.js';\n\nexport type HeatmapUniformsType = {|\n 'u_extrude_scale': Uniform1f,\n 'u_intensity': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_up_dir': Uniform3f,\n|};\n\nexport type HeatmapTextureUniformsType = {|\n 'u_image': Uniform1i,\n 'u_color_ramp': Uniform1i,\n 'u_opacity': Uniform1f\n|};\n\nconst heatmapUniforms = (context: Context): HeatmapUniformsType => ({\n 'u_extrude_scale': new Uniform1f(context),\n 'u_intensity': new Uniform1f(context),\n 'u_matrix': new UniformMatrix4f(context),\n 'u_inv_rot_matrix': new UniformMatrix4f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_tile_id': new Uniform3f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_up_dir': new Uniform3f(context)\n});\n\nconst heatmapTextureUniforms = (context: Context): HeatmapTextureUniformsType => ({\n 'u_image': new Uniform1i(context),\n 'u_color_ramp': new Uniform1i(context),\n 'u_opacity': new Uniform1f(context)\n});\n\nconst identityMatrix = mat4.create();\n\nconst heatmapUniformValues = (\n painter: Painter,\n coord: OverscaledTileID,\n tile: Tile,\n invMatrix: Float32Array,\n mercatorCenter: [number, number],\n zoom: number,\n intensity: number\n): UniformValues => {\n const transform = painter.transform;\n const isGlobe = transform.projection.name === 'globe';\n const extrudeScale = isGlobe ? globePixelsToTileUnits(transform.zoom, coord.canonical) * transform._pixelsPerMercatorPixel : pixelsToTileUnits(tile, 1, zoom);\n\n const values = {\n 'u_matrix': coord.projMatrix,\n 'u_extrude_scale': extrudeScale,\n 'u_intensity': intensity,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_up_dir': [0, 0, 0],\n };\n\n if (isGlobe) {\n values['u_inv_rot_matrix'] = invMatrix;\n values['u_merc_center'] = mercatorCenter;\n values['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n values['u_zoom_transition'] = globeToMercatorTransition(transform.zoom);\n const x = mercatorCenter[0] * EXTENT;\n const y = mercatorCenter[1] * EXTENT;\n values['u_up_dir'] = (transform.projection.upVector(new CanonicalTileID(0, 0, 0), x, y): any);\n }\n\n return values;\n};\n\nconst heatmapTextureUniformValues = (\n painter: Painter,\n layer: HeatmapStyleLayer,\n textureUnit: number,\n colorRampUnit: number\n): UniformValues => {\n return {\n 'u_image': textureUnit,\n 'u_color_ramp': colorRampUnit,\n 'u_opacity': layer.paint.get('heatmap-opacity')\n };\n};\n\nexport {\n heatmapUniforms,\n heatmapTextureUniforms,\n heatmapUniformValues,\n heatmapTextureUniformValues\n};\n\nexport type HeatmapDefinesType = 'PROJECTION_GLOBE_VIEW';\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n UniformMatrix2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport pixelsToTileUnits from '../../source/pixels_to_tile_units.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Transform from '../../geo/transform.js';\nimport type Tile from '../../source/tile.js';\nimport type LineStyleLayer from '../../style/style_layer/line_style_layer.js';\nimport type Painter from '../painter.js';\n\nexport type LineUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_pixels_to_tile_units': UniformMatrix2f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_units_to_pixels': Uniform2f,\n 'u_dash_image': Uniform1i,\n 'u_gradient_image': Uniform1i,\n 'u_image_height': Uniform1f,\n 'u_texsize': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f,\n 'u_alpha_discard_threshold': Uniform1f,\n 'u_trim_offset': Uniform2f\n|};\n\nexport type LinePatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_texsize': Uniform2f,\n 'u_pixels_to_tile_units': UniformMatrix2f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_units_to_pixels': Uniform2f,\n 'u_image': Uniform1i,\n 'u_tile_units_to_pixels': Uniform1f,\n 'u_alpha_discard_threshold': Uniform1f\n|};\n\nexport type LineDefinesType = 'RENDER_LINE_GRADIENT' | 'RENDER_LINE_DASH' | 'RENDER_LINE_ALPHA_DISCARD' | 'RENDER_LINE_TRIM_OFFSET';\n\nconst lineUniforms = (context: Context): LineUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_pixels_to_tile_units': new UniformMatrix2f(context),\n 'u_device_pixel_ratio': new Uniform1f(context),\n 'u_units_to_pixels': new Uniform2f(context),\n 'u_dash_image': new Uniform1i(context),\n 'u_gradient_image': new Uniform1i(context),\n 'u_image_height': new Uniform1f(context),\n 'u_texsize': new Uniform2f(context),\n 'u_tile_units_to_pixels': new Uniform1f(context),\n 'u_alpha_discard_threshold': new Uniform1f(context),\n 'u_trim_offset': new Uniform2f(context)\n});\n\nconst linePatternUniforms = (context: Context): LinePatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_texsize': new Uniform2f(context),\n 'u_pixels_to_tile_units': new UniformMatrix2f(context),\n 'u_device_pixel_ratio': new Uniform1f(context),\n 'u_image': new Uniform1i(context),\n 'u_units_to_pixels': new Uniform2f(context),\n 'u_tile_units_to_pixels': new Uniform1f(context),\n 'u_alpha_discard_threshold': new Uniform1f(context)\n});\n\nconst lineUniformValues = (\n painter: Painter,\n tile: Tile,\n layer: LineStyleLayer,\n matrix: ?Float32Array,\n imageHeight: number,\n pixelRatio: number,\n trimOffset: [number, number],\n): UniformValues => {\n const transform = painter.transform;\n const pixelsToTileUnits = transform.calculatePixelsToTileUnitsMatrix(tile);\n return {\n 'u_matrix': calculateMatrix(painter, tile, layer, matrix),\n 'u_pixels_to_tile_units': pixelsToTileUnits,\n 'u_device_pixel_ratio': pixelRatio,\n 'u_units_to_pixels': [\n 1 / transform.pixelsToGLUnits[0],\n 1 / transform.pixelsToGLUnits[1]\n ],\n 'u_dash_image': 0,\n 'u_gradient_image': 1,\n 'u_image_height': imageHeight,\n 'u_texsize': hasDash(layer) ? tile.lineAtlasTexture.size : [0, 0],\n 'u_tile_units_to_pixels': calculateTileRatio(tile, painter.transform),\n 'u_alpha_discard_threshold': 0.0,\n 'u_trim_offset': trimOffset\n };\n};\n\nconst linePatternUniformValues = (\n painter: Painter,\n tile: Tile,\n layer: LineStyleLayer,\n matrix: ?Float32Array,\n pixelRatio: number\n): UniformValues => {\n const transform = painter.transform;\n return {\n 'u_matrix': calculateMatrix(painter, tile, layer, matrix),\n 'u_texsize': tile.imageAtlasTexture.size,\n // camera zoom ratio\n 'u_pixels_to_tile_units': transform.calculatePixelsToTileUnitsMatrix(tile),\n 'u_device_pixel_ratio': pixelRatio,\n 'u_image': 0,\n 'u_tile_units_to_pixels': calculateTileRatio(tile, transform),\n 'u_units_to_pixels': [\n 1 / transform.pixelsToGLUnits[0],\n 1 / transform.pixelsToGLUnits[1]\n ],\n 'u_alpha_discard_threshold': 0.0\n };\n};\n\nfunction calculateTileRatio(tile: Tile, transform: Transform) {\n return 1 / pixelsToTileUnits(tile, 1, transform.tileZoom);\n}\n\nfunction calculateMatrix(painter: Painter, tile: Tile, layer: LineStyleLayer, matrix: ?Float32Array) {\n return painter.translatePosMatrix(\n matrix ? matrix : tile.tileID.projMatrix,\n tile,\n layer.paint.get('line-translate'),\n layer.paint.get('line-translate-anchor')\n );\n}\n\nconst lineDefinesValues = (layer: LineStyleLayer): LineDefinesType[] => {\n const values = [];\n if (hasDash(layer)) values.push('RENDER_LINE_DASH');\n if (layer.paint.get('line-gradient')) values.push('RENDER_LINE_GRADIENT');\n\n const trimOffset = layer.paint.get('line-trim-offset');\n if (trimOffset[0] !== 0 || trimOffset[1] !== 0) {\n values.push('RENDER_LINE_TRIM_OFFSET');\n }\n\n const hasPattern = layer.paint.get('line-pattern').constantOr((1: any));\n const hasOpacity = layer.paint.get('line-opacity').constantOr(1.0) !== 1.0;\n if (!hasPattern && hasOpacity) {\n values.push('RENDER_LINE_ALPHA_DISCARD');\n }\n return values;\n};\n\nfunction hasDash(layer: LineStyleLayer) {\n const dashPropertyValue = layer.paint.get('line-dasharray').value;\n return dashPropertyValue.value || dashPropertyValue.kind !== \"constant\";\n}\n\nexport {\n lineUniforms,\n linePatternUniforms,\n lineUniformValues,\n linePatternUniformValues,\n lineDefinesValues\n};\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type RasterStyleLayer from '../../style/style_layer/raster_style_layer.js';\n\nexport type RasterUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_tl_parent': Uniform2f,\n 'u_scale_parent': Uniform1f,\n 'u_fade_t': Uniform1f,\n 'u_opacity': Uniform1f,\n 'u_image0': Uniform1i,\n 'u_image1': Uniform1i,\n 'u_brightness_low': Uniform1f,\n 'u_brightness_high': Uniform1f,\n 'u_saturation_factor': Uniform1f,\n 'u_contrast_factor': Uniform1f,\n 'u_spin_weights': Uniform3f,\n 'u_perspective_transform': Uniform2f\n|};\n\nconst rasterUniforms = (context: Context): RasterUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_tl_parent': new Uniform2f(context),\n 'u_scale_parent': new Uniform1f(context),\n 'u_fade_t': new Uniform1f(context),\n 'u_opacity': new Uniform1f(context),\n 'u_image0': new Uniform1i(context),\n 'u_image1': new Uniform1i(context),\n 'u_brightness_low': new Uniform1f(context),\n 'u_brightness_high': new Uniform1f(context),\n 'u_saturation_factor': new Uniform1f(context),\n 'u_contrast_factor': new Uniform1f(context),\n 'u_spin_weights': new Uniform3f(context),\n 'u_perspective_transform': new Uniform2f(context)\n});\n\nconst rasterUniformValues = (\n matrix: Float32Array,\n parentTL: [number, number],\n parentScaleBy: number,\n fade: {mix: number, opacity: number},\n layer: RasterStyleLayer,\n perspectiveTransform: [number, number]\n): UniformValues => ({\n 'u_matrix': matrix,\n 'u_tl_parent': parentTL,\n 'u_scale_parent': parentScaleBy,\n 'u_fade_t': fade.mix,\n 'u_opacity': fade.opacity * layer.paint.get('raster-opacity'),\n 'u_image0': 0,\n 'u_image1': 1,\n 'u_brightness_low': layer.paint.get('raster-brightness-min'),\n 'u_brightness_high': layer.paint.get('raster-brightness-max'),\n 'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')),\n 'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')),\n 'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate')),\n 'u_perspective_transform': perspectiveTransform\n});\n\nfunction spinWeights(angle: number) {\n angle *= Math.PI / 180;\n const s = Math.sin(angle);\n const c = Math.cos(angle);\n return [\n (2 * c + 1) / 3,\n (-Math.sqrt(3) * s - c + 1) / 3,\n (Math.sqrt(3) * s - c + 1) / 3\n ];\n}\n\nfunction contrastFactor(contrast: number) {\n return contrast > 0 ?\n 1 / (1 - contrast) :\n 1 + contrast;\n}\n\nfunction saturationFactor(saturation: number) {\n return saturation > 0 ?\n 1 - 1 / (1.001 - saturation) :\n -saturation;\n}\n\nexport {rasterUniforms, rasterUniformValues};\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {mat4} from 'gl-matrix';\nimport {extend} from '../../util/util.js';\nimport browser from '../../util/browser.js';\nimport {OverscaledTileID} from '../../source/tile_id.js';\nimport type Context from '../../gl/context.js';\nimport type Painter from '../painter.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport {globeECEFOrigin} from '../../geo/projection/globe_util.js';\nimport type Projection from '../../geo/projection/projection.js';\n\nimport type {InterpolatedSize} from '../../symbol/symbol_size.js';\n\nexport type SymbolIconUniformsType = {|\n 'u_is_size_zoom_constant': Uniform1i,\n 'u_is_size_feature_constant': Uniform1i,\n 'u_size_t': Uniform1f,\n 'u_size': Uniform1f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_rotate_symbol': Uniform1i,\n 'u_aspect_ratio': Uniform1f,\n 'u_fade_change': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_label_plane_matrix': UniformMatrix4f,\n 'u_coord_matrix': UniformMatrix4f,\n 'u_is_text': Uniform1i,\n 'u_pitch_with_map': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_camera_forward': Uniform3f,\n 'u_tile_matrix': UniformMatrix4f,\n 'u_up_vector': Uniform3f,\n 'u_ecef_origin': Uniform3f,\n 'u_texture': Uniform1i\n|};\n\nexport type SymbolSDFUniformsType = {|\n 'u_is_size_zoom_constant': Uniform1i,\n 'u_is_size_feature_constant': Uniform1i,\n 'u_size_t': Uniform1f,\n 'u_size': Uniform1f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_rotate_symbol': Uniform1i,\n 'u_aspect_ratio': Uniform1f,\n 'u_fade_change': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_label_plane_matrix': UniformMatrix4f,\n 'u_coord_matrix': UniformMatrix4f,\n 'u_is_text': Uniform1i,\n 'u_pitch_with_map': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_texture': Uniform1i,\n 'u_gamma_scale': Uniform1f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_camera_forward': Uniform3f,\n 'u_tile_matrix': UniformMatrix4f,\n 'u_up_vector': Uniform3f,\n 'u_ecef_origin': Uniform3f,\n 'u_is_halo': Uniform1i\n|};\n\nexport type symbolTextAndIconUniformsType = {|\n 'u_is_size_zoom_constant': Uniform1i,\n 'u_is_size_feature_constant': Uniform1i,\n 'u_size_t': Uniform1f,\n 'u_size': Uniform1f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_rotate_symbol': Uniform1i,\n 'u_aspect_ratio': Uniform1f,\n 'u_fade_change': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_label_plane_matrix': UniformMatrix4f,\n 'u_coord_matrix': UniformMatrix4f,\n 'u_is_text': Uniform1i,\n 'u_pitch_with_map': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_texsize_icon': Uniform2f,\n 'u_texture': Uniform1i,\n 'u_texture_icon': Uniform1i,\n 'u_gamma_scale': Uniform1f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_is_halo': Uniform1i\n|};\n\nexport type SymbolDefinesType = 'PITCH_WITH_MAP_TERRAIN';\n\nconst symbolIconUniforms = (context: Context): SymbolIconUniformsType => ({\n 'u_is_size_zoom_constant': new Uniform1i(context),\n 'u_is_size_feature_constant': new Uniform1i(context),\n 'u_size_t': new Uniform1f(context),\n 'u_size': new Uniform1f(context),\n 'u_camera_to_center_distance': new Uniform1f(context),\n 'u_rotate_symbol': new Uniform1i(context),\n 'u_aspect_ratio': new Uniform1f(context),\n 'u_fade_change': new Uniform1f(context),\n 'u_matrix': new UniformMatrix4f(context),\n 'u_label_plane_matrix': new UniformMatrix4f(context),\n 'u_coord_matrix': new UniformMatrix4f(context),\n 'u_is_text': new Uniform1i(context),\n 'u_pitch_with_map': new Uniform1i(context),\n 'u_texsize': new Uniform2f(context),\n 'u_tile_id': new Uniform3f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_inv_rot_matrix': new UniformMatrix4f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_camera_forward': new Uniform3f(context),\n 'u_tile_matrix': new UniformMatrix4f(context),\n 'u_up_vector': new Uniform3f(context),\n 'u_ecef_origin': new Uniform3f(context),\n 'u_texture': new Uniform1i(context)\n});\n\nconst symbolSDFUniforms = (context: Context): SymbolSDFUniformsType => ({\n 'u_is_size_zoom_constant': new Uniform1i(context),\n 'u_is_size_feature_constant': new Uniform1i(context),\n 'u_size_t': new Uniform1f(context),\n 'u_size': new Uniform1f(context),\n 'u_camera_to_center_distance': new Uniform1f(context),\n 'u_rotate_symbol': new Uniform1i(context),\n 'u_aspect_ratio': new Uniform1f(context),\n 'u_fade_change': new Uniform1f(context),\n 'u_matrix': new UniformMatrix4f(context),\n 'u_label_plane_matrix': new UniformMatrix4f(context),\n 'u_coord_matrix': new UniformMatrix4f(context),\n 'u_is_text': new Uniform1i(context),\n 'u_pitch_with_map': new Uniform1i(context),\n 'u_texsize': new Uniform2f(context),\n 'u_texture': new Uniform1i(context),\n 'u_gamma_scale': new Uniform1f(context),\n 'u_device_pixel_ratio': new Uniform1f(context),\n 'u_tile_id': new Uniform3f(context),\n 'u_zoom_transition': new Uniform1f(context),\n 'u_inv_rot_matrix': new UniformMatrix4f(context),\n 'u_merc_center': new Uniform2f(context),\n 'u_camera_forward': new Uniform3f(context),\n 'u_tile_matrix': new UniformMatrix4f(context),\n 'u_up_vector': new Uniform3f(context),\n 'u_ecef_origin': new Uniform3f(context),\n 'u_is_halo': new Uniform1i(context)\n});\n\nconst symbolTextAndIconUniforms = (context: Context): symbolTextAndIconUniformsType => ({\n 'u_is_size_zoom_constant': new Uniform1i(context),\n 'u_is_size_feature_constant': new Uniform1i(context),\n 'u_size_t': new Uniform1f(context),\n 'u_size': new Uniform1f(context),\n 'u_camera_to_center_distance': new Uniform1f(context),\n 'u_rotate_symbol': new Uniform1i(context),\n 'u_aspect_ratio': new Uniform1f(context),\n 'u_fade_change': new Uniform1f(context),\n 'u_matrix': new UniformMatrix4f(context),\n 'u_label_plane_matrix': new UniformMatrix4f(context),\n 'u_coord_matrix': new UniformMatrix4f(context),\n 'u_is_text': new Uniform1i(context),\n 'u_pitch_with_map': new Uniform1i(context),\n 'u_texsize': new Uniform2f(context),\n 'u_texsize_icon': new Uniform2f(context),\n 'u_texture': new Uniform1i(context),\n 'u_texture_icon': new Uniform1i(context),\n 'u_gamma_scale': new Uniform1f(context),\n 'u_device_pixel_ratio': new Uniform1f(context),\n 'u_is_halo': new Uniform1i(context)\n});\n\nconst identityMatrix = mat4.create();\n\nconst symbolIconUniformValues = (\n functionType: string,\n size: ?InterpolatedSize,\n rotateInShader: boolean,\n pitchWithMap: boolean,\n painter: Painter,\n matrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n isText: boolean,\n texSize: [number, number],\n coord: OverscaledTileID,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array,\n upVector: [number, number, number],\n projection: Projection\n): UniformValues => {\n const transform = painter.transform;\n\n const values = {\n 'u_is_size_zoom_constant': +(functionType === 'constant' || functionType === 'source'),\n 'u_is_size_feature_constant': +(functionType === 'constant' || functionType === 'camera'),\n 'u_size_t': size ? size.uSizeT : 0,\n 'u_size': size ? size.uSize : 0,\n 'u_camera_to_center_distance': transform.cameraToCenterDistance,\n 'u_rotate_symbol': +rotateInShader,\n 'u_aspect_ratio': transform.width / transform.height,\n 'u_fade_change': painter.options.fadeDuration ? painter.symbolFadeChange : 1,\n 'u_matrix': matrix,\n 'u_label_plane_matrix': labelPlaneMatrix,\n 'u_coord_matrix': glCoordMatrix,\n 'u_is_text': +isText,\n 'u_pitch_with_map': +pitchWithMap,\n 'u_texsize': texSize,\n 'u_texture': 0,\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_camera_forward': [0, 0, 0],\n 'u_ecef_origin': [0, 0, 0],\n 'u_tile_matrix': identityMatrix,\n 'u_up_vector': [0, -1, 0]\n };\n\n if (projection.name === 'globe') {\n values['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n values['u_zoom_transition'] = zoomTransition;\n values['u_inv_rot_matrix'] = invMatrix;\n values['u_merc_center'] = mercatorCenter;\n values['u_camera_forward'] = ((transform._camera.forward(): any): [number, number, number]);\n values['u_ecef_origin'] = globeECEFOrigin(transform.globeMatrix, coord.toUnwrapped());\n values['u_tile_matrix'] = Float32Array.from(transform.globeMatrix);\n values['u_up_vector'] = upVector;\n }\n\n return values;\n};\n\nconst symbolSDFUniformValues = (\n functionType: string,\n size: ?InterpolatedSize,\n rotateInShader: boolean,\n pitchWithMap: boolean,\n painter: Painter,\n matrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n isText: boolean,\n texSize: [number, number],\n isHalo: boolean,\n coord: OverscaledTileID,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array,\n upVector: [number, number, number],\n projection: Projection\n): UniformValues => {\n return extend(symbolIconUniformValues(functionType, size, rotateInShader,\n pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText,\n texSize, coord, zoomTransition, mercatorCenter, invMatrix, upVector, projection), {\n 'u_gamma_scale': pitchWithMap ? painter.transform.cameraToCenterDistance * Math.cos(painter.terrain ? 0 : painter.transform._pitch) : 1,\n 'u_device_pixel_ratio': browser.devicePixelRatio,\n 'u_is_halo': +isHalo\n });\n};\n\nconst symbolTextAndIconUniformValues = (\n functionType: string,\n size: ?InterpolatedSize,\n rotateInShader: boolean,\n pitchWithMap: boolean,\n painter: Painter,\n matrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n texSizeSDF: [number, number],\n texSizeIcon: [number, number],\n coord: OverscaledTileID,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array,\n upVector: [number, number, number],\n projection: Projection\n): UniformValues => {\n return extend(symbolSDFUniformValues(functionType, size, rotateInShader,\n pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, true, texSizeSDF,\n true, coord, zoomTransition, mercatorCenter, invMatrix, upVector, projection), {\n 'u_texsize_icon': texSizeIcon,\n 'u_texture_icon': 1\n });\n};\n\nexport {symbolIconUniforms, symbolSDFUniforms, symbolIconUniformValues, symbolSDFUniformValues, symbolTextAndIconUniformValues, symbolTextAndIconUniforms};\n","// @flow\n\nimport {bgPatternUniformValues} from './pattern.js';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n UniformColor,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {extend} from '../../util/util.js';\n\nimport type Painter from '../painter.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\nimport type Color from '../../style-spec/util/color.js';\nimport type {OverscaledTileID} from '../../source/tile_id.js';\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type BackgroundUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_opacity': Uniform1f,\n 'u_color': UniformColor\n|};\n\nexport type BackgroundPatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_opacity': Uniform1f,\n // pattern uniforms:\n 'u_image': Uniform1i,\n 'u_pattern_tl': Uniform2f,\n 'u_pattern_br': Uniform2f,\n 'u_texsize': Uniform2f,\n 'u_pattern_size': Uniform2f,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f\n|};\n\nconst backgroundUniforms = (context: Context): BackgroundUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_opacity': new Uniform1f(context),\n 'u_color': new UniformColor(context)\n});\n\nconst backgroundPatternUniforms = (context: Context): BackgroundPatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_opacity': new Uniform1f(context),\n 'u_image': new Uniform1i(context),\n 'u_pattern_tl': new Uniform2f(context),\n 'u_pattern_br': new Uniform2f(context),\n 'u_texsize': new Uniform2f(context),\n 'u_pattern_size': new Uniform2f(context),\n 'u_pixel_coord_upper': new Uniform2f(context),\n 'u_pixel_coord_lower': new Uniform2f(context),\n 'u_tile_units_to_pixels': new Uniform1f(context)\n});\n\nconst backgroundUniformValues = (\n matrix: Float32Array,\n opacity: number,\n color: Color\n): UniformValues => ({\n 'u_matrix': matrix,\n 'u_opacity': opacity,\n 'u_color': color\n});\n\nconst backgroundPatternUniformValues = (\n matrix: Float32Array,\n opacity: number,\n painter: Painter,\n image: ResolvedImage,\n tile: {tileID: OverscaledTileID, tileSize: number}\n): UniformValues => extend(\n bgPatternUniformValues(image, painter, tile),\n {\n 'u_matrix': matrix,\n 'u_opacity': opacity\n }\n);\n\nexport {\n backgroundUniforms,\n backgroundPatternUniforms,\n backgroundUniformValues,\n backgroundPatternUniformValues\n};\n","// @flow\n\nimport type {CircleDefinesType} from './circle_program.js';\nimport type {SymbolDefinesType} from './symbol_program.js';\nimport type {LineDefinesType} from './line_program.js';\nimport {fillExtrusionUniforms, fillExtrusionPatternUniforms} from './fill_extrusion_program.js';\nimport {fillUniforms, fillPatternUniforms, fillOutlineUniforms, fillOutlinePatternUniforms} from './fill_program.js';\nimport {circleUniforms} from './circle_program.js';\nimport {collisionUniforms, collisionCircleUniforms} from './collision_program.js';\nimport {debugUniforms} from './debug_program.js';\nimport {clippingMaskUniforms} from './clipping_mask_program.js';\nimport {heatmapUniforms, heatmapTextureUniforms} from './heatmap_program.js';\nimport {hillshadeUniforms, hillshadePrepareUniforms} from './hillshade_program.js';\nimport {lineUniforms, linePatternUniforms} from './line_program.js';\nimport {rasterUniforms} from './raster_program.js';\nimport {symbolIconUniforms, symbolSDFUniforms, symbolTextAndIconUniforms} from './symbol_program.js';\nimport {backgroundUniforms, backgroundPatternUniforms} from './background_program.js';\nimport {terrainRasterUniforms} from '../../terrain/terrain_raster_program.js';\nimport {skyboxUniforms, skyboxGradientUniforms} from './skybox_program.js';\nimport {skyboxCaptureUniforms} from './skybox_capture_program.js';\nimport {globeRasterUniforms, atmosphereUniforms} from '../../terrain/globe_raster_program.js';\nimport type {HeatmapDefinesType} from './heatmap_program.js';\nimport type {DebugDefinesType} from './debug_program.js';\nimport type {GlobeDefinesType} from '../../terrain/globe_raster_program.js';\n\nexport type DynamicDefinesType = CircleDefinesType | SymbolDefinesType | LineDefinesType | HeatmapDefinesType | DebugDefinesType | GlobeDefinesType;\n\nexport const programUniforms = {\n fillExtrusion: fillExtrusionUniforms,\n fillExtrusionPattern: fillExtrusionPatternUniforms,\n fill: fillUniforms,\n fillPattern: fillPatternUniforms,\n fillOutline: fillOutlineUniforms,\n fillOutlinePattern: fillOutlinePatternUniforms,\n circle: circleUniforms,\n collisionBox: collisionUniforms,\n collisionCircle: collisionCircleUniforms,\n debug: debugUniforms,\n clippingMask: clippingMaskUniforms,\n heatmap: heatmapUniforms,\n heatmapTexture: heatmapTextureUniforms,\n hillshade: hillshadeUniforms,\n hillshadePrepare: hillshadePrepareUniforms,\n line: lineUniforms,\n linePattern: linePatternUniforms,\n raster: rasterUniforms,\n symbolIcon: symbolIconUniforms,\n symbolSDF: symbolSDFUniforms,\n symbolTextAndIcon: symbolTextAndIconUniforms,\n background: backgroundUniforms,\n backgroundPattern: backgroundPatternUniforms,\n terrainRaster: terrainRasterUniforms,\n terrainDepth: terrainRasterUniforms,\n skybox: skyboxUniforms,\n skyboxGradient: skyboxGradientUniforms,\n skyboxCapture: skyboxCaptureUniforms,\n globeRaster: globeRasterUniforms,\n globeAtmosphere: atmosphereUniforms,\n};\n","// @flow\n\nimport {\n UniformMatrix4f,\n Uniform1i,\n Uniform3f,\n Uniform1f\n} from '../uniform_binding.js';\nimport {degToRad} from '../../util/util.js';\n\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\n\nexport type SkyboxUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_sun_direction': Uniform3f,\n 'u_cubemap': Uniform1i,\n 'u_opacity': Uniform1f,\n 'u_temporal_offset': Uniform1f\n|};\n\nexport type SkyboxGradientlUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_color_ramp': Uniform1i,\n 'u_center_direction': Uniform3f,\n 'u_radius': Uniform1f,\n 'u_opacity': Uniform1f,\n 'u_temporal_offset': Uniform1f,\n|};\n\nconst skyboxUniforms = (context: Context): SkyboxUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_sun_direction': new Uniform3f(context),\n 'u_cubemap': new Uniform1i(context),\n 'u_opacity': new Uniform1f(context),\n 'u_temporal_offset': new Uniform1f(context)\n\n});\n\nconst skyboxUniformValues = (\n matrix: Float32Array,\n sunDirection: [number, number, number],\n cubemap: number,\n opacity: number,\n temporalOffset: number\n): UniformValues => ({\n 'u_matrix': matrix,\n 'u_sun_direction': sunDirection,\n 'u_cubemap': cubemap,\n 'u_opacity': opacity,\n 'u_temporal_offset': temporalOffset\n});\n\nconst skyboxGradientUniforms = (context: Context): SkyboxGradientlUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context),\n 'u_color_ramp': new Uniform1i(context),\n // radial gradient uniforms\n 'u_center_direction': new Uniform3f(context),\n 'u_radius': new Uniform1f(context),\n 'u_opacity': new Uniform1f(context),\n 'u_temporal_offset': new Uniform1f(context)\n});\n\nconst skyboxGradientUniformValues = (\n matrix: Float32Array,\n centerDirection: [number, number, number],\n radius: number, //degrees\n opacity: number,\n temporalOffset: number\n): UniformValues => {\n return {\n 'u_matrix': matrix,\n 'u_color_ramp': 0,\n 'u_center_direction': centerDirection,\n 'u_radius': degToRad(radius),\n 'u_opacity': opacity,\n 'u_temporal_offset': temporalOffset\n };\n};\n\nexport {\n skyboxUniforms,\n skyboxUniformValues,\n skyboxGradientUniforms,\n skyboxGradientUniformValues\n};\n","// @flow\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport {\n UniformMatrix3f,\n Uniform1f,\n Uniform3f,\n Uniform4f,\n} from '../uniform_binding.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\n\nexport type SkyboxCaptureUniformsType = {|\n 'u_matrix_3f': UniformMatrix3f,\n 'u_sun_direction': Uniform3f,\n 'u_sun_intensity': Uniform1f,\n 'u_color_tint_r': Uniform4f,\n 'u_color_tint_m': Uniform4f,\n 'u_luminance': Uniform1f,\n|};\n\nconst skyboxCaptureUniforms = (context: Context): SkyboxCaptureUniformsType => ({\n 'u_matrix_3f': new UniformMatrix3f(context),\n 'u_sun_direction': new Uniform3f(context),\n 'u_sun_intensity': new Uniform1f(context),\n 'u_color_tint_r': new Uniform4f(context),\n 'u_color_tint_m': new Uniform4f(context),\n 'u_luminance': new Uniform1f(context),\n});\n\nconst skyboxCaptureUniformValues = (\n matrix: Float32Array,\n sunDirection: [number, number, number],\n sunIntensity: number,\n atmosphereColor: Color,\n atmosphereHaloColor: Color\n): UniformValues => ({\n 'u_matrix_3f': matrix,\n 'u_sun_direction': sunDirection,\n 'u_sun_intensity': sunIntensity,\n 'u_color_tint_r': [\n atmosphereColor.r,\n atmosphereColor.g,\n atmosphereColor.b,\n atmosphereColor.a\n ],\n 'u_color_tint_m': [\n atmosphereHaloColor.r,\n atmosphereHaloColor.g,\n atmosphereHaloColor.b,\n atmosphereHaloColor.a\n ],\n 'u_luminance': 5e-5,\n});\n\nexport {\n skyboxCaptureUniforms,\n skyboxCaptureUniformValues,\n};\n","// @flow\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {collisionUniformValues, collisionCircleUniformValues} from './program/collision_program.js';\nimport {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types.js';\nimport {collisionCircleLayout} from '../data/bucket/symbol_attributes.js';\nimport SegmentVector from '../data/segment.js';\nimport {mat4} from 'gl-matrix';\nimport type Projection from '../geo/projection/projection.js';\nimport {getCollisionDebugTileProjectionMatrix} from '../geo/projection/projection_util.js';\nimport VertexBuffer from '../gl/vertex_buffer.js';\nimport IndexBuffer from '../gl/index_buffer.js';\n\nexport default drawCollisionDebug;\n\ntype TileBatch = {\n circleArray: Array,\n circleOffset: number,\n transform: Float32Array,\n invTransform: Float32Array,\n projection: Projection\n};\n\nlet quadTriangles: ?QuadTriangleArray;\n\nfunction drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: StyleLayer, coords: Array, translate: [number, number], translateAnchor: 'map' | 'viewport', isText: boolean) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n const program = painter.useProgram('collisionBox');\n const tileBatches: Array = [];\n let circleCount = 0;\n let circleOffset = 0;\n\n for (let i = 0; i < coords.length; i++) {\n const coord = coords[i];\n const tile = sourceCache.getTile(coord);\n const bucket: ?SymbolBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n\n const tileMatrix = getCollisionDebugTileProjectionMatrix(coord, bucket, tr);\n\n let posMatrix = tileMatrix;\n if (translate[0] !== 0 || translate[1] !== 0) {\n posMatrix = painter.translatePosMatrix(tileMatrix, tile, translate, translateAnchor);\n }\n const buffers = isText ? bucket.textCollisionBox : bucket.iconCollisionBox;\n // Get collision circle data of this bucket\n const circleArray: Array = bucket.collisionCircleArray;\n if (circleArray.length > 0) {\n // We need to know the projection matrix that was used for projecting collision circles to the screen.\n // This might vary between buckets as the symbol placement is a continous process. This matrix is\n // required for transforming points from previous screen space to the current one\n const invTransform = mat4.create();\n const transform = posMatrix;\n\n mat4.mul(invTransform, bucket.placementInvProjMatrix, tr.glCoordMatrix);\n mat4.mul(invTransform, invTransform, bucket.placementViewportMatrix);\n\n tileBatches.push({\n circleArray,\n circleOffset,\n transform,\n invTransform,\n projection: bucket.getProjection()\n });\n\n circleCount += circleArray.length / 4; // 4 values per circle\n circleOffset = circleCount;\n }\n if (!buffers) continue;\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n program.draw(context, gl.LINES,\n DepthMode.disabled, StencilMode.disabled,\n painter.colorModeForRenderPass(),\n CullFaceMode.disabled,\n collisionUniformValues(posMatrix, tr, tile, bucket.getProjection()),\n layer.id, buffers.layoutVertexBuffer, buffers.indexBuffer,\n buffers.segments, null, tr.zoom, null,\n [buffers.collisionVertexBuffer, buffers.collisionVertexBufferExt]);\n }\n\n if (!isText || !tileBatches.length) {\n return;\n }\n\n // Render collision circles\n const circleProgram = painter.useProgram('collisionCircle');\n\n // Construct vertex data\n const vertexData = new CollisionCircleLayoutArray();\n vertexData.resize(circleCount * 4);\n vertexData._trim();\n\n let vertexOffset = 0;\n\n for (const batch of tileBatches) {\n for (let i = 0; i < batch.circleArray.length / 4; i++) {\n const circleIdx = i * 4;\n const x = batch.circleArray[circleIdx + 0];\n const y = batch.circleArray[circleIdx + 1];\n const radius = batch.circleArray[circleIdx + 2];\n const collision = batch.circleArray[circleIdx + 3];\n\n // 4 floats per vertex, 4 vertices per quad\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 0);\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 1);\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 2);\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 3);\n }\n }\n if (!quadTriangles || quadTriangles.length < circleCount * 2) {\n quadTriangles = createQuadTriangles(circleCount);\n }\n\n const indexBuffer: IndexBuffer = context.createIndexBuffer(quadTriangles, true);\n const vertexBuffer: VertexBuffer = context.createVertexBuffer(vertexData, collisionCircleLayout.members, true);\n\n // Render batches\n for (const batch of tileBatches) {\n const uniforms = collisionCircleUniformValues(batch.transform, batch.invTransform, tr, batch.projection);\n\n circleProgram.draw(\n context,\n gl.TRIANGLES,\n DepthMode.disabled,\n StencilMode.disabled,\n painter.colorModeForRenderPass(),\n CullFaceMode.disabled,\n uniforms,\n layer.id,\n vertexBuffer,\n indexBuffer,\n SegmentVector.simpleSegment(0, batch.circleOffset * 2, batch.circleArray.length, batch.circleArray.length / 2),\n null,\n tr.zoom);\n }\n\n vertexBuffer.destroy();\n indexBuffer.destroy();\n}\n\nfunction createQuadTriangles(quadCount: number): QuadTriangleArray {\n const triCount = quadCount * 2;\n const array = new QuadTriangleArray();\n\n array.resize(triCount);\n array._trim();\n\n // Two triangles and 4 vertices per quad.\n for (let i = 0; i < triCount; i++) {\n const idx = i * 6;\n\n array.uint16[idx + 0] = i * 4 + 0;\n array.uint16[idx + 1] = i * 4 + 1;\n array.uint16[idx + 2] = i * 4 + 2;\n array.uint16[idx + 3] = i * 4 + 2;\n array.uint16[idx + 4] = i * 4 + 3;\n array.uint16[idx + 5] = i * 4 + 0;\n }\n\n return array;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport drawCollisionDebug from './draw_collision_debug.js';\n\nimport SegmentVector from '../data/segment.js';\nimport * as symbolProjection from '../symbol/projection.js';\nimport * as symbolSize from '../symbol/symbol_size.js';\nimport {mat4, vec3, vec4} from 'gl-matrix';\nconst identityMat4 = mat4.create();\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {addDynamicAttributes} from '../data/bucket/symbol_bucket.js';\nimport {getAnchorAlignment, WritingMode} from '../symbol/shaping.js';\nimport ONE_EM from '../symbol/one_em.js';\nimport {evaluateVariableOffset} from '../symbol/symbol_layout.js';\nimport Tile from '../source/tile.js';\nimport type Transform from '../geo/transform.js';\nimport {\n mercatorXfromLng,\n mercatorYfromLat\n} from '../geo/mercator_coordinate.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\nimport {\n symbolIconUniformValues,\n symbolSDFUniformValues,\n symbolTextAndIconUniformValues\n} from './program/symbol_program.js';\nimport {getSymbolTileProjectionMatrix} from '../geo/projection/projection_util.js';\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket.js';\nimport type Texture from '../render/texture.js';\nimport type ColorMode from '../gl/color_mode.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport type {UniformValues} from './uniform_binding.js';\nimport type {SymbolSDFUniformsType} from '../render/program/symbol_program.js';\nimport type {CrossTileID, VariableOffset} from '../symbol/placement.js';\nimport type {InterpolatedSize} from '../symbol/symbol_size';\n\nexport default drawSymbols;\n\ntype SymbolTileRenderState = {\n segments: SegmentVector,\n sortKey: number,\n state: {\n program: any,\n buffers: SymbolBuffers,\n uniformValues: any,\n atlasTexture: Texture,\n atlasTextureIcon: Texture | null,\n atlasInterpolation: any,\n atlasInterpolationIcon: any,\n isSDF: boolean,\n hasHalo: boolean,\n tile: Tile,\n labelPlaneMatrixInv: ?Float32Array\n }\n};\n\ntype Alignment = 'auto' | 'map' | 'viewport';\n\nfunction drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, variableOffsets: {[_: CrossTileID]: VariableOffset}) {\n if (painter.renderPass !== 'translucent') return;\n\n // Disable the stencil test so that labels aren't clipped to tile boundaries.\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const variablePlacement = layer.layout.get('text-variable-anchor');\n\n //Compute variable-offsets before painting since icons and text data positioning\n //depend on each other in this case.\n if (variablePlacement) {\n updateVariableAnchors(coords, painter, layer, sourceCache,\n layer.layout.get('text-rotation-alignment'),\n layer.layout.get('text-pitch-alignment'),\n variableOffsets\n );\n }\n\n if (layer.paint.get('icon-opacity').constantOr(1) !== 0) {\n drawLayerSymbols(painter, sourceCache, layer, coords, false,\n layer.paint.get('icon-translate'),\n layer.paint.get('icon-translate-anchor'),\n layer.layout.get('icon-rotation-alignment'),\n layer.layout.get('icon-pitch-alignment'),\n layer.layout.get('icon-keep-upright'),\n stencilMode, colorMode\n );\n }\n\n if (layer.paint.get('text-opacity').constantOr(1) !== 0) {\n drawLayerSymbols(painter, sourceCache, layer, coords, true,\n layer.paint.get('text-translate'),\n layer.paint.get('text-translate-anchor'),\n layer.layout.get('text-rotation-alignment'),\n layer.layout.get('text-pitch-alignment'),\n layer.layout.get('text-keep-upright'),\n stencilMode, colorMode\n );\n }\n\n if (sourceCache.map.showCollisionBoxes) {\n drawCollisionDebug(painter, sourceCache, layer, coords, layer.paint.get('text-translate'),\n layer.paint.get('text-translate-anchor'), true);\n drawCollisionDebug(painter, sourceCache, layer, coords, layer.paint.get('icon-translate'),\n layer.paint.get('icon-translate-anchor'), false);\n }\n}\n\nfunction computeGlobeCameraUp(transform: Transform): [number, number, number] {\n const viewMatrix = transform._camera.getWorldToCamera(transform.worldSize, 1);\n const viewToEcef = mat4.multiply([], viewMatrix, transform.globeMatrix);\n mat4.invert(viewToEcef, viewToEcef);\n\n const cameraUpVector = [0, 0, 0];\n const up = [0, 1, 0, 0];\n vec4.transformMat4(up, up, viewToEcef);\n cameraUpVector[0] = up[0];\n cameraUpVector[1] = up[1];\n cameraUpVector[2] = up[2];\n vec3.normalize(cameraUpVector, cameraUpVector);\n\n return cameraUpVector;\n}\n\nfunction calculateVariableRenderShift({width, height, anchor, textOffset, textScale}: VariableOffset, renderTextSize: number): Point {\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(anchor);\n const shiftX = -(horizontalAlign - 0.5) * width;\n const shiftY = -(verticalAlign - 0.5) * height;\n const variableOffset = evaluateVariableOffset(anchor, textOffset);\n return new Point(\n (shiftX / textScale + variableOffset[0]) * renderTextSize,\n (shiftY / textScale + variableOffset[1]) * renderTextSize\n );\n}\n\nfunction updateVariableAnchors(coords: Array, painter: Painter, layer: SymbolStyleLayer, sourceCache: SourceCache, rotationAlignment: Alignment, pitchAlignment: Alignment, variableOffsets: { [_: CrossTileID]: VariableOffset }) {\n const tr = painter.transform;\n const rotateWithMap = rotationAlignment === 'map';\n const pitchWithMap = pitchAlignment === 'map';\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n const bucket: SymbolBucket = (tile.getBucket(layer): any);\n if (!bucket || !bucket.text || !bucket.text.segments.get().length) {\n continue;\n }\n\n const sizeData = bucket.textSizeData;\n const size = symbolSize.evaluateSizeForZoom(sizeData, tr.zoom);\n const tileMatrix = getSymbolTileProjectionMatrix(coord, bucket.getProjection(), tr);\n\n const pixelsToTileUnits = tr.calculatePixelsToTileUnitsMatrix(tile);\n const labelPlaneMatrix = symbolProjection.getLabelPlaneMatrixForRendering(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), pixelsToTileUnits);\n const updateTextFitIcon = layer.layout.get('icon-text-fit') !== 'none' && bucket.hasIconData();\n\n if (size) {\n const tileScale = Math.pow(2, tr.zoom - tile.tileID.overscaledZ);\n updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,\n tr, labelPlaneMatrix, coord, tileScale, size, updateTextFitIcon);\n }\n }\n}\n\nfunction updateVariableAnchorsForBucket(bucket: SymbolBucket, rotateWithMap: boolean, pitchWithMap: boolean, variableOffsets: { [_: CrossTileID]: VariableOffset }, symbolSize: typeof symbolSize, transform: Transform, labelPlaneMatrix: Float32Array, coord: OverscaledTileID, tileScale: number, size: InterpolatedSize, updateTextFitIcon: boolean) {\n const placedSymbols = bucket.text.placedSymbolArray;\n const dynamicTextLayoutVertexArray = bucket.text.dynamicLayoutVertexArray;\n const dynamicIconLayoutVertexArray = bucket.icon.dynamicLayoutVertexArray;\n const placedTextShifts = {};\n const projection = bucket.getProjection();\n const tileMatrix = getSymbolTileProjectionMatrix(coord, projection, transform);\n const elevation = transform.elevation;\n const metersToTile = projection.upVectorScale(coord.canonical, transform.center.lat, transform.worldSize).metersToTile;\n\n dynamicTextLayoutVertexArray.clear();\n for (let s = 0; s < placedSymbols.length; s++) {\n const symbol = placedSymbols.get(s);\n const {tileAnchorX, tileAnchorY, numGlyphs} = symbol;\n const skipOrientation = bucket.allowVerticalPlacement && !symbol.placedOrientation;\n const variableOffset = (!symbol.hidden && symbol.crossTileID && !skipOrientation) ? variableOffsets[symbol.crossTileID] : null;\n\n if (!variableOffset) {\n // These symbols are from a justification that is not being used, or a label that wasn't placed\n // so we don't need to do the extra math to figure out what incremental shift to apply.\n symbolProjection.hideGlyphs(numGlyphs, dynamicTextLayoutVertexArray);\n\n } else {\n let dx = 0, dy = 0, dz = 0;\n if (elevation) {\n const h = elevation ? elevation.getAtTileOffset(coord, tileAnchorX, tileAnchorY) : 0.0;\n const [ux, uy, uz] = projection.upVector(coord.canonical, tileAnchorX, tileAnchorY);\n dx = h * ux * metersToTile;\n dy = h * uy * metersToTile;\n dz = h * uz * metersToTile;\n }\n let [x, y, z, w] = symbolProjection.project(\n symbol.projectedAnchorX + dx,\n symbol.projectedAnchorY + dy,\n symbol.projectedAnchorZ + dz,\n pitchWithMap ? tileMatrix : labelPlaneMatrix);\n\n const perspectiveRatio = symbolProjection.getPerspectiveRatio(transform.getCameraToCenterDistance(projection), w);\n let renderTextSize = symbolSize.evaluateSizeForFeature(bucket.textSizeData, size, symbol) * perspectiveRatio / ONE_EM;\n if (pitchWithMap) {\n // Go from size in pixels to equivalent size in tile units\n renderTextSize *= bucket.tilePixelRatio / tileScale;\n }\n\n const shift = calculateVariableRenderShift(variableOffset, renderTextSize);\n\n // Usual case is that we take the projected anchor and add the pixel-based shift\n // calculated above. In the (somewhat weird) case of pitch-aligned text, we add an equivalent\n // tile-unit based shift to the anchor before projecting to the label plane.\n if (pitchWithMap) {\n ({x, y, z} = projection.projectTilePoint(tileAnchorX + shift.x, tileAnchorY + shift.y, coord.canonical));\n [x, y, z] = symbolProjection.project(x + dx, y + dy, z + dz, labelPlaneMatrix);\n\n } else {\n if (rotateWithMap) shift._rotate(-transform.angle);\n x += shift.x;\n y += shift.y;\n z = 0;\n }\n\n const angle = (bucket.allowVerticalPlacement && symbol.placedOrientation === WritingMode.vertical) ? Math.PI / 2 : 0;\n for (let g = 0; g < numGlyphs; g++) {\n addDynamicAttributes(dynamicTextLayoutVertexArray, x, y, z, angle);\n }\n //Only offset horizontal text icons\n if (updateTextFitIcon && symbol.associatedIconIndex >= 0) {\n placedTextShifts[symbol.associatedIconIndex] = {x, y, z, angle};\n }\n }\n }\n\n if (updateTextFitIcon) {\n dynamicIconLayoutVertexArray.clear();\n const placedIcons = bucket.icon.placedSymbolArray;\n for (let i = 0; i < placedIcons.length; i++) {\n const placedIcon = placedIcons.get(i);\n const {numGlyphs} = placedIcon;\n const shift = placedTextShifts[i];\n\n if (placedIcon.hidden || !shift) {\n symbolProjection.hideGlyphs(numGlyphs, dynamicIconLayoutVertexArray);\n } else {\n const {x, y, z, angle} = shift;\n for (let g = 0; g < numGlyphs; g++) {\n addDynamicAttributes(dynamicIconLayoutVertexArray, x, y, z, angle);\n }\n }\n }\n bucket.icon.dynamicLayoutVertexBuffer.updateData(dynamicIconLayoutVertexArray);\n }\n bucket.text.dynamicLayoutVertexBuffer.updateData(dynamicTextLayoutVertexArray);\n}\n\nfunction getSymbolProgramName(isSDF: boolean, isText: boolean, bucket: SymbolBucket) {\n if (bucket.iconsInText && isText) {\n return 'symbolTextAndIcon';\n } else if (isSDF) {\n return 'symbolSDF';\n } else {\n return 'symbolIcon';\n }\n}\n\nfunction drawLayerSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, isText: boolean, translate: [number, number], translateAnchor: 'map' | 'viewport', rotationAlignment: Alignment, pitchAlignment: Alignment, keepUpright: boolean, stencilMode: StencilMode, colorMode: ColorMode) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n\n const rotateWithMap = rotationAlignment === 'map';\n const pitchWithMap = pitchAlignment === 'map';\n const alongLine = rotateWithMap && layer.layout.get('symbol-placement') !== 'point';\n\n // Line label rotation happens in `updateLineLabels`\n // Pitched point labels are automatically rotated by the labelPlaneMatrix projection\n // Unpitched point labels need to have their rotation applied after projection\n const rotateInShader = rotateWithMap && !pitchWithMap && !alongLine;\n\n const hasSortKey = layer.layout.get('symbol-sort-key').constantOr(1) !== undefined;\n let sortFeaturesByKey = false;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n const mercatorCenter = [\n mercatorXfromLng(tr.center.lng),\n mercatorYfromLat(tr.center.lat)\n ];\n const variablePlacement = layer.layout.get('text-variable-anchor');\n const isGlobeProjection = tr.projection.name === 'globe';\n const tileRenderState: Array = [];\n\n const mercatorCameraUp = [0, -1, 0];\n\n let globeCameraUp: [number, number, number] = mercatorCameraUp;\n if ((isGlobeProjection || tr.mercatorFromTransition) && !rotateWithMap) {\n // Each symbol rotating with the viewport requires per-instance information about\n // how to align with the viewport. In 2D case rotation is shared between all of the symbols and\n // hence embedded in the label plane matrix but in globe view this needs to be computed at runtime.\n // Camera up vector together with surface normals can be used to find the correct orientation for each symbol.\n globeCameraUp = computeGlobeCameraUp(tr);\n }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n const bucket: SymbolBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n // Allow rendering of buckets built for globe projection in mercator mode\n // until the substitute tile has been loaded\n if (bucket.projection.name === 'mercator' && isGlobeProjection) {\n continue;\n }\n const buffers = isText ? bucket.text : bucket.icon;\n if (!buffers || bucket.fullyClipped || !buffers.segments.get().length) continue;\n const programConfiguration = buffers.programConfigurations.get(layer.id);\n\n const isSDF = isText || bucket.sdfIcons;\n\n const sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;\n const transformed = pitchWithMap || tr.pitch !== 0;\n\n const size = symbolSize.evaluateSizeForZoom(sizeData, tr.zoom);\n\n let texSize: [number, number];\n let texSizeIcon: [number, number] = [0, 0];\n let atlasTexture;\n let atlasInterpolation;\n let atlasTextureIcon = null;\n let atlasInterpolationIcon;\n if (isText) {\n atlasTexture = tile.glyphAtlasTexture;\n atlasInterpolation = gl.LINEAR;\n texSize = tile.glyphAtlasTexture.size;\n if (bucket.iconsInText) {\n texSizeIcon = tile.imageAtlasTexture.size;\n atlasTextureIcon = tile.imageAtlasTexture;\n const zoomDependentSize = sizeData.kind === 'composite' || sizeData.kind === 'camera';\n atlasInterpolationIcon = transformed || painter.options.rotating || painter.options.zooming || zoomDependentSize ? gl.LINEAR : gl.NEAREST;\n }\n } else {\n const iconScaled = layer.layout.get('icon-size').constantOr(0) !== 1 || bucket.iconsNeedLinear;\n atlasTexture = tile.imageAtlasTexture;\n atlasInterpolation = isSDF || painter.options.rotating || painter.options.zooming || iconScaled || transformed ?\n gl.LINEAR :\n gl.NEAREST;\n texSize = tile.imageAtlasTexture.size;\n }\n\n const bucketIsGlobeProjection = bucket.projection.name === 'globe';\n const cameraUpVector = bucketIsGlobeProjection ? globeCameraUp : mercatorCameraUp;\n const globeToMercator = bucketIsGlobeProjection ? globeToMercatorTransition(tr.zoom) : 0.0;\n const tileMatrix = getSymbolTileProjectionMatrix(coord, bucket.getProjection(), tr);\n\n const s = tr.calculatePixelsToTileUnitsMatrix(tile);\n const labelPlaneMatrixRendering = symbolProjection.getLabelPlaneMatrixForRendering(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), s);\n // labelPlaneMatrixInv is used for converting vertex pos to tile coordinates needed for sampling elevation.\n const labelPlaneMatrixInv = painter.terrain && pitchWithMap && alongLine ? mat4.invert(mat4.create(), labelPlaneMatrixRendering) : identityMat4;\n const glCoordMatrix = symbolProjection.getGlCoordMatrix(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), s);\n\n const hasVariableAnchors = variablePlacement && bucket.hasTextData();\n const updateTextFitIcon = layer.layout.get('icon-text-fit') !== 'none' &&\n hasVariableAnchors &&\n bucket.hasIconData();\n\n if (alongLine) {\n const elevation = tr.elevation;\n const getElevation = elevation ? elevation.getAtTileOffsetFunc(coord, tr.center.lat, tr.worldSize, bucket.getProjection()) : null;\n const labelPlaneMatrixPlacement = symbolProjection.getLabelPlaneMatrixForPlacement(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), s);\n\n symbolProjection.updateLineLabels(bucket, tileMatrix, painter, isText, labelPlaneMatrixPlacement, glCoordMatrix, pitchWithMap, keepUpright, getElevation, coord);\n }\n\n const projectedPosOnLabelSpace = alongLine || (isText && variablePlacement) || updateTextFitIcon;\n const matrix = painter.translatePosMatrix(tileMatrix, tile, translate, translateAnchor);\n const uLabelPlaneMatrix = projectedPosOnLabelSpace ? identityMat4 : labelPlaneMatrixRendering;\n const uglCoordMatrix = painter.translatePosMatrix(glCoordMatrix, tile, translate, translateAnchor, true);\n const invMatrix = bucket.getProjection().createInversionMatrix(tr, coord.canonical);\n\n const baseDefines = ([]: any);\n if (painter.terrainRenderModeElevated() && pitchWithMap) {\n baseDefines.push('PITCH_WITH_MAP_TERRAIN');\n }\n if (bucketIsGlobeProjection) {\n baseDefines.push('PROJECTION_GLOBE_VIEW');\n }\n if (projectedPosOnLabelSpace) {\n baseDefines.push('PROJECTED_POS_ON_VIEWPORT');\n }\n\n const hasHalo = isSDF && layer.paint.get(isText ? 'text-halo-width' : 'icon-halo-width').constantOr(1) !== 0;\n\n let uniformValues;\n if (isSDF) {\n if (!bucket.iconsInText) {\n uniformValues = symbolSDFUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter,\n matrix, uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, true, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection());\n } else {\n uniformValues = symbolTextAndIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter,\n matrix, uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection());\n }\n } else {\n uniformValues = symbolIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter, matrix,\n uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection());\n }\n\n const program = painter.useProgram(getSymbolProgramName(isSDF, isText, bucket), programConfiguration, baseDefines);\n\n const state = {\n program,\n buffers,\n uniformValues,\n atlasTexture,\n atlasTextureIcon,\n atlasInterpolation,\n atlasInterpolationIcon,\n isSDF,\n hasHalo,\n tile,\n labelPlaneMatrixInv\n };\n\n if (hasSortKey && bucket.canOverlap) {\n sortFeaturesByKey = true;\n const oldSegments = buffers.segments.get();\n for (const segment of oldSegments) {\n tileRenderState.push({\n segments: new SegmentVector([segment]),\n sortKey: ((segment.sortKey: any): number),\n state\n });\n }\n } else {\n tileRenderState.push({\n segments: buffers.segments,\n sortKey: 0,\n state\n });\n }\n }\n\n if (sortFeaturesByKey) {\n tileRenderState.sort((a, b) => a.sortKey - b.sortKey);\n }\n\n for (const segmentState of tileRenderState) {\n const state = segmentState.state;\n if (painter.terrain) {\n const options = {\n useDepthForOcclusion: !isGlobeProjection,\n labelPlaneMatrixInv: state.labelPlaneMatrixInv\n };\n painter.terrain.setupElevationDraw(state.tile, state.program, options);\n }\n context.activeTexture.set(gl.TEXTURE0);\n state.atlasTexture.bind(state.atlasInterpolation, gl.CLAMP_TO_EDGE);\n if (state.atlasTextureIcon) {\n context.activeTexture.set(gl.TEXTURE1);\n if (state.atlasTextureIcon) {\n state.atlasTextureIcon.bind(state.atlasInterpolationIcon, gl.CLAMP_TO_EDGE);\n }\n }\n\n if (state.isSDF) {\n const uniformValues = ((state.uniformValues: any): UniformValues);\n if (state.hasHalo) {\n uniformValues['u_is_halo'] = 1;\n drawSymbolElements(state.buffers, segmentState.segments, layer, painter, state.program, depthMode, stencilMode, colorMode, uniformValues);\n }\n uniformValues['u_is_halo'] = 0;\n }\n drawSymbolElements(state.buffers, segmentState.segments, layer, painter, state.program, depthMode, stencilMode, colorMode, state.uniformValues);\n }\n}\n\nfunction drawSymbolElements(buffers: SymbolBuffers, segments: SegmentVector, layer: SymbolStyleLayer, painter: Painter, program: any, depthMode: DepthMode, stencilMode: StencilMode, colorMode: ColorMode, uniformValues: UniformValues) {\n const context = painter.context;\n const gl = context.gl;\n const dynamicBuffers = [buffers.dynamicLayoutVertexBuffer, buffers.opacityVertexBuffer, buffers.globeExtVertexBuffer];\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, buffers.layoutVertexBuffer,\n buffers.indexBuffer, segments, layer.paint,\n painter.transform.zoom, buffers.programConfigurations.get(layer.id), dynamicBuffers);\n}\n","// @flow\n\nimport Color from '../style-spec/util/color.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n fillUniformValues,\n fillPatternUniformValues,\n fillOutlineUniformValues,\n fillOutlinePatternUniformValues\n} from './program/fill_program.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type FillStyleLayer from '../style/style_layer/fill_style_layer.js';\nimport type FillBucket from '../data/bucket/fill_bucket.js';\nimport type ColorMode from '../gl/color_mode.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\n\nexport default drawFill;\n\nfunction drawFill(painter: Painter, sourceCache: SourceCache, layer: FillStyleLayer, coords: Array) {\n const color = layer.paint.get('fill-color');\n const opacity = layer.paint.get('fill-opacity');\n\n if (opacity.constantOr(1) === 0) {\n return;\n }\n\n const colorMode = painter.colorModeForRenderPass();\n\n const pattern = layer.paint.get('fill-pattern');\n const pass = painter.opaquePassEnabledForLayer() &&\n (!pattern.constantOr((1: any)) &&\n color.constantOr(Color.transparent).a === 1 &&\n opacity.constantOr(0) === 1) ? 'opaque' : 'translucent';\n\n // Draw fill\n if (painter.renderPass === pass) {\n const depthMode = painter.depthModeForSublayer(\n 1, painter.renderPass === 'opaque' ? DepthMode.ReadWrite : DepthMode.ReadOnly);\n drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, false);\n }\n\n // Draw stroke\n if (painter.renderPass === 'translucent' && layer.paint.get('fill-antialias')) {\n\n // If we defined a different color for the fill outline, we are\n // going to ignore the bits in 0x07 and just care about the global\n // clipping mask.\n // Otherwise, we only want to drawFill the antialiased parts that are\n // *outside* the current shape. This is important in case the fill\n // or stroke color is translucent. If we wouldn't clip to outside\n // the current shape, some pixels from the outline stroke overlapped\n // the (non-antialiased) fill.\n const depthMode = painter.depthModeForSublayer(\n layer.getPaintProperty('fill-outline-color') ? 2 : 0, DepthMode.ReadOnly);\n drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, true);\n }\n}\n\nfunction drawFillTiles(painter: Painter, sourceCache: SourceCache, layer: FillStyleLayer, coords: Array, depthMode: DepthMode, colorMode: ColorMode, isOutline: boolean) {\n const gl = painter.context.gl;\n\n const patternProperty = layer.paint.get('fill-pattern');\n const image = patternProperty && patternProperty.constantOr((1: any));\n let drawMode, programName, uniformValues, indexBuffer, segments;\n\n if (!isOutline) {\n programName = image ? 'fillPattern' : 'fill';\n drawMode = gl.TRIANGLES;\n } else {\n programName = image && !layer.getPaintProperty('fill-outline-color') ? 'fillOutlinePattern' : 'fillOutline';\n drawMode = gl.LINES;\n }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n if (image && !tile.patternsLoaded()) continue;\n\n const bucket: ?FillBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n painter.prepareDrawTile();\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram(programName, programConfiguration);\n\n if (image) {\n painter.context.activeTexture.set(gl.TEXTURE0);\n tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n programConfiguration.updatePaintBuffers();\n }\n\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern && tile.imageAtlas) {\n const atlas = tile.imageAtlas;\n const posTo = atlas.patternPositions[constantPattern.toString()];\n if (posTo) programConfiguration.setConstantPatternPositions(posTo);\n }\n\n const tileMatrix = painter.translatePosMatrix(coord.projMatrix, tile,\n layer.paint.get('fill-translate'), layer.paint.get('fill-translate-anchor'));\n\n if (!isOutline) {\n indexBuffer = bucket.indexBuffer;\n segments = bucket.segments;\n uniformValues = image ?\n fillPatternUniformValues(tileMatrix, painter, tile) :\n fillUniformValues(tileMatrix);\n } else {\n indexBuffer = bucket.indexBuffer2;\n segments = bucket.segments2;\n const drawingBufferSize = (painter.terrain && painter.terrain.renderingToTexture) ? painter.terrain.drapeBufferSize : [gl.drawingBufferWidth, gl.drawingBufferHeight];\n uniformValues = (programName === 'fillOutlinePattern' && image) ?\n fillOutlinePatternUniformValues(tileMatrix, painter, tile, drawingBufferSize) :\n fillOutlineUniformValues(tileMatrix, drawingBufferSize);\n }\n\n painter.prepareDrawProgram(painter.context, program, coord.toUnwrapped());\n\n program.draw(painter.context, drawMode, depthMode,\n painter.stencilModeForClipping(coord), colorMode, CullFaceMode.disabled, uniformValues,\n layer.id, bucket.layoutVertexBuffer, indexBuffer, segments,\n layer.paint, painter.transform.zoom, programConfiguration);\n }\n}\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport EXTENT from '../data/extent.js';\nimport FillExtrusionBucket, {fillExtrusionHeightLift} from '../data/bucket/fill_extrusion_bucket.js';\nimport {\n fillExtrusionUniformValues,\n fillExtrusionPatternUniformValues,\n} from './program/fill_extrusion_program.js';\nimport Point from '@mapbox/point-geometry';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport assert from 'assert';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\nimport Context from '../gl/context.js';\nimport {Terrain} from '../terrain/terrain.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type {PartMetadata} from '../data/bucket/fill_extrusion_bucket.js';\nimport type FillExtrusionStyleLayer from '../style/style_layer/fill_extrusion_style_layer.js';\n\nexport default draw;\n\nfunction draw(painter: Painter, source: SourceCache, layer: FillExtrusionStyleLayer, coords: Array) {\n const opacity = layer.paint.get('fill-extrusion-opacity');\n if (opacity === 0) {\n return;\n }\n\n if (painter.renderPass === 'translucent') {\n const depthMode = new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n\n if (opacity === 1 && !layer.paint.get('fill-extrusion-pattern').constantOr((1: any))) {\n const colorMode = painter.colorModeForRenderPass();\n drawExtrusionTiles(painter, source, layer, coords, depthMode, StencilMode.disabled, colorMode);\n\n } else {\n // Draw transparent buildings in two passes so that only the closest surface is drawn.\n // First draw all the extrusions into only the depth buffer. No colors are drawn.\n drawExtrusionTiles(painter, source, layer, coords, depthMode,\n StencilMode.disabled,\n ColorMode.disabled);\n\n // Then draw all the extrusions a second type, only coloring fragments if they have the\n // same depth value as the closest fragment in the previous pass. Use the stencil buffer\n // to prevent the second draw in cases where we have coincident polygons.\n drawExtrusionTiles(painter, source, layer, coords, depthMode,\n painter.stencilModeFor3D(),\n painter.colorModeForRenderPass());\n\n painter.resetStencilClippingMasks();\n }\n }\n}\n\nfunction drawExtrusionTiles(painter: Painter, source: SourceCache, layer: FillExtrusionStyleLayer, coords: Array, depthMode: DepthMode, stencilMode: StencilMode, colorMode: ColorMode) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n const patternProperty = layer.paint.get('fill-extrusion-pattern');\n const image = patternProperty.constantOr((1: any));\n const opacity = layer.paint.get('fill-extrusion-opacity');\n const ao = [layer.paint.get('fill-extrusion-ambient-occlusion-intensity'), layer.paint.get('fill-extrusion-ambient-occlusion-radius')];\n const edgeRadius = layer.layout.get('fill-extrusion-edge-radius');\n const zeroRoofRadius = edgeRadius > 0 && !layer.paint.get('fill-extrusion-rounded-roof');\n const roofEdgeRadius = zeroRoofRadius ? 0.0 : edgeRadius;\n const heightLift = tr.projection.name === 'globe' ? fillExtrusionHeightLift() : 0;\n const isGlobeProjection = tr.projection.name === 'globe';\n const globeToMercator = isGlobeProjection ? globeToMercatorTransition(tr.zoom) : 0.0;\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n const baseDefines = ([]: any);\n if (isGlobeProjection) {\n baseDefines.push('PROJECTION_GLOBE_VIEW');\n }\n if (ao[0] > 0) { // intensity\n baseDefines.push('FAUX_AO');\n }\n if (zeroRoofRadius) {\n baseDefines.push('ZERO_ROOF_RADIUS');\n }\n\n for (const coord of coords) {\n const tile = source.getTile(coord);\n const bucket: ?FillExtrusionBucket = (tile.getBucket(layer): any);\n if (!bucket || bucket.projection.name !== tr.projection.name) continue;\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram(image ? 'fillExtrusionPattern' : 'fillExtrusion', programConfiguration, baseDefines);\n\n if (painter.terrain) {\n const terrain = painter.terrain;\n if (painter.style.terrainSetForDrapingOnly()) {\n terrain.setupElevationDraw(tile, program, {useMeterToDem: true});\n } else {\n if (!bucket.enableTerrain) continue;\n terrain.setupElevationDraw(tile, program, {useMeterToDem: true});\n flatRoofsUpdate(context, source, coord, bucket, layer, terrain);\n if (!bucket.centroidVertexBuffer) {\n const attrIndex: number | void = program.attributes['a_centroid_pos'];\n if (attrIndex !== undefined) gl.vertexAttrib2f(attrIndex, 0, 0);\n }\n }\n }\n\n if (image) {\n painter.context.activeTexture.set(gl.TEXTURE0);\n tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n programConfiguration.updatePaintBuffers();\n }\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern && tile.imageAtlas) {\n const atlas = tile.imageAtlas;\n const posTo = atlas.patternPositions[constantPattern.toString()];\n if (posTo) programConfiguration.setConstantPatternPositions(posTo);\n }\n\n const matrix = painter.translatePosMatrix(\n coord.projMatrix,\n tile,\n layer.paint.get('fill-extrusion-translate'),\n layer.paint.get('fill-extrusion-translate-anchor'));\n\n const invMatrix = tr.projection.createInversionMatrix(tr, coord.canonical);\n\n const shouldUseVerticalGradient = layer.paint.get('fill-extrusion-vertical-gradient');\n const uniformValues = image ?\n fillExtrusionPatternUniformValues(matrix, painter, shouldUseVerticalGradient, opacity, ao, roofEdgeRadius, coord,\n tile, heightLift, globeToMercator, mercatorCenter, invMatrix) :\n fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity, ao, roofEdgeRadius, coord,\n heightLift, globeToMercator, mercatorCenter, invMatrix);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n assert(!isGlobeProjection || bucket.layoutVertexExtBuffer);\n\n const dynamicBuffers = [];\n if (painter.terrain) dynamicBuffers.push(bucket.centroidVertexBuffer);\n if (isGlobeProjection) dynamicBuffers.push(bucket.layoutVertexExtBuffer);\n\n program.draw(context, context.gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.backCCW,\n uniformValues, layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer,\n bucket.segments, layer.paint, painter.transform.zoom,\n programConfiguration, dynamicBuffers);\n }\n}\n\n// Flat roofs array is prepared in the bucket, except for buildings that are on tile borders.\n// For them, join pieces, calculate joined size here, and then upload data.\nfunction flatRoofsUpdate(context: Context, source: SourceCache, coord: OverscaledTileID, bucket: FillExtrusionBucket, layer: FillExtrusionStyleLayer, terrain: Terrain) {\n // For all four borders: 0 - left, 1, right, 2 - top, 3 - bottom\n const neighborCoord = [\n (coord: OverscaledTileID) => {\n let x = coord.canonical.x - 1;\n let w = coord.wrap;\n if (x < 0) {\n x = (1 << coord.canonical.z) - 1;\n w--;\n }\n return new OverscaledTileID(coord.overscaledZ, w, coord.canonical.z, x, coord.canonical.y);\n },\n (coord: OverscaledTileID) => {\n let x = coord.canonical.x + 1;\n let w = coord.wrap;\n if (x === 1 << coord.canonical.z) {\n x = 0;\n w++;\n }\n return new OverscaledTileID(coord.overscaledZ, w, coord.canonical.z, x, coord.canonical.y);\n },\n (coord: OverscaledTileID) => new OverscaledTileID(coord.overscaledZ, coord.wrap, coord.canonical.z, coord.canonical.x,\n (coord.canonical.y === 0 ? 1 << coord.canonical.z : coord.canonical.y) - 1),\n (coord: OverscaledTileID) => new OverscaledTileID(coord.overscaledZ, coord.wrap, coord.canonical.z, coord.canonical.x,\n coord.canonical.y === (1 << coord.canonical.z) - 1 ? 0 : coord.canonical.y + 1)\n ];\n\n const getLoadedBucket = (nid: OverscaledTileID) => {\n const minzoom = source.getSource().minzoom;\n const getBucket = (key: number) => {\n const n = source.getTileByID(key);\n if (n && n.hasData()) {\n return n.getBucket(layer);\n }\n };\n // Look one tile zoom above and under. We do this to avoid flickering and\n // use the content in Z-1 and Z+1 buckets until Z bucket is loaded or handle\n // behavior on borders between different zooms.\n const zoomLevels = [0, -1, 1];\n for (const i of zoomLevels) {\n const z = nid.overscaledZ + i;\n if (z < minzoom) continue;\n const key = nid.calculateScaledKey(nid.overscaledZ + i);\n const b = getBucket(key);\n if (b) {\n return b;\n }\n }\n };\n\n const projectedToBorder = [0, 0, 0]; // [min, max, maxOffsetFromBorder]\n const xjoin = (a: PartMetadata, b: PartMetadata) => {\n projectedToBorder[0] = Math.min(a.min.y, b.min.y);\n projectedToBorder[1] = Math.max(a.max.y, b.max.y);\n projectedToBorder[2] = EXTENT - b.min.x > a.max.x ? b.min.x - EXTENT : a.max.x;\n return projectedToBorder;\n };\n const yjoin = (a: PartMetadata, b: PartMetadata) => {\n projectedToBorder[0] = Math.min(a.min.x, b.min.x);\n projectedToBorder[1] = Math.max(a.max.x, b.max.x);\n projectedToBorder[2] = EXTENT - b.min.y > a.max.y ? b.min.y - EXTENT : a.max.y;\n return projectedToBorder;\n };\n const projectCombinedSpanToBorder = [\n (a: PartMetadata, b: PartMetadata) => xjoin(a, b),\n (a: PartMetadata, b: PartMetadata) => xjoin(b, a),\n (a: PartMetadata, b: PartMetadata) => yjoin(a, b),\n (a: PartMetadata, b: PartMetadata) => yjoin(b, a)\n ];\n\n const centroid = new Point(0, 0);\n const error = 3; // Allow intrusion of a building to the building with adjacent wall.\n\n let demTile, neighborDEMTile, neighborTileID;\n\n const flatBase = (min: number, max: number, edge: number, verticalEdge: boolean, maxOffsetFromBorder: number) => {\n const points = [[verticalEdge ? edge : min, verticalEdge ? min : edge, 0], [verticalEdge ? edge : max, verticalEdge ? max : edge, 0]];\n\n const coord3 = maxOffsetFromBorder < 0 ? EXTENT + maxOffsetFromBorder : maxOffsetFromBorder;\n const thirdPoint = [verticalEdge ? coord3 : (min + max) / 2, verticalEdge ? (min + max) / 2 : coord3, 0];\n if ((edge === 0 && maxOffsetFromBorder < 0) || (edge !== 0 && maxOffsetFromBorder > 0)) {\n // Third point is inside neighbor tile, not in the |coord| tile.\n terrain.getForTilePoints(neighborTileID, [thirdPoint], true, neighborDEMTile);\n } else {\n points.push(thirdPoint);\n }\n terrain.getForTilePoints(coord, points, true, demTile);\n return Math.max(points[0][2], points[1][2], thirdPoint[2]) / terrain.exaggeration();\n };\n\n // Process all four borders: get neighboring tile\n for (let i = 0; i < 4; i++) {\n // borders / borderDoneWithNeighborZ: 0 - left, 1, right, 2 - top, 3 - bottom\n // bucket's border i is neighboring bucket's border j:\n const j = (i < 2 ? 1 : 5) - i;\n // Sort by border intersection area minimums, ascending.\n const a = bucket.borders[i];\n if (a.length === 0) continue;\n const nid = neighborTileID = neighborCoord[i](coord);\n const nBucket = getLoadedBucket(nid);\n if (!nBucket || !(nBucket instanceof FillExtrusionBucket) || !nBucket.enableTerrain) continue;\n if (bucket.borderDoneWithNeighborZ[i] === nBucket.canonical.z &&\n nBucket.borderDoneWithNeighborZ[j] === bucket.canonical.z) {\n continue;\n }\n\n neighborDEMTile = terrain.findDEMTileFor(nid);\n if (!neighborDEMTile || !neighborDEMTile.dem) continue;\n if (!demTile) {\n const dem = terrain.findDEMTileFor(coord);\n if (!(dem && dem.dem)) return; // defer update until an elevation tile is available.\n demTile = dem;\n }\n const b = nBucket.borders[j];\n let ib = 0;\n\n const updateNeighbor = nBucket.borderDoneWithNeighborZ[j] !== bucket.canonical.z;\n // If neighbors are of different canonical z, we cannot join parts but show\n // all without flat roofs.\n if (bucket.canonical.z !== nBucket.canonical.z) {\n for (const index of a) {\n bucket.encodeCentroid(undefined, bucket.featuresOnBorder[index], false);\n }\n if (updateNeighbor) {\n for (const index of b) {\n nBucket.encodeCentroid(undefined, nBucket.featuresOnBorder[index], false);\n }\n nBucket.borderDoneWithNeighborZ[j] = bucket.canonical.z;\n nBucket.needsCentroidUpdate = true;\n }\n bucket.borderDoneWithNeighborZ[i] = nBucket.canonical.z;\n bucket.needsCentroidUpdate = true;\n continue;\n }\n\n for (let ia = 0; ia < a.length; ia++) {\n const parta = bucket.featuresOnBorder[a[ia]];\n const partABorderRange = parta.borders[i];\n // Find all nBucket parts that share the border overlap.\n let partb;\n while (ib < b.length) {\n // Pass all that are before the overlap.\n partb = nBucket.featuresOnBorder[b[ib]];\n const partBBorderRange = partb.borders[j];\n if (partBBorderRange[1] > partABorderRange[0] + error) break;\n if (updateNeighbor) nBucket.encodeCentroid(undefined, partb, false);\n ib++;\n }\n if (partb && ib < b.length) {\n const saveIb = ib;\n let count = 0;\n while (true) {\n // Collect all parts overlapping parta on the edge, to make sure it is only one.\n const partBBorderRange = partb.borders[j];\n if (partBBorderRange[0] > partABorderRange[1] - error) break;\n count++;\n if (++ib === b.length) break;\n partb = nBucket.featuresOnBorder[b[ib]];\n }\n partb = nBucket.featuresOnBorder[b[saveIb]];\n\n // If any of a or b crosses more than one tile edge, don't support flat roof.\n if (parta.intersectsCount() > 1 || partb.intersectsCount() > 1 || count !== 1) {\n if (count !== 1) {\n ib = saveIb; // rewind unprocessed ib so that it is processed again for the next ia.\n }\n\n bucket.encodeCentroid(undefined, parta, false);\n if (updateNeighbor) nBucket.encodeCentroid(undefined, partb, false);\n continue;\n }\n\n // Now we have 1-1 matching of parts in both tiles that share the edge. Calculate flat base elevation\n // as average of three points: 2 are edge points (combined span projected to border) and one is point of\n // span that has maximum offset to border.\n const span = projectCombinedSpanToBorder[i](parta, partb);\n const edge = (i % 2) ? EXTENT - 1 : 0;\n centroid.x = flatBase(span[0], Math.min(EXTENT - 1, span[1]), edge, i < 2, span[2]);\n centroid.y = 0;\n assert(parta.vertexArrayOffset !== undefined && parta.vertexArrayOffset < bucket.layoutVertexArray.length);\n bucket.encodeCentroid(centroid, parta, false);\n\n assert(partb.vertexArrayOffset !== undefined && partb.vertexArrayOffset < nBucket.layoutVertexArray.length);\n if (updateNeighbor) nBucket.encodeCentroid(centroid, partb, false);\n } else {\n assert(parta.intersectsCount() > 1 || (partb && partb.intersectsCount() > 1)); // expected at the end of border, when buildings cover corner (show building w/o flat roof).\n bucket.encodeCentroid(undefined, parta, false);\n }\n }\n\n bucket.borderDoneWithNeighborZ[i] = nBucket.canonical.z;\n bucket.needsCentroidUpdate = true;\n if (updateNeighbor) {\n nBucket.borderDoneWithNeighborZ[j] = bucket.canonical.z;\n nBucket.needsCentroidUpdate = true;\n }\n }\n\n if (bucket.needsCentroidUpdate || (!bucket.centroidVertexBuffer && bucket.centroidVertexArray.length !== 0)) {\n bucket.uploadCentroid(context);\n }\n}\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {debugUniformValues} from './program/debug_program.js';\nimport Color from '../style-spec/util/color.js';\nimport ColorMode from '../gl/color_mode.js';\nimport browser from '../util/browser.js';\nimport {globeDenormalizeECEF, transitionTileAABBinECEF, globeToMercatorTransition} from '../geo/projection/globe_util.js';\nimport {mat4} from 'gl-matrix';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\n\nconst topColor = new Color(1, 0, 0, 1);\nconst btmColor = new Color(0, 1, 0, 1);\nconst leftColor = new Color(0, 0, 1, 1);\nconst rightColor = new Color(1, 0, 1, 1);\nconst centerColor = new Color(0, 1, 1, 1);\n\nexport default function drawDebug(painter: Painter, sourceCache: SourceCache, coords: Array) {\n for (let i = 0; i < coords.length; i++) {\n drawDebugTile(painter, sourceCache, coords[i]);\n }\n}\n\nexport function drawDebugPadding(painter: Painter) {\n const padding = painter.transform.padding;\n const lineWidth = 3;\n // Top\n drawHorizontalLine(painter, painter.transform.height - (padding.top || 0), lineWidth, topColor);\n // Bottom\n drawHorizontalLine(painter, padding.bottom || 0, lineWidth, btmColor);\n // Left\n drawVerticalLine(painter, padding.left || 0, lineWidth, leftColor);\n // Right\n drawVerticalLine(painter, painter.transform.width - (padding.right || 0), lineWidth, rightColor);\n // Center\n const center = painter.transform.centerPoint;\n drawCrosshair(painter, center.x, painter.transform.height - center.y, centerColor);\n}\n\nexport function drawDebugQueryGeometry(painter: Painter, sourceCache: SourceCache, coords: Array) {\n for (let i = 0; i < coords.length; i++) {\n drawTileQueryGeometry(painter, sourceCache, coords[i]);\n }\n}\n\nfunction drawDebugTile(painter: Painter, sourceCache: SourceCache, coord: OverscaledTileID) {\n const context = painter.context;\n const tr = painter.transform;\n const gl = context.gl;\n\n const isGlobeProjection = tr.projection.name === 'globe';\n const definesValues = isGlobeProjection ? ['PROJECTION_GLOBE_VIEW'] : null;\n\n let posMatrix = coord.projMatrix;\n\n if (isGlobeProjection && globeToMercatorTransition(tr.zoom) > 0) {\n // We use a custom tile matrix here in order to handle the globe-to-mercator transition\n // the following is equivalent to transform.calculatePosMatrix,\n // except we use transitionTileAABBinECEF instead of globeTileBounds to account for the transition.\n const bounds = transitionTileAABBinECEF(coord.canonical, tr);\n const decode = globeDenormalizeECEF(bounds);\n posMatrix = mat4.multiply(new Float32Array(16), tr.globeMatrix, decode);\n mat4.multiply(posMatrix, tr.projMatrix, posMatrix);\n }\n\n const program = painter.useProgram('debug', null, definesValues);\n const tile = sourceCache.getTileByID(coord.key);\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n\n const depthMode = DepthMode.disabled;\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const id = '$debug';\n\n context.activeTexture.set(gl.TEXTURE0);\n // Bind the empty texture for drawing outlines\n painter.emptyTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n if (isGlobeProjection) {\n tile._makeGlobeTileDebugBuffers(painter.context, tr);\n } else {\n tile._makeDebugTileBoundsBuffers(painter.context, tr.projection);\n }\n\n const debugBuffer = tile._tileDebugBuffer || painter.debugBuffer;\n const debugIndexBuffer = tile._tileDebugIndexBuffer || painter.debugIndexBuffer;\n const debugSegments = tile._tileDebugSegments || painter.debugSegments;\n\n program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n debugUniformValues(posMatrix, Color.red), id,\n debugBuffer, debugIndexBuffer, debugSegments,\n null, null, null, [tile._globeTileDebugBorderBuffer]);\n\n const tileRawData = tile.latestRawTileData;\n const tileByteLength = (tileRawData && tileRawData.byteLength) || 0;\n const tileSizeKb = Math.floor(tileByteLength / 1024);\n const tileSize = sourceCache.getTile(coord).tileSize;\n const scaleRatio = (512 / Math.min(tileSize, 512) * (coord.overscaledZ / tr.zoom)) * 0.5;\n let tileLabel = coord.canonical.toString();\n if (coord.overscaledZ !== coord.canonical.z) {\n tileLabel += ` => ${coord.overscaledZ}`;\n }\n tileLabel += ` ${tileSizeKb}kb`;\n drawTextToOverlay(painter, tileLabel);\n\n const debugTextBuffer = tile._tileDebugTextBuffer || painter.debugBuffer;\n const debugTextIndexBuffer = tile._tileDebugTextIndexBuffer || painter.quadTriangleIndexBuffer;\n const debugTextSegments = tile._tileDebugTextSegments || painter.debugSegments;\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, ColorMode.alphaBlended, CullFaceMode.disabled,\n debugUniformValues(posMatrix, Color.transparent, scaleRatio), id,\n debugTextBuffer, debugTextIndexBuffer, debugTextSegments,\n null, null, null, [tile._globeTileDebugTextBuffer]);\n}\n\nfunction drawCrosshair(painter: Painter, x: number, y: number, color: Color) {\n const size = 20;\n const lineWidth = 2;\n //Vertical line\n drawDebugSSRect(painter, x - lineWidth / 2, y - size / 2, lineWidth, size, color);\n //Horizontal line\n drawDebugSSRect(painter, x - size / 2, y - lineWidth / 2, size, lineWidth, color);\n}\n\nfunction drawHorizontalLine(painter: Painter, y: number, lineWidth: number, color: Color) {\n drawDebugSSRect(painter, 0, y + lineWidth / 2, painter.transform.width, lineWidth, color);\n}\n\nfunction drawVerticalLine(painter: Painter, x: number, lineWidth: number, color: Color) {\n drawDebugSSRect(painter, x - lineWidth / 2, 0, lineWidth, painter.transform.height, color);\n}\n\nfunction drawDebugSSRect(painter: Painter, x: number, y: number, width: number, height: number, color: Color) {\n const context = painter.context;\n const gl = context.gl;\n\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(x * browser.devicePixelRatio, y * browser.devicePixelRatio, width * browser.devicePixelRatio, height * browser.devicePixelRatio);\n context.clear({color});\n gl.disable(gl.SCISSOR_TEST);\n}\n\nfunction drawTileQueryGeometry(painter: Painter, sourceCache: SourceCache, coord: OverscaledTileID) {\n const context = painter.context;\n const gl = context.gl;\n\n const posMatrix = coord.projMatrix;\n const program = painter.useProgram('debug');\n const tile = sourceCache.getTileByID(coord.key);\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n\n const depthMode = DepthMode.disabled;\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const id = '$debug';\n\n context.activeTexture.set(gl.TEXTURE0);\n // Bind the empty texture for drawing outlines\n painter.emptyTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n const queryViz = tile.queryGeometryDebugViz;\n const boundsViz = tile.queryBoundsDebugViz;\n\n if (queryViz && queryViz.vertices.length > 0) {\n queryViz.lazyUpload(context);\n const vertexBuffer = queryViz.vertexBuffer;\n const indexBuffer = queryViz.indexBuffer;\n const segments = queryViz.segments;\n if (vertexBuffer != null && indexBuffer != null && segments != null) {\n program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n debugUniformValues(posMatrix, queryViz.color), id,\n vertexBuffer, indexBuffer, segments);\n }\n }\n\n if (boundsViz && boundsViz.vertices.length > 0) {\n boundsViz.lazyUpload(context);\n const vertexBuffer = boundsViz.vertexBuffer;\n const indexBuffer = boundsViz.indexBuffer;\n const segments = boundsViz.segments;\n if (vertexBuffer != null && indexBuffer != null && segments != null) {\n program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n debugUniformValues(posMatrix, boundsViz.color), id,\n vertexBuffer, indexBuffer, segments);\n }\n }\n}\n\nfunction drawTextToOverlay(painter: Painter, text: string) {\n painter.initDebugOverlayCanvas();\n const canvas = painter.debugOverlayCanvas;\n const gl = painter.context.gl;\n const ctx2d = painter.debugOverlayCanvas.getContext('2d');\n ctx2d.clearRect(0, 0, canvas.width, canvas.height);\n\n ctx2d.shadowColor = 'white';\n ctx2d.shadowBlur = 2;\n ctx2d.lineWidth = 1.5;\n ctx2d.strokeStyle = 'white';\n ctx2d.textBaseline = 'top';\n ctx2d.font = `bold ${36}px Open Sans, sans-serif`;\n ctx2d.fillText(text, 5, 5);\n ctx2d.strokeText(text, 5, 5);\n\n painter.debugOverlayTexture.update(canvas);\n painter.debugOverlayTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport const skyboxAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_3f', components: 3, type: 'Float32'}\n]);\n\nexport default skyboxAttributes;\nexport const {members, size, alignment} = skyboxAttributes;\n","// @flow\n\nimport {members as skyboxAttributes} from './skybox_attributes.js';\nimport {SkyboxVertexArray, TriangleIndexArray} from '../data/array_types.js';\nimport SegmentVector from '../data/segment.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type Context from '../gl/context.js';\n\nfunction addVertex(vertexArray: SkyboxVertexArray, x: number, y: number, z: number) {\n vertexArray.emplaceBack(\n // a_pos\n x,\n y,\n z\n );\n}\n\nclass SkyboxGeometry {\n vertexArray: SkyboxVertexArray;\n vertexBuffer: VertexBuffer;\n indices: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n segment: SegmentVector;\n\n constructor(context: Context) {\n this.vertexArray = new SkyboxVertexArray();\n this.indices = new TriangleIndexArray();\n\n addVertex(this.vertexArray, -1.0, -1.0, 1.0);\n addVertex(this.vertexArray, 1.0, -1.0, 1.0);\n addVertex(this.vertexArray, -1.0, 1.0, 1.0);\n addVertex(this.vertexArray, 1.0, 1.0, 1.0);\n addVertex(this.vertexArray, -1.0, -1.0, -1.0);\n addVertex(this.vertexArray, 1.0, -1.0, -1.0);\n addVertex(this.vertexArray, -1.0, 1.0, -1.0);\n addVertex(this.vertexArray, 1.0, 1.0, -1.0);\n\n // +x\n this.indices.emplaceBack(5, 1, 3);\n this.indices.emplaceBack(3, 7, 5);\n // -x\n this.indices.emplaceBack(6, 2, 0);\n this.indices.emplaceBack(0, 4, 6);\n // +y\n this.indices.emplaceBack(2, 6, 7);\n this.indices.emplaceBack(7, 3, 2);\n // -y\n this.indices.emplaceBack(5, 4, 0);\n this.indices.emplaceBack(0, 1, 5);\n // +z\n this.indices.emplaceBack(0, 2, 3);\n this.indices.emplaceBack(3, 1, 0);\n // -z\n this.indices.emplaceBack(7, 6, 4);\n this.indices.emplaceBack(4, 5, 7);\n\n this.vertexBuffer = context.createVertexBuffer(this.vertexArray, skyboxAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indices);\n\n this.segment = SegmentVector.simpleSegment(0, 0, 36, 12);\n }\n}\n\nexport default SkyboxGeometry;\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Context from '../gl/context.js';\nimport Texture from './texture.js';\nimport Program from './program.js';\nimport {smoothstep} from '../util/util.js';\nimport type SourceCache from '../source/source_cache.js';\nimport SkyboxGeometry from './skybox_geometry.js';\nimport {skyboxUniformValues, skyboxGradientUniformValues} from './program/skybox_program.js';\nimport {skyboxCaptureUniformValues} from './program/skybox_capture_program.js';\nimport SkyLayer from '../style/style_layer/sky_style_layer.js';\nimport type Painter from './painter.js';\nimport {mat3, mat4} from 'gl-matrix';\nimport assert from 'assert';\n\nimport type {Mat4} from 'gl-matrix';\n\nexport default drawSky;\n\nconst TRANSITION_OPACITY_ZOOM_START = 7;\nconst TRANSITION_OPACITY_ZOOM_END = 8;\n\nfunction drawSky(painter: Painter, sourceCache: SourceCache, layer: SkyLayer) {\n const tr = painter.transform;\n const globeOrMercator = (tr.projection.name === 'mercator' || tr.projection.name === 'globe');\n // For non-mercator projection, use a forced opacity transition. This transition is set to be\n // 1.0 after the sheer adjustment upper bound which ensures to be in the mercator projection.\n // Note: we only render sky for globe projection during the transition to mercator.\n const transitionOpacity = globeOrMercator ? 1.0 : smoothstep(TRANSITION_OPACITY_ZOOM_START, TRANSITION_OPACITY_ZOOM_END, tr.zoom);\n const opacity = layer.paint.get('sky-opacity') * transitionOpacity;\n if (opacity === 0) {\n return;\n }\n\n const context = painter.context;\n const type = layer.paint.get('sky-type');\n const depthMode = new DepthMode(context.gl.LEQUAL, DepthMode.ReadOnly, [0, 1]);\n const temporalOffset = (painter.frameCounter / 1000.0) % 1;\n\n if (type === 'atmosphere') {\n if (painter.renderPass === 'offscreen') {\n if (layer.needsSkyboxCapture(painter)) {\n captureSkybox(painter, layer, 32, 32);\n layer.markSkyboxValid(painter);\n }\n } else if (painter.renderPass === 'sky') {\n drawSkyboxFromCapture(painter, layer, depthMode, opacity, temporalOffset);\n }\n } else if (type === 'gradient') {\n if (painter.renderPass === 'sky') {\n drawSkyboxGradient(painter, layer, depthMode, opacity, temporalOffset);\n }\n } else {\n assert(false, `${type} is unsupported sky-type`);\n }\n}\n\nfunction drawSkyboxGradient(painter: Painter, layer: SkyLayer, depthMode: DepthMode, opacity: number, temporalOffset: number) {\n const context = painter.context;\n const gl = context.gl;\n const transform = painter.transform;\n const program = painter.useProgram('skyboxGradient');\n\n // Lazily initialize geometry and texture if they havent been created yet.\n if (!layer.skyboxGeometry) {\n layer.skyboxGeometry = new SkyboxGeometry(context);\n }\n context.activeTexture.set(gl.TEXTURE0);\n let colorRampTexture = layer.colorRampTexture;\n if (!colorRampTexture) {\n colorRampTexture = layer.colorRampTexture = new Texture(context, layer.colorRamp, gl.RGBA);\n }\n colorRampTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n const uniformValues = skyboxGradientUniformValues(\n transform.skyboxMatrix,\n layer.getCenter(painter, false),\n layer.paint.get('sky-gradient-radius'),\n opacity,\n temporalOffset\n );\n\n painter.prepareDrawProgram(context, program);\n\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled,\n painter.colorModeForRenderPass(), CullFaceMode.backCW,\n uniformValues, 'skyboxGradient', layer.skyboxGeometry.vertexBuffer,\n layer.skyboxGeometry.indexBuffer, layer.skyboxGeometry.segment);\n}\n\nfunction drawSkyboxFromCapture(painter: Painter, layer: SkyLayer, depthMode: DepthMode, opacity: number, temporalOffset: number) {\n const context = painter.context;\n const gl = context.gl;\n const transform = painter.transform;\n const program = painter.useProgram('skybox');\n\n context.activeTexture.set(gl.TEXTURE0);\n\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, layer.skyboxTexture);\n\n const uniformValues = skyboxUniformValues(transform.skyboxMatrix, layer.getCenter(painter, false), 0, opacity, temporalOffset);\n\n painter.prepareDrawProgram(context, program);\n\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled,\n painter.colorModeForRenderPass(), CullFaceMode.backCW,\n uniformValues, 'skybox', layer.skyboxGeometry.vertexBuffer,\n layer.skyboxGeometry.indexBuffer, layer.skyboxGeometry.segment);\n}\n\nfunction drawSkyboxFace(context: Context, layer: SkyLayer, program: Program, faceRotate: Mat4, sunDirection: [number, number, number], i: number) {\n const gl = context.gl;\n\n const atmosphereColor = layer.paint.get('sky-atmosphere-color');\n const atmosphereHaloColor = layer.paint.get('sky-atmosphere-halo-color');\n const sunIntensity = layer.paint.get('sky-atmosphere-sun-intensity');\n\n const uniformValues = skyboxCaptureUniformValues(\n mat3.fromMat4(mat3.create(), faceRotate),\n sunDirection,\n sunIntensity,\n atmosphereColor,\n atmosphereHaloColor);\n\n const glFace = gl.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, glFace, layer.skyboxTexture, 0);\n\n program.draw(context, gl.TRIANGLES, DepthMode.disabled, StencilMode.disabled, ColorMode.unblended, CullFaceMode.frontCW,\n uniformValues, 'skyboxCapture', layer.skyboxGeometry.vertexBuffer,\n layer.skyboxGeometry.indexBuffer, layer.skyboxGeometry.segment);\n}\n\nfunction captureSkybox(painter: Painter, layer: SkyLayer, width: number, height: number) {\n const context = painter.context;\n const gl = context.gl;\n let fbo = layer.skyboxFbo;\n\n // Using absence of fbo as a signal for lazy initialization of all resources, cache resources in layer object\n if (!fbo) {\n fbo = layer.skyboxFbo = context.createFramebuffer(width, height, false);\n layer.skyboxGeometry = new SkyboxGeometry(context);\n layer.skyboxTexture = context.gl.createTexture();\n\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, layer.skyboxTexture);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n for (let i = 0; i < 6; ++i) {\n const glFace = gl.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n\n // The format here could be RGB, but render tests are not happy with rendering to such a format\n gl.texImage2D(glFace, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n }\n\n context.bindFramebuffer.set(fbo.framebuffer);\n context.viewport.set([0, 0, width, height]);\n\n const sunDirection = layer.getCenter(painter, true);\n const program = painter.useProgram('skyboxCapture');\n const faceRotate = new Float64Array(16);\n\n // +x;\n mat4.identity(faceRotate);\n mat4.rotateY(faceRotate, faceRotate, -Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 0);\n // -x\n mat4.identity(faceRotate);\n mat4.rotateY(faceRotate, faceRotate, Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 1);\n // +y\n mat4.identity(faceRotate);\n mat4.rotateX(faceRotate, faceRotate, -Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 2);\n // -y\n mat4.identity(faceRotate);\n mat4.rotateX(faceRotate, faceRotate, Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 3);\n // +z\n mat4.identity(faceRotate);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 4);\n // -z\n mat4.identity(faceRotate);\n mat4.rotateY(faceRotate, faceRotate, Math.PI);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 5);\n\n context.viewport.set([0, 0, painter.width, painter.height]);\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport const atmosphereLayout: StructArrayLayout = createLayout([\n {type: 'Float32', name: 'a_pos', components: 3},\n {type: 'Float32', name: 'a_uv', components: 2}\n]);\n","// @flow\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport SegmentVector from '../data/segment.js';\nimport type Context from '../gl/context.js';\nimport {atmosphereLayout} from './atmosphere_attributes.js';\nimport {TriangleIndexArray, AtmosphereVertexArray} from '../data/array_types.js';\n\nexport class AtmosphereBuffer {\n vertexBuffer: VertexBuffer;\n indexBuffer: IndexBuffer;\n segments: SegmentVector;\n\n constructor(context: Context) {\n const vertices = new AtmosphereVertexArray();\n vertices.emplaceBack(-1, 1, 1, 0, 0);\n vertices.emplaceBack(1, 1, 1, 1, 0);\n vertices.emplaceBack(1, -1, 1, 1, 1);\n vertices.emplaceBack(-1, -1, 1, 0, 1);\n\n const triangles = new TriangleIndexArray();\n triangles.emplaceBack(0, 1, 2);\n triangles.emplaceBack(2, 3, 0);\n\n this.vertexBuffer = context.createVertexBuffer(vertices, atmosphereLayout.members);\n this.indexBuffer = context.createIndexBuffer(triangles);\n this.segments = SegmentVector.simpleSegment(0, 0, 4, 2);\n }\n\n destroy() {\n this.vertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.segments.destroy();\n }\n}\n","// @flow\n\nimport browser from '../util/browser.js';\nimport window from '../util/window.js';\n\nimport {mat4} from 'gl-matrix';\nimport SourceCache from '../source/source_cache.js';\nimport EXTENT from '../data/extent.js';\nimport pixelsToTileUnits from '../source/pixels_to_tile_units.js';\nimport SegmentVector from '../data/segment.js';\nimport {PosArray, TileBoundsArray, TriangleIndexArray, LineStripIndexArray} from '../data/array_types.js';\nimport {values} from '../util/util.js';\nimport {isMapAuthenticated} from '../util/mapbox.js';\nimport posAttributes from '../data/pos_attributes.js';\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport ProgramConfiguration from '../data/program_configuration.js';\nimport shaders from '../shaders/shaders.js';\nimport Program from './program.js';\nimport {programUniforms} from './program/program_uniforms.js';\nimport Context from '../gl/context.js';\nimport {fogUniformValues} from '../render/fog.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Texture from './texture.js';\nimport {clippingMaskUniformValues} from './program/clipping_mask_program.js';\nimport Color from '../style-spec/util/color.js';\nimport symbol from './draw_symbol.js';\nimport circle from './draw_circle.js';\nimport assert from 'assert';\nimport heatmap from './draw_heatmap.js';\nimport line from './draw_line.js';\nimport fill from './draw_fill.js';\nimport fillExtrusion from './draw_fill_extrusion.js';\nimport hillshade from './draw_hillshade.js';\nimport raster from './draw_raster.js';\nimport background from './draw_background.js';\nimport debug, {drawDebugPadding, drawDebugQueryGeometry} from './draw_debug.js';\nimport custom from './draw_custom.js';\nimport sky from './draw_sky.js';\nimport drawAtmosphere from './draw_atmosphere.js';\nimport {GlobeSharedBuffers, globeToMercatorTransition} from '../geo/projection/globe_util.js';\nimport {AtmosphereBuffer} from '../render/atmosphere_buffer.js';\nimport {Terrain} from '../terrain/terrain.js';\nimport {Debug} from '../util/debug.js';\nimport Tile from '../source/tile.js';\nimport {RGBAImage} from '../util/image.js';\n\nconst draw = {\n symbol,\n circle,\n heatmap,\n line,\n fill,\n 'fill-extrusion': fillExtrusion,\n hillshade,\n raster,\n background,\n sky,\n debug,\n custom\n};\n\nimport type Transform from '../geo/transform.js';\nimport type {OverscaledTileID, UnwrappedTileID} from '../source/tile_id.js';\nimport type Style from '../style/style.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type ImageManager from './image_manager.js';\nimport type GlyphManager from './glyph_manager.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type {DepthRangeType, DepthMaskType, DepthFuncType} from '../gl/types.js';\nimport type ResolvedImage from '../style-spec/expression/types/resolved_image.js';\nimport type {DynamicDefinesType} from './program/program_uniforms.js';\n\nexport type RenderPass = 'offscreen' | 'opaque' | 'translucent' | 'sky';\nexport type CanvasCopyInstances = {\n canvasCopies: WebGLTexture[],\n timeStamps: number[]\n}\n\ntype PainterOptions = {\n showOverdrawInspector: boolean,\n showTileBoundaries: boolean,\n showTerrainWireframe: boolean,\n showQueryGeometry: boolean,\n showTileAABBs: boolean,\n showPadding: boolean,\n rotating: boolean,\n zooming: boolean,\n moving: boolean,\n gpuTiming: boolean,\n gpuTimingDeferredRender: boolean,\n fadeDuration: number,\n isInitialLoad: boolean,\n speedIndexTiming: boolean\n}\n\ntype TileBoundsBuffers = {|\n tileBoundsBuffer: VertexBuffer,\n tileBoundsIndexBuffer: IndexBuffer,\n tileBoundsSegments: SegmentVector,\n|};\n\ntype GPUTimers = {[layerId: string]: any};\n\n/**\n * Initialize a new painter object.\n *\n * @param {Canvas} gl an experimental-webgl drawing context\n * @private\n */\nclass Painter {\n context: Context;\n transform: Transform;\n _tileTextures: {[_: number]: Array };\n numSublayers: number;\n depthEpsilon: number;\n emptyProgramConfiguration: ProgramConfiguration;\n width: number;\n height: number;\n tileExtentBuffer: VertexBuffer;\n tileExtentSegments: SegmentVector;\n debugBuffer: VertexBuffer;\n debugIndexBuffer: IndexBuffer;\n debugSegments: SegmentVector;\n viewportBuffer: VertexBuffer;\n viewportSegments: SegmentVector;\n quadTriangleIndexBuffer: IndexBuffer;\n mercatorBoundsBuffer: VertexBuffer;\n mercatorBoundsSegments: SegmentVector;\n _tileClippingMaskIDs: {[_: number]: number };\n stencilClearMode: StencilMode;\n style: Style;\n options: PainterOptions;\n imageManager: ImageManager;\n glyphManager: GlyphManager;\n depthRangeFor3D: DepthRangeType;\n opaquePassCutoff: number;\n frameCounter: number;\n renderPass: RenderPass;\n currentLayer: number;\n currentStencilSource: ?string;\n nextStencilID: number;\n id: string;\n _showOverdrawInspector: boolean;\n cache: {[_: string]: Program<*> };\n symbolFadeChange: number;\n gpuTimers: GPUTimers;\n deferredRenderGpuTimeQueries: Array;\n emptyTexture: Texture;\n identityMat: Float32Array;\n debugOverlayTexture: Texture;\n debugOverlayCanvas: HTMLCanvasElement;\n _terrain: ?Terrain;\n globeSharedBuffers: ?GlobeSharedBuffers;\n atmosphereBuffer: AtmosphereBuffer;\n tileLoaded: boolean;\n frameCopies: Array;\n loadTimeStamps: Array;\n _backgroundTiles: {[key: number]: Tile};\n\n constructor(gl: WebGLRenderingContext, transform: Transform, isWebGL2: boolean = false) {\n this.context = new Context(gl, isWebGL2);\n this.transform = transform;\n this._tileTextures = {};\n this.frameCopies = [];\n this.loadTimeStamps = [];\n\n this.setup();\n\n // Within each layer there are multiple distinct z-planes that can be drawn to.\n // This is implemented using the WebGL depth buffer.\n this.numSublayers = SourceCache.maxUnderzooming + SourceCache.maxOverzooming + 1;\n this.depthEpsilon = 1 / Math.pow(2, 16);\n\n this.deferredRenderGpuTimeQueries = [];\n this.gpuTimers = {};\n this.frameCounter = 0;\n this._backgroundTiles = {};\n }\n\n updateTerrain(style: Style, adaptCameraAltitude: boolean) {\n const enabled = !!style && !!style.terrain && this.transform.projection.supportsTerrain;\n if (!enabled && (!this._terrain || !this._terrain.enabled)) return;\n if (!this._terrain) {\n this._terrain = new Terrain(this, style);\n }\n const terrain: Terrain = this._terrain;\n this.transform.elevation = enabled ? terrain : null;\n terrain.update(style, this.transform, adaptCameraAltitude);\n }\n\n _updateFog(style: Style) {\n // Globe makes use of thin fog overlay with a fixed fog range,\n // so we can skip updating fog tile culling for this projection\n const isGlobe = this.transform.projection.name === 'globe';\n\n const fog = style.fog;\n if (!fog || isGlobe || fog.getOpacity(this.transform.pitch) < 1 || fog.properties.get('horizon-blend') < 0.03) {\n this.transform.fogCullDistSq = null;\n return;\n }\n\n // We start culling where the fog opacity function hits\n // 98% which leaves a non-noticeable change threshold.\n const [start, end] = fog.getFovAdjustedRange(this.transform._fov);\n\n if (start > end) {\n this.transform.fogCullDistSq = null;\n return;\n }\n\n const fogBoundFraction = 0.78;\n const fogCullDist = start + (end - start) * fogBoundFraction;\n\n this.transform.fogCullDistSq = fogCullDist * fogCullDist;\n }\n\n get terrain(): ?Terrain {\n return this.transform._terrainEnabled() && this._terrain && this._terrain.enabled ? this._terrain : null;\n }\n\n /*\n * Update the GL viewport, projection matrix, and transforms to compensate\n * for a new width and height value.\n */\n resize(width: number, height: number) {\n this.width = width * browser.devicePixelRatio;\n this.height = height * browser.devicePixelRatio;\n this.context.viewport.set([0, 0, this.width, this.height]);\n\n if (this.style) {\n for (const layerId of this.style.order) {\n this.style._layers[layerId].resize();\n }\n }\n }\n\n setup() {\n const context = this.context;\n\n const tileExtentArray = new PosArray();\n tileExtentArray.emplaceBack(0, 0);\n tileExtentArray.emplaceBack(EXTENT, 0);\n tileExtentArray.emplaceBack(0, EXTENT);\n tileExtentArray.emplaceBack(EXTENT, EXTENT);\n this.tileExtentBuffer = context.createVertexBuffer(tileExtentArray, posAttributes.members);\n this.tileExtentSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n\n const debugArray = new PosArray();\n debugArray.emplaceBack(0, 0);\n debugArray.emplaceBack(EXTENT, 0);\n debugArray.emplaceBack(0, EXTENT);\n debugArray.emplaceBack(EXTENT, EXTENT);\n this.debugBuffer = context.createVertexBuffer(debugArray, posAttributes.members);\n this.debugSegments = SegmentVector.simpleSegment(0, 0, 4, 5);\n\n const viewportArray = new PosArray();\n viewportArray.emplaceBack(-1, -1);\n viewportArray.emplaceBack(1, -1);\n viewportArray.emplaceBack(-1, 1);\n viewportArray.emplaceBack(1, 1);\n this.viewportBuffer = context.createVertexBuffer(viewportArray, posAttributes.members);\n this.viewportSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n\n const tileBoundsArray = new TileBoundsArray();\n tileBoundsArray.emplaceBack(0, 0, 0, 0);\n tileBoundsArray.emplaceBack(EXTENT, 0, EXTENT, 0);\n tileBoundsArray.emplaceBack(0, EXTENT, 0, EXTENT);\n tileBoundsArray.emplaceBack(EXTENT, EXTENT, EXTENT, EXTENT);\n this.mercatorBoundsBuffer = context.createVertexBuffer(tileBoundsArray, boundsAttributes.members);\n this.mercatorBoundsSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n\n const quadTriangleIndices = new TriangleIndexArray();\n quadTriangleIndices.emplaceBack(0, 1, 2);\n quadTriangleIndices.emplaceBack(2, 1, 3);\n this.quadTriangleIndexBuffer = context.createIndexBuffer(quadTriangleIndices);\n\n const tileLineStripIndices = new LineStripIndexArray();\n for (const i of [0, 1, 3, 2, 0]) tileLineStripIndices.emplaceBack(i);\n this.debugIndexBuffer = context.createIndexBuffer(tileLineStripIndices);\n\n this.emptyTexture = new Texture(context,\n new RGBAImage({width: 1, height: 1}, Uint8Array.of(0, 0, 0, 0)), context.gl.RGBA);\n\n this.identityMat = mat4.create();\n\n const gl = this.context.gl;\n this.stencilClearMode = new StencilMode({func: gl.ALWAYS, mask: 0}, 0x0, 0xFF, gl.ZERO, gl.ZERO, gl.ZERO);\n this.loadTimeStamps.push(window.performance.now());\n\n this.atmosphereBuffer = new AtmosphereBuffer(this.context);\n }\n\n getMercatorTileBoundsBuffers(): TileBoundsBuffers {\n return {\n tileBoundsBuffer: this.mercatorBoundsBuffer,\n tileBoundsIndexBuffer: this.quadTriangleIndexBuffer,\n tileBoundsSegments: this.mercatorBoundsSegments\n };\n }\n\n getTileBoundsBuffers(tile: Tile): TileBoundsBuffers {\n tile._makeTileBoundsBuffers(this.context, this.transform.projection);\n if (tile._tileBoundsBuffer) {\n const tileBoundsBuffer = tile._tileBoundsBuffer;\n const tileBoundsIndexBuffer = tile._tileBoundsIndexBuffer;\n const tileBoundsSegments = tile._tileBoundsSegments;\n return {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments};\n } else {\n return this.getMercatorTileBoundsBuffers();\n }\n }\n\n /*\n * Reset the drawing canvas by clearing the stencil buffer so that we can draw\n * new tiles at the same location, while retaining previously drawn pixels.\n */\n clearStencil() {\n const context = this.context;\n const gl = context.gl;\n\n this.nextStencilID = 1;\n this.currentStencilSource = undefined;\n this._tileClippingMaskIDs = {};\n\n // As a temporary workaround for https://github.com/mapbox/mapbox-gl-js/issues/5490,\n // pending an upstream fix, we draw a fullscreen stencil=0 clipping mask here,\n // effectively clearing the stencil buffer: once an upstream patch lands, remove\n // this function in favor of context.clear({ stencil: 0x0 })\n this.useProgram('clippingMask').draw(context, gl.TRIANGLES,\n DepthMode.disabled, this.stencilClearMode, ColorMode.disabled, CullFaceMode.disabled,\n clippingMaskUniformValues(this.identityMat),\n '$clipping', this.viewportBuffer,\n this.quadTriangleIndexBuffer, this.viewportSegments);\n }\n\n resetStencilClippingMasks() {\n if (!this.terrain) {\n this.currentStencilSource = undefined;\n this._tileClippingMaskIDs = {};\n }\n }\n\n _renderTileClippingMasks(layer: StyleLayer, sourceCache?: SourceCache, tileIDs?: Array) {\n if (!sourceCache || this.currentStencilSource === sourceCache.id || !layer.isTileClipped() || !tileIDs || tileIDs.length === 0) {\n return;\n }\n\n if (this._tileClippingMaskIDs && !this.terrain) {\n let dirtyStencilClippingMasks = false;\n // Equivalent tile set is already rendered in stencil\n for (const coord of tileIDs) {\n if (this._tileClippingMaskIDs[coord.key] === undefined) {\n dirtyStencilClippingMasks = true;\n break;\n }\n }\n if (!dirtyStencilClippingMasks) {\n return;\n }\n }\n\n this.currentStencilSource = sourceCache.id;\n\n const context = this.context;\n const gl = context.gl;\n\n if (this.nextStencilID + tileIDs.length > 256) {\n // we'll run out of fresh IDs so we need to clear and start from scratch\n this.clearStencil();\n }\n\n context.setColorMode(ColorMode.disabled);\n context.setDepthMode(DepthMode.disabled);\n\n const program = this.useProgram('clippingMask');\n\n this._tileClippingMaskIDs = {};\n\n for (const tileID of tileIDs) {\n const tile = sourceCache.getTile(tileID);\n const id = this._tileClippingMaskIDs[tileID.key] = this.nextStencilID++;\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = this.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, DepthMode.disabled,\n // Tests will always pass, and ref value will be written to stencil buffer.\n new StencilMode({func: gl.ALWAYS, mask: 0}, id, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE),\n ColorMode.disabled, CullFaceMode.disabled, clippingMaskUniformValues(tileID.projMatrix),\n '$clipping', tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n }\n }\n\n stencilModeFor3D(): StencilMode {\n this.currentStencilSource = undefined;\n\n if (this.nextStencilID + 1 > 256) {\n this.clearStencil();\n }\n\n const id = this.nextStencilID++;\n const gl = this.context.gl;\n return new StencilMode({func: gl.NOTEQUAL, mask: 0xFF}, id, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE);\n }\n\n stencilModeForClipping(tileID: OverscaledTileID): $ReadOnly {\n if (this.terrain) return this.terrain.stencilModeForRTTOverlap(tileID);\n const gl = this.context.gl;\n return new StencilMode({func: gl.EQUAL, mask: 0xFF}, this._tileClippingMaskIDs[tileID.key], 0x00, gl.KEEP, gl.KEEP, gl.REPLACE);\n }\n\n /*\n * Sort coordinates by Z as drawing tiles is done in Z-descending order.\n * All children with the same Z write the same stencil value. Children\n * stencil values are greater than parent's. This is used only for raster\n * and raster-dem tiles, which are already clipped to tile boundaries, to\n * mask area of tile overlapped by children tiles.\n * Stencil ref values continue range used in _tileClippingMaskIDs.\n *\n * Returns [StencilMode for tile overscaleZ map, sortedCoords].\n */\n stencilConfigForOverlap(tileIDs: Array): [{[_: number]: $ReadOnly}, Array] {\n const gl = this.context.gl;\n const coords = tileIDs.sort((a, b) => b.overscaledZ - a.overscaledZ);\n const minTileZ = coords[coords.length - 1].overscaledZ;\n const stencilValues = coords[0].overscaledZ - minTileZ + 1;\n if (stencilValues > 1) {\n this.currentStencilSource = undefined;\n if (this.nextStencilID + stencilValues > 256) {\n this.clearStencil();\n }\n const zToStencilMode = {};\n for (let i = 0; i < stencilValues; i++) {\n zToStencilMode[i + minTileZ] = new StencilMode({func: gl.GEQUAL, mask: 0xFF}, i + this.nextStencilID, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE);\n }\n this.nextStencilID += stencilValues;\n return [zToStencilMode, coords];\n }\n return [{[minTileZ]: StencilMode.disabled}, coords];\n }\n\n colorModeForRenderPass(): $ReadOnly {\n const gl = this.context.gl;\n if (this._showOverdrawInspector) {\n const numOverdrawSteps = 8;\n const a = 1 / numOverdrawSteps;\n\n return new ColorMode([gl.CONSTANT_COLOR, gl.ONE], new Color(a, a, a, 0), [true, true, true, true]);\n } else if (this.renderPass === 'opaque') {\n return ColorMode.unblended;\n } else {\n return ColorMode.alphaBlended;\n }\n }\n\n depthModeForSublayer(n: number, mask: DepthMaskType, func: ?DepthFuncType): $ReadOnly {\n if (!this.opaquePassEnabledForLayer()) return DepthMode.disabled;\n const depth = 1 - ((1 + this.currentLayer) * this.numSublayers + n) * this.depthEpsilon;\n return new DepthMode(func || this.context.gl.LEQUAL, mask, [depth, depth]);\n }\n\n /*\n * The opaque pass and 3D layers both use the depth buffer.\n * Layers drawn above 3D layers need to be drawn using the\n * painter's algorithm so that they appear above 3D features.\n * This returns true for layers that can be drawn using the\n * opaque pass.\n */\n opaquePassEnabledForLayer(): boolean {\n return this.currentLayer < this.opaquePassCutoff;\n }\n\n render(style: Style, options: PainterOptions) {\n this.style = style;\n this.options = options;\n\n this.imageManager = style.imageManager;\n this.glyphManager = style.glyphManager;\n\n this.symbolFadeChange = style.placement.symbolFadeChange(browser.now());\n\n this.imageManager.beginFrame();\n\n const layerIds = this.style.order;\n const sourceCaches = this.style._sourceCaches;\n\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n if (sourceCache.used) {\n sourceCache.prepare(this.context);\n }\n }\n\n const coordsAscending: {[_: string]: Array} = {};\n const coordsDescending: {[_: string]: Array} = {};\n const coordsDescendingSymbol: {[_: string]: Array} = {};\n\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n coordsAscending[id] = sourceCache.getVisibleCoordinates();\n coordsDescending[id] = coordsAscending[id].slice().reverse();\n coordsDescendingSymbol[id] = sourceCache.getVisibleCoordinates(true).reverse();\n }\n\n this.opaquePassCutoff = Infinity;\n for (let i = 0; i < layerIds.length; i++) {\n const layerId = layerIds[i];\n if (this.style._layers[layerId].is3D()) {\n this.opaquePassCutoff = i;\n break;\n }\n }\n\n if (this.terrain) {\n this.terrain.updateTileBinding(coordsDescendingSymbol);\n // All render to texture is done in translucent pass to remove need\n // for depth buffer allocation per tile.\n this.opaquePassCutoff = 0;\n }\n\n if (this.transform.projection.name === 'globe' && !this.globeSharedBuffers) {\n this.globeSharedBuffers = new GlobeSharedBuffers(this.context);\n }\n\n // Following line is billing related code. Do not change. See LICENSE.txt\n if (!isMapAuthenticated(this.context.gl)) return;\n\n // Offscreen pass ===============================================\n // We first do all rendering that requires rendering to a separate\n // framebuffer, and then save those for rendering back to the map\n // later: in doing this we avoid doing expensive framebuffer restores.\n this.renderPass = 'offscreen';\n\n for (const layerId of layerIds) {\n const layer = this.style._layers[layerId];\n const sourceCache = style._getLayerSourceCache(layer);\n if (!layer.hasOffscreenPass() || layer.isHidden(this.transform.zoom)) continue;\n\n const coords = sourceCache ? coordsDescending[sourceCache.id] : undefined;\n if (!(layer.type === 'custom' || layer.isSky()) && !(coords && coords.length)) continue;\n\n this.renderLayer(this, sourceCache, layer, coords);\n }\n\n this.depthRangeFor3D = [0, 1 - ((style.order.length + 2) * this.numSublayers * this.depthEpsilon)];\n\n // Terrain depth offscreen render pass ==========================\n // With terrain on, renders the depth buffer into a texture.\n // This texture is used for occlusion testing (labels)\n const terrain = this.terrain;\n if (terrain && (this.style.hasSymbolLayers() || this.style.hasCircleLayers())) {\n terrain.drawDepth();\n }\n\n // Rebind the main framebuffer now that all offscreen layers have been rendered:\n this.context.bindFramebuffer.set(null);\n this.context.viewport.set([0, 0, this.width, this.height]);\n\n // Clear buffers in preparation for drawing to the main framebuffer\n this.context.clear({color: options.showOverdrawInspector ? Color.black : Color.transparent, depth: 1});\n this.clearStencil();\n\n this._showOverdrawInspector = options.showOverdrawInspector;\n\n // Opaque pass ===============================================\n // Draw opaque layers top-to-bottom first.\n this.renderPass = 'opaque';\n\n if (!this.terrain) {\n for (this.currentLayer = layerIds.length - 1; this.currentLayer >= 0; this.currentLayer--) {\n const layer = this.style._layers[layerIds[this.currentLayer]];\n const sourceCache = style._getLayerSourceCache(layer);\n if (layer.isSky()) continue;\n const coords = sourceCache ? coordsDescending[sourceCache.id] : undefined;\n\n this._renderTileClippingMasks(layer, sourceCache, coords);\n this.renderLayer(this, sourceCache, layer, coords);\n }\n }\n\n if (this.style.fog && this.transform.projection.supportsFog) {\n drawAtmosphere(this, this.style.fog);\n }\n\n // Sky pass ======================================================\n // Draw all sky layers bottom to top.\n // They are drawn at max depth, they are drawn after opaque and before\n // translucent to fail depth testing and mix with translucent objects.\n this.renderPass = 'sky';\n const isTransitioning = globeToMercatorTransition(this.transform.zoom) > 0.0;\n if ((isTransitioning || this.transform.projection.name !== 'globe') && this.transform.isHorizonVisible()) {\n for (this.currentLayer = 0; this.currentLayer < layerIds.length; this.currentLayer++) {\n const layer = this.style._layers[layerIds[this.currentLayer]];\n const sourceCache = style._getLayerSourceCache(layer);\n if (!layer.isSky()) continue;\n const coords = sourceCache ? coordsDescending[sourceCache.id] : undefined;\n\n this.renderLayer(this, sourceCache, layer, coords);\n }\n }\n\n // Translucent pass ===============================================\n // Draw all other layers bottom-to-top.\n this.renderPass = 'translucent';\n\n this.currentLayer = 0;\n while (this.currentLayer < layerIds.length) {\n const layer = this.style._layers[layerIds[this.currentLayer]];\n const sourceCache = style._getLayerSourceCache(layer);\n\n // Nothing to draw in translucent pass for sky layers, advance\n if (layer.isSky()) {\n ++this.currentLayer;\n continue;\n }\n\n // With terrain on and for draped layers only, issue rendering and progress\n // this.currentLayer until the next non-draped layer.\n // Otherwise we interleave terrain draped render with non-draped layers on top\n if (this.terrain && this.style.isLayerDraped(layer)) {\n if (layer.isHidden(this.transform.zoom)) {\n ++this.currentLayer;\n continue;\n }\n const terrain = (((this.terrain): any): Terrain);\n const prevLayer = this.currentLayer;\n this.currentLayer = terrain.renderBatch(this.currentLayer);\n assert(this.context.bindFramebuffer.current === null);\n assert(this.currentLayer > prevLayer);\n continue;\n }\n\n // For symbol layers in the translucent pass, we add extra tiles to the renderable set\n // for cross-tile symbol fading. Symbol layers don't use tile clipping, so no need to render\n // separate clipping masks\n const coords = sourceCache ?\n (layer.type === 'symbol' ? coordsDescendingSymbol : coordsDescending)[sourceCache.id] :\n undefined;\n\n this._renderTileClippingMasks(layer, sourceCache, sourceCache ? coordsAscending[sourceCache.id] : undefined);\n this.renderLayer(this, sourceCache, layer, coords);\n\n ++this.currentLayer;\n }\n\n if (this.terrain) {\n this.terrain.postRender();\n }\n\n if (this.options.showTileBoundaries || this.options.showQueryGeometry || this.options.showTileAABBs) {\n //Use source with highest maxzoom\n let selectedSource = null;\n const layers = values(this.style._layers);\n layers.forEach((layer) => {\n const sourceCache = style._getLayerSourceCache(layer);\n if (sourceCache && !layer.isHidden(this.transform.zoom)) {\n if (!selectedSource || (selectedSource.getSource().maxzoom < sourceCache.getSource().maxzoom)) {\n selectedSource = sourceCache;\n }\n }\n });\n if (selectedSource) {\n if (this.options.showTileBoundaries) {\n draw.debug(this, selectedSource, selectedSource.getVisibleCoordinates());\n }\n\n Debug.run(() => {\n if (!selectedSource) return;\n if (this.options.showQueryGeometry) {\n drawDebugQueryGeometry(this, selectedSource, selectedSource.getVisibleCoordinates());\n }\n if (this.options.showTileAABBs) {\n Debug.drawAabbs(this, selectedSource, selectedSource.getVisibleCoordinates());\n }\n });\n }\n }\n\n if (this.options.showPadding) {\n drawDebugPadding(this);\n }\n\n // Set defaults for most GL values so that anyone using the state after the render\n // encounters more expected values.\n this.context.setDefault();\n this.frameCounter = (this.frameCounter + 1) % Number.MAX_SAFE_INTEGER;\n\n if (this.tileLoaded && this.options.speedIndexTiming) {\n this.loadTimeStamps.push(window.performance.now());\n this.saveCanvasCopy();\n }\n }\n\n renderLayer(painter: Painter, sourceCache?: SourceCache, layer: StyleLayer, coords?: Array) {\n if (layer.isHidden(this.transform.zoom)) return;\n if (layer.type !== 'background' && layer.type !== 'sky' && layer.type !== 'custom' && !(coords && coords.length)) return;\n this.id = layer.id;\n\n this.gpuTimingStart(layer);\n if (!painter.transform.projection.unsupportedLayers || !painter.transform.projection.unsupportedLayers.includes(layer.type) ||\n (painter.terrain && layer.type === 'custom')) {\n draw[layer.type](painter, sourceCache, layer, coords, this.style.placement.variableOffsets, this.options.isInitialLoad);\n }\n this.gpuTimingEnd();\n }\n\n gpuTimingStart(layer: StyleLayer) {\n if (!this.options.gpuTiming) return;\n const ext = this.context.extTimerQuery;\n // This tries to time the draw call itself, but note that the cost for drawing a layer\n // may be dominated by the cost of uploading vertices to the GPU.\n // To instrument that, we'd need to pass the layerTimers object down into the bucket\n // uploading logic.\n let layerTimer = this.gpuTimers[layer.id];\n if (!layerTimer) {\n layerTimer = this.gpuTimers[layer.id] = {\n calls: 0,\n cpuTime: 0,\n query: ext.createQueryEXT()\n };\n }\n layerTimer.calls++;\n ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, layerTimer.query);\n }\n\n gpuTimingDeferredRenderStart() {\n if (this.options.gpuTimingDeferredRender) {\n const ext = this.context.extTimerQuery;\n const query = ext.createQueryEXT();\n this.deferredRenderGpuTimeQueries.push(query);\n ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, query);\n }\n }\n\n gpuTimingDeferredRenderEnd() {\n if (!this.options.gpuTimingDeferredRender) return;\n const ext = this.context.extTimerQuery;\n ext.endQueryEXT(ext.TIME_ELAPSED_EXT);\n }\n\n gpuTimingEnd() {\n if (!this.options.gpuTiming) return;\n const ext = this.context.extTimerQuery;\n ext.endQueryEXT(ext.TIME_ELAPSED_EXT);\n }\n\n collectGpuTimers(): GPUTimers {\n const currentLayerTimers = this.gpuTimers;\n this.gpuTimers = {};\n return currentLayerTimers;\n }\n\n collectDeferredRenderGpuQueries(): Array {\n const currentQueries = this.deferredRenderGpuTimeQueries;\n this.deferredRenderGpuTimeQueries = [];\n return currentQueries;\n }\n\n queryGpuTimers(gpuTimers: GPUTimers): {[layerId: string]: number} {\n const layers = {};\n for (const layerId in gpuTimers) {\n const gpuTimer = gpuTimers[layerId];\n const ext = this.context.extTimerQuery;\n const gpuTime = ext.getQueryObjectEXT(gpuTimer.query, ext.QUERY_RESULT_EXT) / (1000 * 1000);\n ext.deleteQueryEXT(gpuTimer.query);\n layers[layerId] = (gpuTime: number);\n }\n return layers;\n }\n\n queryGpuTimeDeferredRender(gpuQueries: Array): number {\n if (!this.options.gpuTimingDeferredRender) return 0;\n const ext = this.context.extTimerQuery;\n\n let gpuTime = 0;\n for (const query of gpuQueries) {\n gpuTime += ext.getQueryObjectEXT(query, ext.QUERY_RESULT_EXT) / (1000 * 1000);\n ext.deleteQueryEXT(query);\n }\n\n return gpuTime;\n }\n\n /**\n * Transform a matrix to incorporate the *-translate and *-translate-anchor properties into it.\n * @param inViewportPixelUnitsUnits True when the units accepted by the matrix are in viewport pixels instead of tile units.\n * @returns {Float32Array} matrix\n * @private\n */\n translatePosMatrix(matrix: Float32Array, tile: Tile, translate: [number, number], translateAnchor: 'map' | 'viewport', inViewportPixelUnitsUnits?: boolean): Float32Array {\n if (!translate[0] && !translate[1]) return matrix;\n\n const angle = inViewportPixelUnitsUnits ?\n (translateAnchor === 'map' ? this.transform.angle : 0) :\n (translateAnchor === 'viewport' ? -this.transform.angle : 0);\n\n if (angle) {\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n translate = [\n translate[0] * cosA - translate[1] * sinA,\n translate[0] * sinA + translate[1] * cosA\n ];\n }\n\n const translation = [\n inViewportPixelUnitsUnits ? translate[0] : pixelsToTileUnits(tile, translate[0], this.transform.zoom),\n inViewportPixelUnitsUnits ? translate[1] : pixelsToTileUnits(tile, translate[1], this.transform.zoom),\n 0\n ];\n\n const translatedMatrix = new Float32Array(16);\n mat4.translate(translatedMatrix, matrix, translation);\n return translatedMatrix;\n }\n\n saveTileTexture(texture: Texture) {\n const textures = this._tileTextures[texture.size[0]];\n if (!textures) {\n this._tileTextures[texture.size[0]] = [texture];\n } else {\n textures.push(texture);\n }\n }\n\n getTileTexture(size: number): null | Texture {\n const textures = this._tileTextures[size];\n return textures && textures.length > 0 ? textures.pop() : null;\n }\n\n /**\n * Checks whether a pattern image is needed, and if it is, whether it is not loaded.\n *\n * @returns true if a needed image is missing and rendering needs to be skipped.\n * @private\n */\n isPatternMissing(image: ?ResolvedImage): boolean {\n if (image === null) return true;\n if (image === undefined) return false;\n return !this.imageManager.getPattern(image.toString());\n }\n\n terrainRenderModeElevated(): boolean {\n // Whether elevation sampling should be enabled in the vertex shader.\n return this.style && !!this.style.getTerrain() && !!this.terrain && !this.terrain.renderingToTexture;\n }\n\n /**\n * Returns #defines that would need to be injected into every Program\n * based on the current state of Painter.\n *\n * @returns {string[]}\n * @private\n */\n currentGlobalDefines(): string[] {\n const rtt = this.terrain && this.terrain.renderingToTexture;\n const zeroExaggeration = this.terrain && this.terrain.exaggeration() === 0.0;\n const fog = this.style && this.style.fog;\n const defines = [];\n\n if (this.terrainRenderModeElevated()) defines.push('TERRAIN');\n if (this.transform.projection.name === 'globe') defines.push('GLOBE');\n if (zeroExaggeration) defines.push('ZERO_EXAGGERATION');\n // When terrain is active, fog is rendered as part of draping, not as part of tile\n // rendering. Removing the fog flag during tile rendering avoids additional defines.\n if (fog && !rtt && fog.getOpacity(this.transform.pitch) !== 0.0) {\n defines.push('FOG');\n }\n if (rtt) defines.push('RENDER_TO_TEXTURE');\n if (this._showOverdrawInspector) defines.push('OVERDRAW_INSPECTOR');\n return defines;\n }\n\n useProgram(name: string, programConfiguration: ?ProgramConfiguration, fixedDefines: ?DynamicDefinesType[]): Program {\n this.cache = this.cache || {};\n const defines = (((fixedDefines || []): any): string[]);\n\n const globalDefines = this.currentGlobalDefines();\n const allDefines = globalDefines.concat(defines);\n const key = Program.cacheKey(shaders[name], name, allDefines, programConfiguration);\n\n if (!this.cache[key]) {\n this.cache[key] = new Program(this.context, name, shaders[name], programConfiguration, programUniforms[name], allDefines);\n }\n return this.cache[key];\n }\n\n /*\n * Reset some GL state to default values to avoid hard-to-debug bugs\n * in custom layers.\n */\n setCustomLayerDefaults() {\n // Prevent custom layers from unintentionally modify the last VAO used.\n // All other state is state is restored on it's own, but for VAOs it's\n // simpler to unbind so that we don't have to track the state of VAOs.\n this.context.unbindVAO();\n\n // The default values for this state is meaningful and often expected.\n // Leaving this state dirty could cause a lot of confusion for users.\n this.context.cullFace.setDefault();\n this.context.frontFace.setDefault();\n this.context.cullFaceSide.setDefault();\n this.context.activeTexture.setDefault();\n this.context.pixelStoreUnpack.setDefault();\n this.context.pixelStoreUnpackPremultiplyAlpha.setDefault();\n this.context.pixelStoreUnpackFlipY.setDefault();\n }\n\n /*\n * Set GL state that is shared by all layers.\n */\n setBaseState() {\n const gl = this.context.gl;\n this.context.cullFace.set(false);\n this.context.viewport.set([0, 0, this.width, this.height]);\n this.context.blendEquation.set(gl.FUNC_ADD);\n }\n\n initDebugOverlayCanvas() {\n if (this.debugOverlayCanvas == null) {\n this.debugOverlayCanvas = window.document.createElement('canvas');\n this.debugOverlayCanvas.width = 512;\n this.debugOverlayCanvas.height = 512;\n const gl = this.context.gl;\n this.debugOverlayTexture = new Texture(this.context, this.debugOverlayCanvas, gl.RGBA);\n }\n }\n\n destroy() {\n if (this._terrain) {\n this._terrain.destroy();\n }\n if (this.globeSharedBuffers) {\n this.globeSharedBuffers.destroy();\n }\n this.emptyTexture.destroy();\n if (this.debugOverlayTexture) {\n this.debugOverlayTexture.destroy();\n }\n if (this.atmosphereBuffer) {\n this.atmosphereBuffer.destroy();\n }\n }\n\n prepareDrawTile() {\n if (this.terrain) {\n this.terrain.prepareDrawTile();\n }\n }\n\n prepareDrawProgram(context: Context, program: Program<*>, tileID: ?UnwrappedTileID) {\n\n // Fog is not enabled when rendering to texture so we\n // can safely skip uploading uniforms in that case\n if (this.terrain && this.terrain.renderingToTexture) {\n return;\n }\n\n const fog = this.style.fog;\n\n if (fog) {\n const fogOpacity = fog.getOpacity(this.transform.pitch);\n const fogUniforms = fogUniformValues(\n this, fog, tileID, fogOpacity,\n this.transform.frustumCorners.TL,\n this.transform.frustumCorners.TR,\n this.transform.frustumCorners.BR,\n this.transform.frustumCorners.BL,\n this.transform.globeCenterInViewSpace,\n this.transform.globeRadius,\n [\n this.transform.width * browser.devicePixelRatio,\n this.transform.height * browser.devicePixelRatio\n ]);\n\n program.setFogUniformValues(context, fogUniforms);\n }\n }\n\n setTileLoadedFlag(flag: boolean) {\n this.tileLoaded = flag;\n }\n\n saveCanvasCopy() {\n const canvas = this.canvasCopy();\n if (!canvas) return;\n this.frameCopies.push(canvas);\n this.tileLoaded = false;\n }\n\n canvasCopy(): ?WebGLTexture {\n const gl = this.context.gl;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, 0);\n return texture;\n }\n\n getCanvasCopiesAndTimestamps(): CanvasCopyInstances {\n return {\n canvasCopies: this.frameCopies,\n timeStamps: this.loadTimeStamps\n };\n }\n\n averageElevationNeedsEasing(): boolean {\n if (!this.transform._elevation) return false;\n\n const fog = this.style && this.style.fog;\n if (!fog) return false;\n\n const fogOpacity = fog.getOpacity(this.transform.pitch);\n if (fogOpacity === 0) return false;\n\n return true;\n }\n\n getBackgroundTiles(): {[key: number]: Tile} {\n const oldTiles = this._backgroundTiles;\n const newTiles = this._backgroundTiles = {};\n\n const tileSize = 512;\n const tileIDs = this.transform.coveringTiles({tileSize});\n for (const tileID of tileIDs) {\n newTiles[tileID.key] = oldTiles[tileID.key] || new Tile(tileID, tileSize, this.transform.tileZoom, this);\n }\n return newTiles;\n }\n\n clearBackgroundTiles() {\n this._backgroundTiles = {};\n }\n}\n\nexport default Painter;\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Program from './program.js';\nimport {circleUniformValues, circleDefinesValues} from './program/circle_program.js';\nimport SegmentVector from '../data/segment.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type CircleStyleLayer from '../style/style_layer/circle_style_layer.js';\nimport type CircleBucket from '../data/bucket/circle_bucket.js';\nimport type ProgramConfiguration from '../data/program_configuration.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type {UniformValues} from './uniform_binding.js';\nimport type {CircleUniformsType} from './program/circle_program.js';\nimport type Tile from '../source/tile.js';\nimport type {DynamicDefinesType} from './program/program_uniforms.js';\n\nexport default drawCircles;\n\ntype TileRenderState = {\n programConfiguration: ProgramConfiguration,\n program: Program<*>,\n layoutVertexBuffer: VertexBuffer,\n globeExtVertexBuffer: ?VertexBuffer,\n indexBuffer: IndexBuffer,\n uniformValues: UniformValues,\n tile: Tile\n};\n\ntype SegmentsTileRenderState = {\n segments: SegmentVector,\n sortKey: number,\n state: TileRenderState\n};\n\nfunction drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleStyleLayer, coords: Array) {\n if (painter.renderPass !== 'translucent') return;\n\n const opacity = layer.paint.get('circle-opacity');\n const strokeWidth = layer.paint.get('circle-stroke-width');\n const strokeOpacity = layer.paint.get('circle-stroke-opacity');\n const sortFeaturesByKey = layer.layout.get('circle-sort-key').constantOr(1) !== undefined;\n\n if (opacity.constantOr(1) === 0 && (strokeWidth.constantOr(1) === 0 || strokeOpacity.constantOr(1) === 0)) {\n return;\n }\n\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n // Turn off stencil testing to allow circles to be drawn across boundaries,\n // so that large circles are not clipped to tiles\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const isGlobeProjection = tr.projection.name === 'globe';\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n\n const segmentsRenderStates: Array = [];\n\n for (let i = 0; i < coords.length; i++) {\n const coord = coords[i];\n\n const tile = sourceCache.getTile(coord);\n const bucket: ?CircleBucket<*> = (tile.getBucket(layer): any);\n if (!bucket || bucket.projection.name !== tr.projection.name) continue;\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const definesValues = circleDefinesValues(layer);\n if (isGlobeProjection) {\n definesValues.push('PROJECTION_GLOBE_VIEW');\n }\n const program = painter.useProgram('circle', programConfiguration, ((definesValues: any): DynamicDefinesType[]));\n const layoutVertexBuffer = bucket.layoutVertexBuffer;\n const globeExtVertexBuffer = bucket.globeExtVertexBuffer;\n const indexBuffer = bucket.indexBuffer;\n const invMatrix = tr.projection.createInversionMatrix(tr, coord.canonical);\n const uniformValues = circleUniformValues(painter, coord, tile, invMatrix, mercatorCenter, layer);\n\n const state: TileRenderState = {\n programConfiguration,\n program,\n layoutVertexBuffer,\n globeExtVertexBuffer,\n indexBuffer,\n uniformValues,\n tile\n };\n\n if (sortFeaturesByKey) {\n const oldSegments = bucket.segments.get();\n for (const segment of oldSegments) {\n segmentsRenderStates.push({\n segments: new SegmentVector([segment]),\n sortKey: ((segment.sortKey: any): number),\n state\n });\n }\n } else {\n segmentsRenderStates.push({\n segments: bucket.segments,\n sortKey: 0,\n state\n });\n }\n\n }\n\n if (sortFeaturesByKey) {\n segmentsRenderStates.sort((a, b) => a.sortKey - b.sortKey);\n }\n\n const terrainOptions = {useDepthForOcclusion: !isGlobeProjection};\n\n for (const segmentsState of segmentsRenderStates) {\n const {programConfiguration, program, layoutVertexBuffer, globeExtVertexBuffer, indexBuffer, uniformValues, tile} = segmentsState.state;\n const segments = segmentsState.segments;\n\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program, terrainOptions);\n\n painter.prepareDrawProgram(context, program, tile.tileID.toUnwrapped());\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, layoutVertexBuffer, indexBuffer, segments,\n layer.paint, tr.zoom, programConfiguration, [globeExtVertexBuffer]);\n }\n}\n","// @flow\n\nimport Texture from './texture.js';\nimport Color from '../style-spec/util/color.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n heatmapUniformValues,\n heatmapTextureUniformValues\n} from './program/heatmap_program.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\n\nimport type Painter from './painter.js';\nimport type Context from '../gl/context.js';\nimport type Framebuffer from '../gl/framebuffer.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type HeatmapStyleLayer from '../style/style_layer/heatmap_style_layer.js';\nimport type HeatmapBucket from '../data/bucket/heatmap_bucket.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\n\nexport default drawHeatmap;\n\nfunction drawHeatmap(painter: Painter, sourceCache: SourceCache, layer: HeatmapStyleLayer, coords: Array) {\n if (layer.paint.get('heatmap-opacity') === 0) {\n return;\n }\n\n if (painter.renderPass === 'offscreen') {\n const context = painter.context;\n const gl = context.gl;\n\n // Allow kernels to be drawn across boundaries, so that\n // large kernels are not clipped to tiles\n const stencilMode = StencilMode.disabled;\n // Turn on additive blending for kernels, which is a key aspect of kernel density estimation formula\n const colorMode = new ColorMode([gl.ONE, gl.ONE], Color.transparent, [true, true, true, true]);\n const resolutionScaling = painter.transform.projection.name === 'globe' ? 0.5 : 0.25;\n\n bindFramebuffer(context, painter, layer, resolutionScaling);\n\n context.clear({color: Color.transparent});\n\n const tr = painter.transform;\n\n const isGlobeProjection = tr.projection.name === 'globe';\n\n const definesValues = isGlobeProjection ? ['PROJECTION_GLOBE_VIEW'] : null;\n const cullMode = isGlobeProjection ? CullFaceMode.frontCCW : CullFaceMode.disabled;\n\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n\n for (let i = 0; i < coords.length; i++) {\n const coord = coords[i];\n\n // Skip tiles that have uncovered parents to avoid flickering; we don't need\n // to use complex tile masking here because the change between zoom levels is subtle,\n // so it's fine to simply render the parent until all its 4 children are loaded\n if (sourceCache.hasRenderableParent(coord)) continue;\n\n const tile = sourceCache.getTile(coord);\n const bucket: ?HeatmapBucket = (tile.getBucket(layer): any);\n if (!bucket || bucket.projection.name !== tr.projection.name) continue;\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram('heatmap', programConfiguration, definesValues);\n const {zoom} = painter.transform;\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n const invMatrix = tr.projection.createInversionMatrix(tr, coord.canonical);\n\n program.draw(context, gl.TRIANGLES, DepthMode.disabled, stencilMode, colorMode, cullMode,\n heatmapUniformValues(painter, coord,\n tile, invMatrix, mercatorCenter, zoom, layer.paint.get('heatmap-intensity')),\n layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer,\n bucket.segments, layer.paint, painter.transform.zoom,\n programConfiguration, isGlobeProjection ? [bucket.globeExtVertexBuffer] : null);\n }\n\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n } else if (painter.renderPass === 'translucent') {\n painter.context.setColorMode(painter.colorModeForRenderPass());\n renderTextureToMap(painter, layer);\n }\n}\n\nfunction bindFramebuffer(context: Context, painter: Painter, layer: HeatmapStyleLayer, scaling: number) {\n const gl = context.gl;\n const width = painter.width * scaling;\n const height = painter.height * scaling;\n\n context.activeTexture.set(gl.TEXTURE1);\n context.viewport.set([0, 0, width, height]);\n\n let fbo = layer.heatmapFbo;\n\n if (!fbo || (fbo && (fbo.width !== width || fbo.height !== height))) {\n if (fbo) { fbo.destroy(); }\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n fbo = layer.heatmapFbo = context.createFramebuffer(width, height, false);\n\n bindTextureToFramebuffer(context, painter, texture, fbo, width, height);\n\n } else {\n gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n context.bindFramebuffer.set(fbo.framebuffer);\n }\n}\n\nfunction bindTextureToFramebuffer(context: Context, painter: Painter, texture: ?WebGLTexture, fbo: Framebuffer, width: number, height: number) {\n const gl = context.gl;\n // Use the higher precision half-float texture where available (producing much smoother looking heatmaps);\n // Otherwise, fall back to a low precision texture\n /* $FlowFixMe[prop-missing] WebGL2 */\n const type = context.extRenderToTextureHalfFloat ? (context.isWebGL2 ? gl.HALF_FLOAT : context.extTextureHalfFloat.HALF_FLOAT_OES) : gl.UNSIGNED_BYTE;\n /* $FlowFixMe[prop-missing] WebGL2 */\n gl.texImage2D(gl.TEXTURE_2D, 0, (context.isWebGL2 && context.extRenderToTextureHalfFloat) ? gl.RGBA16F : gl.RGBA, width, height, 0, gl.RGBA, type, null);\n fbo.colorAttachment.set(texture);\n}\n\nfunction renderTextureToMap(painter: Painter, layer: HeatmapStyleLayer) {\n const context = painter.context;\n const gl = context.gl;\n\n // Here we bind two different textures from which we'll sample in drawing\n // heatmaps: the kernel texture, prepared in the offscreen pass, and a\n // color ramp texture.\n const fbo = layer.heatmapFbo;\n if (!fbo) return;\n context.activeTexture.set(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n\n context.activeTexture.set(gl.TEXTURE1);\n let colorRampTexture = layer.colorRampTexture;\n if (!colorRampTexture) {\n colorRampTexture = layer.colorRampTexture = new Texture(context, layer.colorRamp, gl.RGBA);\n }\n colorRampTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n painter.useProgram('heatmapTexture').draw(context, gl.TRIANGLES,\n DepthMode.disabled, StencilMode.disabled, painter.colorModeForRenderPass(), CullFaceMode.disabled,\n heatmapTextureUniformValues(painter, layer, 0, 1),\n layer.id, painter.viewportBuffer, painter.quadTriangleIndexBuffer,\n painter.viewportSegments, layer.paint, painter.transform.zoom);\n}\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport Texture from './texture.js';\nimport {\n lineUniformValues,\n linePatternUniformValues,\n lineDefinesValues\n} from './program/line_program.js';\nimport browser from '../util/browser.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type LineStyleLayer from '../style/style_layer/line_style_layer.js';\nimport type LineBucket from '../data/bucket/line_bucket.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type {DynamicDefinesType} from './program/program_uniforms.js';\nimport {clamp, nextPowerOfTwo} from '../util/util.js';\nimport {renderColorRamp} from '../util/color_ramp.js';\nimport EXTENT from '../data/extent.js';\n\nexport default function drawLine(painter: Painter, sourceCache: SourceCache, layer: LineStyleLayer, coords: Array) {\n if (painter.renderPass !== 'translucent') return;\n\n const opacity = layer.paint.get('line-opacity');\n const width = layer.paint.get('line-width');\n if (opacity.constantOr(1) === 0 || width.constantOr(1) === 0) return;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n const colorMode = painter.colorModeForRenderPass();\n const pixelRatio = (painter.terrain && painter.terrain.renderingToTexture) ? 1.0 : browser.devicePixelRatio;\n\n const dasharrayProperty = layer.paint.get('line-dasharray');\n const dasharray = dasharrayProperty.constantOr((1: any));\n const capProperty = layer.layout.get('line-cap');\n const patternProperty = layer.paint.get('line-pattern');\n const image = patternProperty.constantOr((1: any));\n\n const gradient = layer.paint.get('line-gradient');\n\n const programId = image ? 'linePattern' : 'line';\n\n const context = painter.context;\n const gl = context.gl;\n\n const definesValues = lineDefinesValues(layer);\n let useStencilMaskRenderPass = definesValues.includes('RENDER_LINE_ALPHA_DISCARD');\n if (painter.terrain && painter.terrain.clipOrMaskOverlapStencilType()) {\n useStencilMaskRenderPass = false;\n }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n if (image && !tile.patternsLoaded()) continue;\n\n const bucket: ?LineBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n painter.prepareDrawTile();\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram(programId, programConfiguration, ((definesValues: any): DynamicDefinesType[]));\n\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern && tile.imageAtlas) {\n const posTo = tile.imageAtlas.patternPositions[constantPattern.toString()];\n if (posTo) programConfiguration.setConstantPatternPositions(posTo);\n }\n\n const constantDash = dasharrayProperty.constantOr(null);\n const constantCap = capProperty.constantOr((null: any));\n\n if (!image && constantDash && constantCap && tile.lineAtlas) {\n const posTo = tile.lineAtlas.getDash(constantDash, constantCap);\n if (posTo) programConfiguration.setConstantPatternPositions(posTo);\n }\n\n let [trimStart, trimEnd] = layer.paint.get('line-trim-offset');\n // When line cap is 'round' or 'square', the whole line progress will beyond 1.0 or less than 0.0.\n // If trim_offset begin is line begin (0.0), or trim_offset end is line end (1.0), adjust the trim\n // offset with fake offset shift so that the line_progress < 0.0 or line_progress > 1.0 part will be\n // correctly covered.\n if (constantCap === 'round' || constantCap === 'square') {\n // Fake the percentage so that it will cover the round/square cap that is beyond whole line\n const fakeOffsetShift = 1.0;\n // To make sure that the trim offset range is effecive\n if (trimStart !== trimEnd) {\n if (trimStart === 0.0) {\n trimStart -= fakeOffsetShift;\n }\n if (trimEnd === 1.0) {\n trimEnd += fakeOffsetShift;\n }\n }\n }\n\n const matrix = painter.terrain ? coord.projMatrix : null;\n const uniformValues = image ?\n linePatternUniformValues(painter, tile, layer, matrix, pixelRatio) :\n lineUniformValues(painter, tile, layer, matrix, bucket.lineClipsArray.length, pixelRatio, [trimStart, trimEnd]);\n\n if (gradient) {\n const layerGradient = bucket.gradients[layer.id];\n let gradientTexture = layerGradient.texture;\n if (layer.gradientVersion !== layerGradient.version) {\n let textureResolution = 256;\n if (layer.stepInterpolant) {\n const sourceMaxZoom = sourceCache.getSource().maxzoom;\n const potentialOverzoom = coord.canonical.z === sourceMaxZoom ?\n Math.ceil(1 << (painter.transform.maxZoom - coord.canonical.z)) : 1;\n const lineLength = bucket.maxLineLength / EXTENT;\n // Logical pixel tile size is 512px, and 1024px right before current zoom + 1\n const maxTilePixelSize = 1024;\n // Maximum possible texture coverage heuristic, bound by hardware max texture size\n const maxTextureCoverage = lineLength * maxTilePixelSize * potentialOverzoom;\n textureResolution = clamp(nextPowerOfTwo(maxTextureCoverage), 256, context.maxTextureSize);\n }\n layerGradient.gradient = renderColorRamp({\n expression: layer.gradientExpression(),\n evaluationKey: 'lineProgress',\n resolution: textureResolution,\n image: layerGradient.gradient || undefined,\n clips: bucket.lineClipsArray\n });\n if (layerGradient.texture) {\n layerGradient.texture.update(layerGradient.gradient);\n } else {\n layerGradient.texture = new Texture(context, layerGradient.gradient, gl.RGBA);\n }\n layerGradient.version = layer.gradientVersion;\n gradientTexture = layerGradient.texture;\n }\n context.activeTexture.set(gl.TEXTURE1);\n gradientTexture.bind(layer.stepInterpolant ? gl.NEAREST : gl.LINEAR, gl.CLAMP_TO_EDGE);\n }\n if (dasharray) {\n context.activeTexture.set(gl.TEXTURE0);\n tile.lineAtlasTexture.bind(gl.LINEAR, gl.REPEAT);\n programConfiguration.updatePaintBuffers();\n }\n if (image) {\n context.activeTexture.set(gl.TEXTURE0);\n tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n programConfiguration.updatePaintBuffers();\n }\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n const renderLine = (stencilMode: StencilMode) => {\n program.draw(context, gl.TRIANGLES, depthMode,\n stencilMode, colorMode, CullFaceMode.disabled, uniformValues,\n layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer, bucket.segments,\n layer.paint, painter.transform.zoom, programConfiguration, [bucket.layoutVertexBuffer2]);\n };\n\n if (useStencilMaskRenderPass) {\n const stencilId = painter.stencilModeForClipping(coord).ref;\n // When terrain is on, ensure that the stencil buffer has 0 values.\n // As stencil may be disabled when it is not in overlapping stencil\n // mode. Refer to stencilModeForRTTOverlap logic.\n if (stencilId === 0 && painter.terrain) {\n context.clear({stencil: 0});\n }\n const stencilFunc = {func: gl.EQUAL, mask: 0xFF};\n\n // Allow line geometry fragment to be drawn only once:\n // - Invert the stencil identifier left by stencil clipping, this\n // ensures that we are not conflicting with neighborhing tiles.\n // - Draw Anti-Aliased pixels with a threshold set to 0.8, this\n // may draw Anti-Aliased pixels more than once, but due to their\n // low opacity, these pixels are usually invisible and potential\n // overlapping pixel artifacts locally minimized.\n uniformValues['u_alpha_discard_threshold'] = 0.8;\n renderLine(new StencilMode(stencilFunc, stencilId, 0xFF, gl.KEEP, gl.KEEP, gl.INVERT));\n uniformValues['u_alpha_discard_threshold'] = 0.0;\n renderLine(new StencilMode(stencilFunc, stencilId, 0xFF, gl.KEEP, gl.KEEP, gl.KEEP));\n } else {\n renderLine(painter.stencilModeForClipping(coord));\n }\n }\n\n // When rendering to stencil, reset the mask to make sure that the tile\n // clipping reverts the stencil mask we may have drawn in the buffer.\n // The stamp could be reverted by an extra draw call of line geometry,\n // but tile clipping drawing is usually faster to draw than lines.\n if (useStencilMaskRenderPass) {\n painter.resetStencilClippingMasks();\n if (painter.terrain) { context.clear({stencil: 0}); }\n }\n}\n","// @flow\n\nimport ImageSource from '../source/image_source.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {rasterUniformValues} from './program/raster_program.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type RasterStyleLayer from '../style/style_layer/raster_style_layer.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport rasterFade from './raster_fade.js';\n\nexport default drawRaster;\n\nfunction drawRaster(painter: Painter, sourceCache: SourceCache, layer: RasterStyleLayer, tileIDs: Array, variableOffsets: any, isInitialLoad: boolean) {\n if (painter.renderPass !== 'translucent') return;\n if (layer.paint.get('raster-opacity') === 0) return;\n if (!tileIDs.length) return;\n\n const context = painter.context;\n const gl = context.gl;\n const source = sourceCache.getSource();\n const program = painter.useProgram('raster');\n\n const colorMode = painter.colorModeForRenderPass();\n\n // When rendering to texture, coordinates are already sorted: primary by\n // proxy id and secondary sort is by Z.\n const renderingToTexture = painter.terrain && painter.terrain.renderingToTexture;\n\n const [stencilModes, coords] = source instanceof ImageSource || renderingToTexture ? [{}, tileIDs] :\n painter.stencilConfigForOverlap(tileIDs);\n\n const minTileZ = coords[coords.length - 1].overscaledZ;\n\n const align = !painter.options.moving;\n for (const coord of coords) {\n // Set the lower zoom level to sublayer 0, and higher zoom levels to higher sublayers\n // Use gl.LESS to prevent double drawing in areas where tiles overlap.\n const depthMode = renderingToTexture ? DepthMode.disabled : painter.depthModeForSublayer(coord.overscaledZ - minTileZ,\n layer.paint.get('raster-opacity') === 1 ? DepthMode.ReadWrite : DepthMode.ReadOnly, gl.LESS);\n\n const unwrappedTileID = coord.toUnwrapped();\n const tile = sourceCache.getTile(coord);\n if (renderingToTexture && !(tile && tile.hasData())) continue;\n\n const projMatrix = (renderingToTexture) ? coord.projMatrix :\n painter.transform.calculateProjMatrix(unwrappedTileID, align);\n\n const stencilMode = painter.terrain && renderingToTexture ?\n painter.terrain.stencilModeForRTTOverlap(coord) :\n stencilModes[coord.overscaledZ];\n\n const rasterFadeDuration = isInitialLoad ? 0 : layer.paint.get('raster-fade-duration');\n tile.registerFadeDuration(rasterFadeDuration);\n\n const parentTile = sourceCache.findLoadedParent(coord, 0);\n const fade = rasterFade(tile, parentTile, sourceCache, painter.transform, rasterFadeDuration);\n if (painter.terrain) painter.terrain.prepareDrawTile();\n\n let parentScaleBy, parentTL;\n\n const textureFilter = layer.paint.get('raster-resampling') === 'nearest' ? gl.NEAREST : gl.LINEAR;\n\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE);\n\n context.activeTexture.set(gl.TEXTURE1);\n\n if (parentTile) {\n parentTile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE);\n parentScaleBy = Math.pow(2, parentTile.tileID.overscaledZ - tile.tileID.overscaledZ);\n parentTL = [tile.tileID.canonical.x * parentScaleBy % 1, tile.tileID.canonical.y * parentScaleBy % 1];\n\n } else {\n tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE);\n }\n\n // Enable trilinear filtering on tiles only beyond 20 degrees pitch,\n // to prevent it from compromising image crispness on flat or low tilted maps.\n if (tile.texture.useMipmap && context.extTextureFilterAnisotropic && painter.transform.pitch > 20) {\n gl.texParameterf(gl.TEXTURE_2D, context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, context.extTextureFilterAnisotropicMax);\n }\n\n const perspectiveTransform = source instanceof ImageSource ? source.perspectiveTransform : [0, 0];\n const uniformValues = rasterUniformValues(projMatrix, parentTL || [0, 0], parentScaleBy || 1, fade, layer, perspectiveTransform);\n\n painter.prepareDrawProgram(context, program, unwrappedTileID);\n\n if (source instanceof ImageSource) {\n if (source.boundsBuffer && source.boundsSegments) program.draw(\n context, gl.TRIANGLES, depthMode, StencilMode.disabled, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, source.boundsBuffer,\n painter.quadTriangleIndexBuffer, source.boundsSegments);\n } else {\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n }\n }\n\n painter.resetStencilClippingMasks();\n}\n\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Tile from '../source/tile.js';\nimport {\n backgroundUniformValues,\n backgroundPatternUniformValues\n} from './program/background_program.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type BackgroundStyleLayer from '../style/style_layer/background_style_layer.js';\n\nexport default drawBackground;\n\nfunction drawBackground(painter: Painter, sourceCache: SourceCache, layer: BackgroundStyleLayer, coords: Array) {\n const color = layer.paint.get('background-color');\n const opacity = layer.paint.get('background-opacity');\n\n if (opacity === 0) return;\n\n const context = painter.context;\n const gl = context.gl;\n const transform = painter.transform;\n const tileSize = transform.tileSize;\n const image = layer.paint.get('background-pattern');\n if (painter.isPatternMissing(image)) return;\n\n const pass = (!image && color.a === 1 && opacity === 1 && painter.opaquePassEnabledForLayer()) ? 'opaque' : 'translucent';\n if (painter.renderPass !== pass) return;\n\n const stencilMode = StencilMode.disabled;\n const depthMode = painter.depthModeForSublayer(0, pass === 'opaque' ? DepthMode.ReadWrite : DepthMode.ReadOnly);\n const colorMode = painter.colorModeForRenderPass();\n\n const program = painter.useProgram(image ? 'backgroundPattern' : 'background');\n\n let tileIDs = coords;\n let backgroundTiles;\n if (!tileIDs) {\n backgroundTiles = painter.getBackgroundTiles();\n tileIDs = Object.values(backgroundTiles).map(tile => (tile: any).tileID);\n }\n\n if (image) {\n context.activeTexture.set(gl.TEXTURE0);\n painter.imageManager.bind(painter.context);\n }\n\n for (const tileID of tileIDs) {\n const unwrappedTileID = tileID.toUnwrapped();\n const matrix = coords ? tileID.projMatrix : painter.transform.calculateProjMatrix(unwrappedTileID);\n painter.prepareDrawTile();\n\n const tile = sourceCache ? sourceCache.getTile(tileID) :\n backgroundTiles ? backgroundTiles[tileID.key] : new Tile(tileID, tileSize, transform.zoom, painter);\n\n const uniformValues = image ?\n backgroundPatternUniformValues(matrix, opacity, painter, image, {tileID, tileSize}) :\n backgroundUniformValues(matrix, opacity, color);\n\n painter.prepareDrawProgram(context, program, unwrappedTileID);\n\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n }\n}\n","// @flow\n\nexport default drawCustom;\n\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport {warnOnce} from '../util/util.js';\nimport {globeToMercatorTransition} from './../geo/projection/globe_util.js';\n\nimport type Painter from './painter.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type CustomStyleLayer from '../style/style_layer/custom_style_layer.js';\nimport MercatorCoordinate from '../geo/mercator_coordinate.js';\nimport assert from 'assert';\n\nfunction drawCustom(painter: Painter, sourceCache: SourceCache, layer: CustomStyleLayer, coords: Array) {\n\n const context = painter.context;\n const implementation = layer.implementation;\n\n if (painter.transform.projection.unsupportedLayers && painter.transform.projection.unsupportedLayers.includes(\"custom\") &&\n !(painter.terrain && (painter.terrain.renderingToTexture || painter.renderPass === 'offscreen') && layer.isLayerDraped())) {\n warnOnce('Custom layers are not yet supported with this projection. Use mercator or globe to enable usage of custom layers.');\n return;\n }\n\n if (painter.renderPass === 'offscreen') {\n\n const prerender = implementation.prerender;\n if (prerender) {\n painter.setCustomLayerDefaults();\n context.setColorMode(painter.colorModeForRenderPass());\n\n if (painter.transform.projection.name === \"globe\") {\n const center = painter.transform.pointMerc;\n prerender.call(implementation, context.gl, painter.transform.customLayerMatrix(), painter.transform.getProjection(), painter.transform.globeToMercatorMatrix(), globeToMercatorTransition(painter.transform.zoom), [center.x, center.y], painter.transform.pixelsPerMeterRatio);\n } else {\n prerender.call(implementation, context.gl, painter.transform.customLayerMatrix());\n }\n\n context.setDirty();\n painter.setBaseState();\n }\n\n } else if (painter.renderPass === 'translucent') {\n\n if (painter.terrain && painter.terrain.renderingToTexture) {\n assert(implementation.renderToTile);\n assert(coords.length === 1);\n const renderToTile = implementation.renderToTile;\n if (renderToTile) {\n const c = coords[0].canonical;\n const unwrapped = new MercatorCoordinate(c.x + coords[0].wrap * (1 << c.z), c.y, c.z);\n\n context.setDepthMode(DepthMode.disabled);\n context.setStencilMode(StencilMode.disabled);\n context.setColorMode(painter.colorModeForRenderPass());\n painter.setCustomLayerDefaults();\n\n renderToTile.call(implementation, context.gl, unwrapped);\n context.setDirty();\n painter.setBaseState();\n }\n return;\n }\n\n painter.setCustomLayerDefaults();\n\n context.setColorMode(painter.colorModeForRenderPass());\n context.setStencilMode(StencilMode.disabled);\n\n const depthMode = implementation.renderingMode === '3d' ?\n new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D) :\n painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n\n context.setDepthMode(depthMode);\n\n if (painter.transform.projection.name === \"globe\") {\n const center = painter.transform.pointMerc;\n implementation.render(context.gl, painter.transform.customLayerMatrix(), painter.transform.getProjection(), painter.transform.globeToMercatorMatrix(), globeToMercatorTransition(painter.transform.zoom), [center.x, center.y], painter.transform.pixelsPerMeterRatio);\n } else {\n implementation.render(context.gl, painter.transform.customLayerMatrix());\n }\n\n context.setDirty();\n painter.setBaseState();\n context.bindFramebuffer.set(null);\n }\n}\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n globeToMercatorTransition,\n globeUseCustomAntiAliasing\n} from './../geo/projection/globe_util.js';\nimport {atmosphereUniformValues} from '../terrain/globe_raster_program.js';\nimport type Painter from './painter.js';\nimport type {DynamicDefinesType} from '../render/program/program_uniforms.js';\nimport {degToRad, mapValue} from '../util/util.js';\nimport {vec3, mat4, quat} from 'gl-matrix';\nimport Fog from '../style/fog.js';\n\nexport default drawAtmosphere;\n\nfunction drawAtmosphere(painter: Painter, fog: Fog) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n const depthMode = new DepthMode(gl.LEQUAL, DepthMode.ReadOnly, [0, 1]);\n const defines = tr.projection.name === 'globe' ? ['PROJECTION_GLOBE_VIEW', 'FOG'] : ['FOG'];\n const program = painter.useProgram('globeAtmosphere', null, ((defines: any): DynamicDefinesType[]));\n\n const transitionT = globeToMercatorTransition(tr.zoom);\n\n const fogColor = fog.properties.get('color').toArray01();\n const highColor = fog.properties.get('high-color').toArray01();\n const spaceColor = fog.properties.get('space-color').toArray01PremultipliedAlpha();\n\n const orientation = quat.identity([]);\n\n quat.rotateY(orientation, orientation, -degToRad(tr._center.lng));\n quat.rotateX(orientation, orientation, degToRad(tr._center.lat));\n\n quat.rotateZ(orientation, orientation, tr.angle);\n quat.rotateX(orientation, orientation, -tr._pitch);\n\n const rotationMatrix = mat4.fromQuat(new Float32Array(16), orientation);\n\n const starIntensity = mapValue(fog.properties.get('star-intensity'), 0.0, 1.0, 0.0, 0.25);\n // https://www.desmos.com/calculator/oanvvpr36d\n // Ensure horizon blend is 0-exclusive to prevent division by 0 in the shader\n const minHorizonBlend = 0.0005;\n const horizonBlend = mapValue(fog.properties.get('horizon-blend'), 0.0, 1.0, minHorizonBlend, 0.25);\n\n // Use a slightly smaller size of the globe to account for custom\n // antialiasing that reduces the size of the globe of two pixels\n // https://www.desmos.com/calculator/xpgmzghc37\n const globeRadius = globeUseCustomAntiAliasing(painter, context, tr) && horizonBlend === minHorizonBlend ?\n tr.worldSize / (2.0 * Math.PI * 1.025) - 1.0 : tr.globeRadius;\n\n const temporalOffset = (painter.frameCounter / 1000.0) % 1;\n const globeCenterInViewSpace = (((tr.globeCenterInViewSpace): any): Array);\n const globeCenterDistance = vec3.length(globeCenterInViewSpace);\n const distanceToHorizon = Math.sqrt(Math.pow(globeCenterDistance, 2.0) - Math.pow(globeRadius, 2.0));\n const horizonAngle = Math.acos(distanceToHorizon / globeCenterDistance);\n\n const uniforms = atmosphereUniformValues(\n tr.frustumCorners.TL,\n tr.frustumCorners.TR,\n tr.frustumCorners.BR,\n tr.frustumCorners.BL,\n tr.frustumCorners.horizon,\n transitionT,\n horizonBlend,\n fogColor,\n highColor,\n spaceColor,\n starIntensity,\n temporalOffset,\n horizonAngle,\n rotationMatrix);\n\n painter.prepareDrawProgram(context, program);\n\n const buffer = painter.atmosphereBuffer;\n if (buffer) {\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled,\n ColorMode.alphaBlended, CullFaceMode.backCW, uniforms, \"skybox\",\n buffer.vertexBuffer, buffer.indexBuffer, buffer.segments);\n }\n}\n","// @flow\nimport {number} from \"../style-spec/util/interpolate.js\";\nimport Point from \"@mapbox/point-geometry\";\nimport {clamp} from \"../util/util.js\";\n\n/**\n * @private\n * An `EdgeInset` object represents screen space padding applied to the edges of the viewport.\n * This shifts the apparent center or the vanishing point of the map. This is useful for adding floating UI elements\n * on top of the map and having the vanishing point shift as UI elements resize.\n *\n * @param {number} [top=0]\n * @param {number} [bottom=0]\n * @param {number} [left=0]\n * @param {number} [right=0]\n */\nclass EdgeInsets {\n top: number;\n bottom: number;\n left: number;\n right: number;\n\n constructor(top: number = 0, bottom: number = 0, left: number = 0, right: number = 0) {\n if (isNaN(top) || top < 0 ||\n isNaN(bottom) || bottom < 0 ||\n isNaN(left) || left < 0 ||\n isNaN(right) || right < 0\n ) {\n throw new Error('Invalid value for edge-insets, top, bottom, left and right must all be numbers');\n }\n\n this.top = top;\n this.bottom = bottom;\n this.left = left;\n this.right = right;\n }\n\n /**\n * Interpolates the inset in-place.\n * This maintains the current inset value for any inset not present in `target`.\n *\n * @private\n * @param {PaddingOptions | EdgeInsets} start The initial padding options.\n * @param {PaddingOptions} target The target padding options.\n * @param {number} t The interpolation variable.\n * @returns {EdgeInsets} The interpolated edge insets.\n * @memberof EdgeInsets\n */\n interpolate(start: PaddingOptions | EdgeInsets, target: PaddingOptions, t: number): EdgeInsets {\n if (target.top != null && start.top != null) this.top = number(start.top, target.top, t);\n if (target.bottom != null && start.bottom != null) this.bottom = number(start.bottom, target.bottom, t);\n if (target.left != null && start.left != null) this.left = number(start.left, target.left, t);\n if (target.right != null && start.right != null) this.right = number(start.right, target.right, t);\n\n return this;\n }\n\n /**\n * Utility method that computes the new apprent center or vanishing point after applying insets.\n * This is in pixels and with the top left being (0.0) and +y being downwards.\n *\n * @private\n * @param {number} width The width of the map in pixels.\n * @param {number} height The height of the map in pixels.\n * @returns {Point} The apparent center or vanishing point of the map.\n * @memberof EdgeInsets\n */\n getCenter(width: number, height: number): Point {\n // Clamp insets so they never overflow width/height and always calculate a valid center\n const x = clamp((this.left + width - this.right) / 2, 0, width);\n const y = clamp((this.top + height - this.bottom) / 2, 0, height);\n\n return new Point(x, y);\n }\n\n equals(other: PaddingOptions): boolean {\n return this.top === other.top &&\n this.bottom === other.bottom &&\n this.left === other.left &&\n this.right === other.right;\n }\n\n clone(): EdgeInsets {\n return new EdgeInsets(this.top, this.bottom, this.left, this.right);\n }\n\n /**\n * Returns the current state as json, useful when you want to have a\n * read-only representation of the inset.\n *\n * @private\n * @returns {PaddingOptions} The current padding options.\n * @memberof EdgeInsets\n */\n toJSON(): PaddingOptions {\n return {\n top: this.top,\n bottom: this.bottom,\n left: this.left,\n right: this.right\n };\n }\n}\n\nexport type PaddingOptions = {+top: ?number, +bottom: ?number, +right: ?number, +left: ?number};\n\nexport default EdgeInsets;\n","// @flow\n\nimport MercatorCoordinate, {mercatorZfromAltitude, latFromMercatorY} from '../geo/mercator_coordinate.js';\nimport {degToRad, wrap, getColumn, setColumn} from '../util/util.js';\nimport {vec3, quat, mat4} from 'gl-matrix';\n\nimport type {Elevation} from '../terrain/elevation.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {Mat4, Vec3, Vec4, Quat} from 'gl-matrix';\n\nfunction updateTransformOrientation(matrix: Mat4, orientation: Quat) {\n // Take temporary copy of position to prevent it from being overwritten\n const position: Vec4 = getColumn(matrix, 3);\n\n // Convert quaternion to rotation matrix\n mat4.fromQuat(matrix, orientation);\n setColumn(matrix, 3, position);\n}\n\nfunction updateTransformPosition(matrix: Mat4, position: Vec3) {\n setColumn(matrix, 3, [position[0], position[1], position[2], 1.0]);\n}\n\nfunction orientationFromPitchBearing(pitch: number, bearing: number): Quat {\n // Both angles are considered to define CW rotation around their respective axes.\n // Values have to be negated to achieve the proper quaternion in left handed coordinate space\n const orientation = quat.identity([]);\n quat.rotateZ(orientation, orientation, -bearing);\n quat.rotateX(orientation, orientation, -pitch);\n return orientation;\n}\n\nexport function orientationFromFrame(forward: Vec3, up: Vec3): ?Quat {\n // Find right-vector of the resulting coordinate frame. Up-vector has to be\n // sanitized first in order to remove the roll component from the orientation\n const xyForward = [forward[0], forward[1], 0];\n const xyUp = [up[0], up[1], 0];\n\n const epsilon = 1e-15;\n\n if (vec3.length(xyForward) >= epsilon) {\n // Roll rotation can be seen as the right vector not being on the xy-plane, ie. right[2] != 0.0.\n // It can be negated by projecting the up vector on top of the forward vector.\n const xyDir = vec3.normalize([], xyForward);\n vec3.scale(xyUp, xyDir, vec3.dot(xyUp, xyDir));\n\n up[0] = xyUp[0];\n up[1] = xyUp[1];\n }\n\n const right = vec3.cross([], up, forward);\n if (vec3.len(right) < epsilon) {\n return null;\n }\n\n const bearing = Math.atan2(-right[1], right[0]);\n const pitch = Math.atan2(Math.sqrt(forward[0] * forward[0] + forward[1] * forward[1]), -forward[2]);\n\n return orientationFromPitchBearing(pitch, bearing);\n}\n\n/**\n * Options for accessing physical properties of the underlying camera entity.\n * Direct access to these properties allows more flexible and precise controlling of the camera.\n * These options are also fully compatible and interchangeable with CameraOptions. All fields are optional.\n * See {@link Map#setFreeCameraOptions} and {@link Map#getFreeCameraOptions}.\n *\n * @param {MercatorCoordinate} position Position of the camera in slightly modified web mercator coordinates.\n - The size of 1 unit is the width of the projected world instead of the \"mercator meter\".\n Coordinate [0, 0, 0] is the north-west corner and [1, 1, 0] is the south-east corner.\n - Z coordinate is conformal and must respect minimum and maximum zoom values.\n - Zoom is automatically computed from the altitude (z).\n * @param {quat} orientation Orientation of the camera represented as a unit quaternion [x, y, z, w] in a left-handed coordinate space.\n Direction of the rotation is clockwise around the respective axis.\n The default pose of the camera is such that the forward vector is looking up the -Z axis.\n The up vector is aligned with north orientation of the map:\n forward: [0, 0, -1]\n up: [0, -1, 0]\n right [1, 0, 0]\n Orientation can be set freely but certain constraints still apply:\n - Orientation must be representable with only pitch and bearing.\n - Pitch has an upper limit\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n *\n * map.setFreeCameraOptions(camera);\n * @see [Example: Animate the camera around a point in 3D terrain](https://docs.mapbox.com/mapbox-gl-js/example/free-camera-point/)\n * @see [Example: Animate the camera along a path](https://docs.mapbox.com/mapbox-gl-js/example/free-camera-path/)\n*/\nclass FreeCameraOptions {\n orientation: ?Quat;\n _position: ?MercatorCoordinate;\n _elevation: ?Elevation;\n _renderWorldCopies: boolean;\n\n constructor(position: ?MercatorCoordinate, orientation: ?Quat) {\n this.position = position;\n this.orientation = orientation;\n }\n\n get position(): ?MercatorCoordinate {\n return this._position;\n }\n\n set position(position: ?MercatorCoordinate | Vec3) {\n if (!position) {\n this._position = null;\n } else {\n const mercatorCoordinate = position instanceof MercatorCoordinate ? position : new MercatorCoordinate(position[0], position[1], position[2]);\n if (this._renderWorldCopies) {\n mercatorCoordinate.x = wrap(mercatorCoordinate.x, 0, 1);\n }\n this._position = mercatorCoordinate;\n }\n }\n\n /**\n * Helper function for setting orientation of the camera by defining a focus point\n * on the map.\n *\n * @param {LngLatLike} location Location of the focus point on the map.\n * @param {vec3?} up Up vector of the camera is necessary in certain scenarios where bearing can't be deduced\n * from the viewing direction.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n * // Apply camera changes\n * map.setFreeCameraOptions(camera);\n */\n lookAtPoint(location: LngLatLike, up?: Vec3) {\n this.orientation = null;\n if (!this.position) {\n return;\n }\n\n const pos: MercatorCoordinate = this.position;\n const altitude = this._elevation ? this._elevation.getAtPointOrZero(MercatorCoordinate.fromLngLat(location)) : 0;\n const target = MercatorCoordinate.fromLngLat(location, altitude);\n const forward = [target.x - pos.x, target.y - pos.y, target.z - pos.z];\n if (!up)\n up = [0, 0, 1];\n\n // flip z-component if the up vector is pointing downwards\n up[2] = Math.abs(up[2]);\n\n this.orientation = orientationFromFrame(forward, up);\n }\n\n /**\n * Helper function for setting the orientation of the camera as a pitch and a bearing.\n *\n * @param {number} pitch Pitch angle in degrees.\n * @param {number} bearing Bearing angle in degrees.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * // Update camera pitch and bearing\n * camera.setPitchBearing(80, 90);\n * // Apply changes\n * map.setFreeCameraOptions(camera);\n */\n setPitchBearing(pitch: number, bearing: number) {\n this.orientation = orientationFromPitchBearing(degToRad(pitch), degToRad(-bearing));\n }\n}\n\n/**\n * While using the free camera API the outcome value of isZooming, isMoving and isRotating\n * is not a result of the free camera API.\n * If the user sets the map.interactive to true, there will be conflicting behaviors while\n * interacting with map via zooming or moving using mouse or/and keyboard which will result\n * in isZooming, isMoving and isRotating to return true while using free camera API. In order\n * to prevent the confilicting behavior please set map.interactive to false which will result\n * in muting the following events: zoom, zoomend, zoomstart, rotate, rotateend, rotatestart,\n * move, moveend, movestart, pitch, pitchend, pitchstart.\n */\n\nclass FreeCamera {\n _transform: Mat4;\n _orientation: Quat;\n\n constructor(position: ?Vec3, orientation: ?Quat) {\n this._transform = mat4.identity([]);\n this.orientation = orientation;\n this.position = position;\n }\n\n get mercatorPosition(): MercatorCoordinate {\n const pos = this.position;\n return new MercatorCoordinate(pos[0], pos[1], pos[2]);\n }\n\n get position(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 3);\n return [col[0], col[1], col[2]];\n }\n\n set position(value: ?Vec3) {\n if (value) {\n updateTransformPosition(this._transform, value);\n }\n }\n\n get orientation(): Quat {\n return this._orientation;\n }\n\n set orientation(value: ?Quat) {\n this._orientation = value || quat.identity([]);\n if (value) {\n updateTransformOrientation(this._transform, this._orientation);\n }\n }\n\n getPitchBearing(): {pitch: number, bearing: number} {\n const f = this.forward();\n const r = this.right();\n\n return {\n bearing: Math.atan2(-r[1], r[0]),\n pitch: Math.atan2(Math.sqrt(f[0] * f[0] + f[1] * f[1]), -f[2])\n };\n }\n\n setPitchBearing(pitch: number, bearing: number) {\n this._orientation = orientationFromPitchBearing(pitch, bearing);\n updateTransformOrientation(this._transform, this._orientation);\n }\n\n forward(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 2);\n // Forward direction is towards the negative Z-axis\n return [-col[0], -col[1], -col[2]];\n }\n\n up(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 1);\n // Up direction has to be flipped to point towards north\n return [-col[0], -col[1], -col[2]];\n }\n\n right(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 0);\n return [col[0], col[1], col[2]];\n }\n\n getCameraToWorld(worldSize: number, pixelsPerMeter: number): Float64Array {\n const cameraToWorld = new Float64Array(16);\n mat4.invert(cameraToWorld, this.getWorldToCamera(worldSize, pixelsPerMeter));\n return cameraToWorld;\n }\n\n getWorldToCameraPosition(worldSize: number, pixelsPerMeter: number, uniformScale: number): Float64Array {\n const invPosition = this.position;\n\n vec3.scale(invPosition, invPosition, -worldSize);\n const matrix = new Float64Array(16);\n mat4.fromScaling(matrix, [uniformScale, uniformScale, uniformScale]);\n mat4.translate(matrix, matrix, invPosition);\n\n // Adjust scale on z (3rd column 3rd row)\n matrix[10] *= pixelsPerMeter;\n\n return matrix;\n }\n\n getWorldToCamera(worldSize: number, pixelsPerMeter: number): Float64Array {\n // transformation chain from world space to camera space:\n // 1. Height value (z) of renderables is in meters. Scale z coordinate by pixelsPerMeter\n // 2. Transform from pixel coordinates to camera space with cameraMatrix^-1\n // 3. flip Y if required\n\n // worldToCamera: flip * cam^-1 * zScale\n // cameraToWorld: (flip * cam^-1 * zScale)^-1 => (zScale^-1 * cam * flip^-1)\n const matrix = new Float64Array(16);\n\n // Compute inverse of camera matrix and post-multiply negated translation\n const invOrientation = new Float64Array(4);\n const invPosition = this.position;\n\n quat.conjugate(invOrientation, this._orientation);\n vec3.scale(invPosition, invPosition, -worldSize);\n\n mat4.fromQuat(matrix, invOrientation);\n\n mat4.translate(matrix, matrix, invPosition);\n\n // Pre-multiply y (2nd row)\n matrix[1] *= -1.0;\n matrix[5] *= -1.0;\n matrix[9] *= -1.0;\n matrix[13] *= -1.0;\n\n // Post-multiply z (3rd column)\n matrix[8] *= pixelsPerMeter;\n matrix[9] *= pixelsPerMeter;\n matrix[10] *= pixelsPerMeter;\n matrix[11] *= pixelsPerMeter;\n\n return matrix;\n }\n\n getCameraToClipPerspective(fovy: number, aspectRatio: number, nearZ: number, farZ: number): Float64Array {\n const matrix = new Float64Array(16);\n mat4.perspective(matrix, fovy, aspectRatio, nearZ, farZ);\n return matrix;\n }\n\n // The additional parameter needs to be removed. This was introduced because originally\n // the value returned by this function was incorrect. Fixing it would break the fog visuals and needs to be\n // communicated carefully first. Also see transform.cameraWorldSizeForFog.\n getDistanceToElevation(elevationMeters: number, convert: boolean = false): number {\n const z0 = elevationMeters === 0 ? 0 : mercatorZfromAltitude(elevationMeters, convert ? latFromMercatorY(this.position[1]) : this.position[1]);\n const f = this.forward();\n return (z0 - this.position[2]) / f[2];\n }\n\n clone(): FreeCamera {\n return new FreeCamera([...this.position], [...this.orientation]);\n }\n}\n\nexport {\n FreeCamera,\n FreeCameraOptions\n};\n","// @flow\n\nimport LngLat from '../lng_lat.js';\nimport MercatorCoordinate, {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport {mat4, mat2} from 'gl-matrix';\nimport {clamp, smoothstep} from '../../util/util.js';\n\nimport type Projection from './projection.js';\nimport type Transform from '../transform.js';\n\nexport default function getProjectionAdjustments(transform: Transform, withoutRotation?: boolean): Array {\n const interpT = getProjectionInterpolationT(transform.projection, transform.zoom, transform.width, transform.height);\n const matrix = getShearAdjustment(transform.projection, transform.zoom, transform.center, interpT, withoutRotation);\n\n const scaleAdjustment = getScaleAdjustment(transform);\n mat4.scale(matrix, matrix, [scaleAdjustment, scaleAdjustment, 1]);\n\n return matrix;\n}\n\nexport function getScaleAdjustment(transform: Transform): number {\n const projection = transform.projection;\n const interpT = getProjectionInterpolationT(transform.projection, transform.zoom, transform.width, transform.height);\n const zoomAdjustment = getZoomAdjustment(projection, transform.center);\n const zoomAdjustmentOrigin = getZoomAdjustment(projection, LngLat.convert(projection.center));\n const scaleAdjustment = Math.pow(2, zoomAdjustment * interpT + (1 - interpT) * zoomAdjustmentOrigin);\n return scaleAdjustment;\n}\n\nexport function getProjectionAdjustmentInverted(transform: Transform): Array {\n const m = getProjectionAdjustments(transform, true);\n return mat2.invert([], [\n m[0], m[1],\n m[4], m[5]]);\n}\n\nexport function getProjectionInterpolationT(projection: Projection, zoom: number, width: number, height: number, maxSize: number = Infinity): number {\n const range = projection.range;\n if (!range) return 0;\n\n const size = Math.min(maxSize, Math.max(width, height));\n // The interpolation ranges are manually defined based on what makes\n // sense in a 1024px wide map. Adjust the ranges to the current size\n // of the map. The smaller the map, the earlier you can start unskewing.\n const rangeAdjustment = Math.log(size / 1024) / Math.LN2;\n const zoomA = range[0] + rangeAdjustment;\n const zoomB = range[1] + rangeAdjustment;\n const t = smoothstep(zoomA, zoomB, zoom);\n return t;\n}\n\n// approx. kilometers per longitude degree at equator\nconst offset = 1 / 40000;\n\n/*\n * Calculates the scale difference between Mercator and the given projection at a certain location.\n */\nfunction getZoomAdjustment(projection: Projection, loc: LngLat) {\n // make sure we operate within mercator space for adjustments (they can go over for other projections)\n const lat = clamp(loc.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n const loc1 = new LngLat(loc.lng - 180 * offset, lat);\n const loc2 = new LngLat(loc.lng + 180 * offset, lat);\n\n const p1 = projection.project(loc1.lng, lat);\n const p2 = projection.project(loc2.lng, lat);\n\n const m1 = MercatorCoordinate.fromLngLat(loc1);\n const m2 = MercatorCoordinate.fromLngLat(loc2);\n\n const pdx = p2.x - p1.x;\n const pdy = p2.y - p1.y;\n const mdx = m2.x - m1.x;\n const mdy = m2.y - m1.y;\n\n const scale = Math.sqrt((mdx * mdx + mdy * mdy) / (pdx * pdx + pdy * pdy));\n\n return Math.log(scale) / Math.LN2;\n}\n\nfunction getShearAdjustment(projection: Projection, zoom: number, loc: LngLat, interpT: number, withoutRotation?: boolean) {\n\n // create two locations a tiny amount (~1km) east and west of the given location\n const locw = new LngLat(loc.lng - 180 * offset, loc.lat);\n const loce = new LngLat(loc.lng + 180 * offset, loc.lat);\n\n const pw = projection.project(locw.lng, locw.lat);\n const pe = projection.project(loce.lng, loce.lat);\n\n const pdx = pe.x - pw.x;\n const pdy = pe.y - pw.y;\n\n // Calculate how much the map would need to be rotated to make east-west in\n // projected coordinates be left-right\n const angleAdjust = -Math.atan2(pdy, pdx);\n\n // Pick a location identical to the original one except for poles to make sure we're within mercator bounds\n const mc2 = MercatorCoordinate.fromLngLat(loc);\n mc2.y = clamp(mc2.y, -1 + offset, 1 - offset);\n const loc2 = mc2.toLngLat();\n const p2 = projection.project(loc2.lng, loc2.lat);\n\n // Find the projected coordinates of two locations, one slightly south and one slightly east.\n // Then calculate the transform that would make the projected coordinates of the two locations be:\n // - equal distances from the original location\n // - perpendicular to one another\n //\n // Only the position of the coordinate to the north is adjusted.\n // The coordinate to the east stays where it is.\n const mc3 = MercatorCoordinate.fromLngLat(loc2);\n mc3.x += offset;\n const loc3 = mc3.toLngLat();\n const p3 = projection.project(loc3.lng, loc3.lat);\n const pdx3 = p3.x - p2.x;\n const pdy3 = p3.y - p2.y;\n const delta3 = rotate(pdx3, pdy3, angleAdjust);\n\n const mc4 = MercatorCoordinate.fromLngLat(loc2);\n mc4.y += offset;\n const loc4 = mc4.toLngLat();\n const p4 = projection.project(loc4.lng, loc4.lat);\n const pdx4 = p4.x - p2.x;\n const pdy4 = p4.y - p2.y;\n const delta4 = rotate(pdx4, pdy4, angleAdjust);\n\n const scale = Math.abs(delta3.x) / Math.abs(delta4.y);\n\n const unrotate = mat4.identity([]);\n mat4.rotateZ(unrotate, unrotate, (-angleAdjust) * (1 - (withoutRotation ? 0 : interpT)));\n\n // unskew\n const shear = mat4.identity([]);\n mat4.scale(shear, shear, [1, 1 - (1 - scale) * interpT, 1]);\n shear[4] = -delta4.x / delta4.y * interpT;\n\n // unrotate\n mat4.rotateZ(shear, shear, angleAdjust);\n\n mat4.multiply(shear, unrotate, shear);\n\n return shear;\n}\n\nfunction rotate(x: number, y: number, angle: number) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return {\n x: x * cos - y * sin,\n y: x * sin + y * cos\n };\n}\n","// @flow\n\nimport LngLat from './lng_lat.js';\nimport LngLatBounds from './lng_lat_bounds.js';\nimport MercatorCoordinate, {mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude, latFromMercatorY, MAX_MERCATOR_LATITUDE, circumferenceAtLatitude} from './mercator_coordinate.js';\nimport {getProjection} from './projection/index.js';\nimport {tileAABB} from '../geo/projection/tile_transform.js';\nimport Point from '@mapbox/point-geometry';\nimport {wrap, clamp, pick, radToDeg, degToRad, getAABBPointSquareDist, furthestTileCorner, warnOnce, deepEqual} from '../util/util.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport EXTENT from '../data/extent.js';\nimport {vec4, mat4, mat2, vec3, quat} from 'gl-matrix';\nimport {Frustum, FrustumCorners, Ray} from '../util/primitives.js';\nimport EdgeInsets from './edge_insets.js';\nimport {FreeCamera, FreeCameraOptions, orientationFromFrame} from '../ui/free_camera.js';\nimport assert from 'assert';\nimport getProjectionAdjustments, {getProjectionAdjustmentInverted, getScaleAdjustment, getProjectionInterpolationT} from './projection/adjustments.js';\nimport {getPixelsToTileUnitsMatrix} from '../source/pixels_to_tile_units.js';\nimport {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../source/tile_id.js';\nimport {\n calculateGlobeMatrix,\n polesInViewport,\n GLOBE_ZOOM_THRESHOLD_MIN,\n GLOBE_ZOOM_THRESHOLD_MAX,\n GLOBE_SCALE_MATCH_LATITUDE\n} from '../geo/projection/globe_util.js';\nimport {projectClamped} from '../symbol/projection.js';\n\nimport type Projection from '../geo/projection/projection.js';\nimport type {Elevation} from '../terrain/elevation.js';\nimport type {PaddingOptions} from './edge_insets.js';\nimport type Tile from '../source/tile.js';\nimport type {ProjectionSpecification} from '../style-spec/types.js';\nimport type {FeatureDistanceData} from '../style-spec/feature_filter/index.js';\nimport type {Mat4, Vec3, Vec4, Quat} from 'gl-matrix';\nimport type {Aabb} from '../util/primitives';\n\nconst NUM_WORLD_COPIES = 3;\nconst DEFAULT_MIN_ZOOM = 0;\n\ntype RayIntersectionResult = { p0: Vec4, p1: Vec4, t: number};\ntype ElevationReference = \"sea\" | \"ground\";\ntype RootTile = {\n aabb: Aabb,\n fullyVisible: boolean,\n maxZ: number,\n minZ: number,\n shouldSplit?: boolean,\n tileID?: OverscaledTileID,\n wrap: number,\n x: number,\n y: number,\n zoom: number,\n};\n\n/**\n * A single transform, generally used for a single tile to be\n * scaled, rotated, and zoomed.\n * @private\n */\nclass Transform {\n tileSize: number;\n tileZoom: number;\n maxBounds: ?LngLatBounds;\n\n // 2^zoom (worldSize = tileSize * scale)\n scale: number;\n\n // Map viewport size (not including the pixel ratio)\n width: number;\n height: number;\n\n // Bearing, radians, in [-pi, pi]\n angle: number;\n\n // 2D rotation matrix in the horizontal plane, as a function of bearing\n rotationMatrix: Float32Array;\n\n // Zoom, modulo 1\n zoomFraction: number;\n\n // The scale factor component of the conversion from pixels ([0, w] x [h, 0]) to GL\n // NDC ([1, -1] x [1, -1]) (note flipped y)\n pixelsToGLUnits: [number, number];\n\n // Distance from camera to the center, in screen pixel units, independent of zoom\n cameraToCenterDistance: number;\n\n // Projection from mercator coordinates ([0, 0] nw, [1, 1] se) to GL clip coordinates\n mercatorMatrix: Array;\n\n // Translate points in mercator coordinates to be centered about the camera, with units chosen\n // for screen-height-independent scaling of fog. Not affected by orientation of camera.\n mercatorFogMatrix: Float32Array;\n\n // Projection from world coordinates (mercator scaled by worldSize) to clip coordinates\n projMatrix: Array | Float32Array | Float64Array;\n invProjMatrix: Float64Array;\n\n // Same as projMatrix, pixel-aligned to avoid fractional pixels for raster tiles\n alignedProjMatrix: Float64Array;\n\n // From world coordinates to screen pixel coordinates (projMatrix premultiplied by labelPlaneMatrix)\n pixelMatrix: Float64Array;\n pixelMatrixInverse: Float64Array;\n\n worldToFogMatrix: Float64Array;\n skyboxMatrix: Float32Array;\n\n // Transform from screen coordinates to GL NDC, [0, w] x [h, 0] --> [-1, 1] x [-1, 1]\n // Roughly speaking, applies pixelsToGLUnits scaling with a translation\n glCoordMatrix: Float32Array;\n\n // Inverse of glCoordMatrix, from NDC to screen coordinates, [-1, 1] x [-1, 1] --> [0, w] x [h, 0]\n labelPlaneMatrix: Float32Array;\n\n // globe coordinate transformation matrix\n globeMatrix: Float64Array;\n\n globeCenterInViewSpace: [number, number, number];\n globeRadius: number;\n\n inverseAdjustmentMatrix: Array;\n\n mercatorFromTransition: boolean;\n\n minLng: number;\n maxLng: number;\n minLat: number;\n maxLat: number;\n worldMinX: number;\n worldMaxX: number;\n worldMinY: number;\n worldMaxY: number;\n\n frustumCorners: FrustumCorners;\n\n freezeTileCoverage: boolean;\n cameraElevationReference: ElevationReference;\n fogCullDistSq: ?number;\n _averageElevation: number;\n projectionOptions: ProjectionSpecification;\n projection: Projection;\n _elevation: ?Elevation;\n _fov: number;\n _pitch: number;\n _zoom: number;\n _seaLevelZoom: ?number;\n _unmodified: boolean;\n _renderWorldCopies: boolean;\n _minZoom: number;\n _maxZoom: number;\n _minPitch: number;\n _maxPitch: number;\n _center: LngLat;\n _edgeInsets: EdgeInsets;\n _constraining: boolean;\n _projMatrixCache: {[_: number]: Float32Array};\n _alignedProjMatrixCache: {[_: number]: Float32Array};\n _pixelsToTileUnitsCache: {[_: number]: Float32Array};\n _fogTileMatrixCache: {[_: number]: Float32Array};\n _distanceTileDataCache: {[_: number]: FeatureDistanceData};\n _camera: FreeCamera;\n _centerAltitude: number;\n _centerAltitudeValidForExaggeration: ?number;\n _horizonShift: number;\n _pixelsPerMercatorPixel: number;\n _nearZ: number;\n _farZ: number;\n _mercatorScaleRatio: number;\n _isCameraConstrained: boolean;\n\n constructor(minZoom: ?number, maxZoom: ?number, minPitch: ?number, maxPitch: ?number, renderWorldCopies: boolean | void, projection?: ?ProjectionSpecification, bounds: ?LngLatBounds) {\n this.tileSize = 512; // constant\n\n this._renderWorldCopies = renderWorldCopies === undefined ? true : renderWorldCopies;\n this._minZoom = minZoom || DEFAULT_MIN_ZOOM;\n this._maxZoom = maxZoom || 22;\n\n this._minPitch = (minPitch === undefined || minPitch === null) ? 0 : minPitch;\n this._maxPitch = (maxPitch === undefined || maxPitch === null) ? 60 : maxPitch;\n\n this.setProjection(projection);\n this.setMaxBounds(bounds);\n\n this.width = 0;\n this.height = 0;\n this._center = new LngLat(0, 0);\n this.zoom = 0;\n this.angle = 0;\n this._fov = 0.6435011087932844;\n this._pitch = 0;\n this._nearZ = 0;\n this._farZ = 0;\n this._unmodified = true;\n this._edgeInsets = new EdgeInsets();\n this._projMatrixCache = {};\n this._alignedProjMatrixCache = {};\n this._fogTileMatrixCache = {};\n this._distanceTileDataCache = {};\n this._camera = new FreeCamera();\n this._centerAltitude = 0;\n this._averageElevation = 0;\n this.cameraElevationReference = \"ground\";\n this._pixelsPerMercatorPixel = 1.0;\n this.globeRadius = 0;\n this.globeCenterInViewSpace = [0, 0, 0];\n\n // Move the horizon closer to the center. 0 would not shift the horizon. 1 would put the horizon at the center.\n this._horizonShift = 0.1;\n }\n\n clone(): Transform {\n const clone = new Transform(this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies, this.getProjection());\n clone._elevation = this._elevation;\n clone._centerAltitude = this._centerAltitude;\n clone._centerAltitudeValidForExaggeration = this._centerAltitudeValidForExaggeration;\n clone.tileSize = this.tileSize;\n clone.mercatorFromTransition = this.mercatorFromTransition;\n clone.width = this.width;\n clone.height = this.height;\n clone.cameraElevationReference = this.cameraElevationReference;\n clone._center = this._center;\n clone._setZoom(this.zoom);\n clone._seaLevelZoom = this._seaLevelZoom;\n clone.angle = this.angle;\n clone._fov = this._fov;\n clone._pitch = this._pitch;\n clone._nearZ = this._nearZ;\n clone._farZ = this._farZ;\n clone._averageElevation = this._averageElevation;\n clone._unmodified = this._unmodified;\n clone._edgeInsets = this._edgeInsets.clone();\n clone._camera = this._camera.clone();\n clone._calcMatrices();\n clone.freezeTileCoverage = this.freezeTileCoverage;\n clone.frustumCorners = this.frustumCorners;\n return clone;\n }\n\n get elevation(): ?Elevation { return this._elevation; }\n set elevation(elevation: ?Elevation) {\n if (this._elevation === elevation) return;\n this._elevation = elevation;\n this._updateCameraOnTerrain();\n this._calcMatrices();\n }\n\n updateElevation(constrainCameraOverTerrain: boolean, adaptCameraAltitude: boolean = false) {\n const centerAltitudeChanged = this._elevation && this._elevation.exaggeration() !== this._centerAltitudeValidForExaggeration;\n if (this._seaLevelZoom == null || centerAltitudeChanged) {\n this._updateCameraOnTerrain();\n }\n if (constrainCameraOverTerrain || centerAltitudeChanged) {\n this._constrainCamera(adaptCameraAltitude);\n }\n this._calcMatrices();\n }\n\n getProjection(): ProjectionSpecification {\n return (pick(this.projection, ['name', 'center', 'parallels']): ProjectionSpecification);\n }\n\n // Returns whether the projection changes\n setProjection(projection?: ?ProjectionSpecification): boolean {\n this.projectionOptions = projection || {name: 'mercator'};\n\n const oldProjection = this.projection ? this.getProjection() : undefined;\n this.projection = getProjection(this.projectionOptions);\n const newProjection = this.getProjection();\n\n const projectionHasChanged = !deepEqual(oldProjection, newProjection);\n if (projectionHasChanged) {\n this._calcMatrices();\n }\n this.mercatorFromTransition = false;\n\n return projectionHasChanged;\n }\n\n setMercatorFromTransition(): boolean {\n const oldProjection = this.projection.name;\n this.mercatorFromTransition = true;\n this.projectionOptions = {name: 'mercator'};\n this.projection = getProjection({name: 'mercator'});\n const projectionHasChanged = oldProjection !== this.projection.name;\n if (projectionHasChanged) {\n this._calcMatrices();\n }\n return projectionHasChanged;\n }\n\n get minZoom(): number { return this._minZoom; }\n set minZoom(zoom: number) {\n if (this._minZoom === zoom) return;\n this._minZoom = zoom;\n this.zoom = Math.max(this.zoom, zoom);\n }\n\n get maxZoom(): number { return this._maxZoom; }\n set maxZoom(zoom: number) {\n if (this._maxZoom === zoom) return;\n this._maxZoom = zoom;\n this.zoom = Math.min(this.zoom, zoom);\n }\n\n get minPitch(): number { return this._minPitch; }\n set minPitch(pitch: number) {\n if (this._minPitch === pitch) return;\n this._minPitch = pitch;\n this.pitch = Math.max(this.pitch, pitch);\n }\n\n get maxPitch(): number { return this._maxPitch; }\n set maxPitch(pitch: number) {\n if (this._maxPitch === pitch) return;\n this._maxPitch = pitch;\n this.pitch = Math.min(this.pitch, pitch);\n }\n\n get renderWorldCopies(): boolean {\n return this._renderWorldCopies && this.projection.supportsWorldCopies === true;\n }\n set renderWorldCopies(renderWorldCopies?: ?boolean) {\n if (renderWorldCopies === undefined) {\n renderWorldCopies = true;\n } else if (renderWorldCopies === null) {\n renderWorldCopies = false;\n }\n\n this._renderWorldCopies = renderWorldCopies;\n }\n\n get worldSize(): number {\n return this.tileSize * this.scale;\n }\n\n // This getter returns an incorrect value.\n // It should eventually be removed and cameraWorldSize be used instead.\n // See free_camera.getDistanceToElevation for the rationale.\n get cameraWorldSizeForFog(): number {\n const distance = Math.max(this._camera.getDistanceToElevation(this._averageElevation), Number.EPSILON);\n return this._worldSizeFromZoom(this._zoomFromMercatorZ(distance));\n }\n\n get cameraWorldSize(): number {\n const distance = Math.max(this._camera.getDistanceToElevation(this._averageElevation, true), Number.EPSILON);\n return this._worldSizeFromZoom(this._zoomFromMercatorZ(distance));\n }\n\n // `pixelsPerMeter` is used to describe relation between real world and pixel distances.\n // In mercator projection it is dependant on latitude value meaning that one meter covers\n // less pixels at the equator than near polar regions. Globe projection in other hand uses\n // fixed ratio everywhere.\n\n get pixelsPerMeter(): number {\n return this.projection.pixelsPerMeter(this.center.lat, this.worldSize);\n }\n\n get cameraPixelsPerMeter(): number {\n return mercatorZfromAltitude(this.center.lat, this.cameraWorldSizeForFog);\n }\n\n get centerOffset(): Point {\n return this.centerPoint._sub(this.size._div(2));\n }\n\n get size(): Point {\n return new Point(this.width, this.height);\n }\n\n get bearing(): number {\n return wrap(this.rotation, -180, 180);\n }\n\n set bearing(bearing: number) {\n this.rotation = bearing;\n }\n\n get rotation(): number {\n return -this.angle / Math.PI * 180;\n }\n\n set rotation(rotation: number) {\n const b = -rotation * Math.PI / 180;\n if (this.angle === b) return;\n this._unmodified = false;\n this.angle = b;\n this._calcMatrices();\n\n // 2x2 matrix for rotating points\n this.rotationMatrix = mat2.create();\n mat2.rotate(this.rotationMatrix, this.rotationMatrix, this.angle);\n }\n\n get pitch(): number {\n return this._pitch / Math.PI * 180;\n }\n set pitch(pitch: number) {\n const p = clamp(pitch, this.minPitch, this.maxPitch) / 180 * Math.PI;\n if (this._pitch === p) return;\n this._unmodified = false;\n this._pitch = p;\n this._calcMatrices();\n }\n\n get aspect(): number {\n return this.width / this.height;\n }\n\n get fov(): number {\n return this._fov / Math.PI * 180;\n }\n\n get fovX(): number {\n return this._fov;\n }\n\n get fovY(): number {\n const focalLength = 1.0 / Math.tan(this.fovX * 0.5);\n return 2 * Math.atan((1.0 / this.aspect) / focalLength);\n }\n\n set fov(fov: number) {\n fov = Math.max(0.01, Math.min(60, fov));\n if (this._fov === fov) return;\n this._unmodified = false;\n this._fov = degToRad(fov);\n this._calcMatrices();\n }\n\n get averageElevation(): number {\n return this._averageElevation;\n }\n set averageElevation(averageElevation: number) {\n this._averageElevation = averageElevation;\n this._calcFogMatrices();\n this._distanceTileDataCache = {};\n }\n\n get zoom(): number { return this._zoom; }\n set zoom(zoom: number) {\n const z = Math.min(Math.max(zoom, this.minZoom), this.maxZoom);\n if (this._zoom === z) return;\n this._unmodified = false;\n this._setZoom(z);\n this._updateSeaLevelZoom();\n this._constrain();\n this._calcMatrices();\n }\n _setZoom(z: number) {\n this._zoom = z;\n this.scale = this.zoomScale(z);\n this.tileZoom = Math.floor(z);\n this.zoomFraction = z - this.tileZoom;\n }\n\n _updateCameraOnTerrain() {\n if (!this._elevation || !this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center))) {\n // Elevation data not loaded yet, reset\n this._centerAltitude = 0;\n this._seaLevelZoom = null;\n this._centerAltitudeValidForExaggeration = undefined;\n return;\n }\n const elevation: Elevation = this._elevation;\n this._centerAltitude = elevation.getAtPointOrZero(this.locationCoordinate(this.center));\n this._centerAltitudeValidForExaggeration = elevation.exaggeration();\n this._updateSeaLevelZoom();\n }\n\n _updateSeaLevelZoom() {\n if (this._centerAltitudeValidForExaggeration === undefined) {\n return;\n }\n const height = this.cameraToCenterDistance;\n const terrainElevation = this.pixelsPerMeter * this._centerAltitude;\n const mercatorZ = (terrainElevation + height) / this.worldSize;\n\n // MSL (Mean Sea Level) zoom describes the distance of the camera to the sea level (altitude).\n // It is used only for manipulating the camera location. The standard zoom (this._zoom)\n // defines the camera distance to the terrain (height). Its behavior and conceptual\n // meaning in determining which tiles to stream is same with or without the terrain.\n this._seaLevelZoom = this._zoomFromMercatorZ(mercatorZ);\n }\n\n sampleAverageElevation(): number {\n if (!this._elevation) return 0;\n const elevation: Elevation = this._elevation;\n\n const elevationSamplePoints = [\n [0.5, 0.2],\n [0.3, 0.5],\n [0.5, 0.5],\n [0.7, 0.5],\n [0.5, 0.8]\n ];\n\n const horizon = this.horizonLineFromTop();\n\n let elevationSum = 0.0;\n let weightSum = 0.0;\n for (let i = 0; i < elevationSamplePoints.length; i++) {\n const pt = new Point(\n elevationSamplePoints[i][0] * this.width,\n horizon + elevationSamplePoints[i][1] * (this.height - horizon)\n );\n const hit = elevation.pointCoordinate(pt);\n if (!hit) continue;\n\n const distanceToHit = Math.hypot(hit[0] - this._camera.position[0], hit[1] - this._camera.position[1]);\n const weight = 1 / distanceToHit;\n elevationSum += hit[3] * weight;\n weightSum += weight;\n }\n\n if (weightSum === 0) return NaN;\n return elevationSum / weightSum;\n }\n\n get center(): LngLat { return this._center; }\n set center(center: LngLat) {\n if (center.lat === this._center.lat && center.lng === this._center.lng) return;\n\n this._unmodified = false;\n this._center = center;\n if (this._terrainEnabled()) {\n if (this.cameraElevationReference === \"ground\") {\n this._updateCameraOnTerrain();\n } else {\n this._updateZoomFromElevation();\n }\n }\n this._constrain();\n this._calcMatrices();\n }\n\n _updateZoomFromElevation() {\n if (this._seaLevelZoom == null || !this._elevation)\n return;\n\n // Compute zoom level from the height of the camera relative to the terrain\n const seaLevelZoom: number = this._seaLevelZoom;\n const elevationAtCenter = this._elevation.getAtPointOrZero(this.locationCoordinate(this.center));\n const mercatorElevation = this.pixelsPerMeter / this.worldSize * elevationAtCenter;\n const altitude = this._mercatorZfromZoom(seaLevelZoom);\n const minHeight = this._mercatorZfromZoom(this._maxZoom);\n const height = Math.max(altitude - mercatorElevation, minHeight);\n\n this._setZoom(this._zoomFromMercatorZ(height));\n }\n\n get padding(): PaddingOptions { return this._edgeInsets.toJSON(); }\n set padding(padding: PaddingOptions) {\n if (this._edgeInsets.equals(padding)) return;\n this._unmodified = false;\n //Update edge-insets inplace\n this._edgeInsets.interpolate(this._edgeInsets, padding, 1);\n this._calcMatrices();\n }\n\n /**\n * Computes a zoom value relative to a map plane that goes through the provided mercator position.\n *\n * @param {MercatorCoordinate} position A position defining the altitude of the the map plane.\n * @returns {number} The zoom value.\n */\n computeZoomRelativeTo(position: MercatorCoordinate): number {\n // Find map center position on the target plane by casting a ray from screen center towards the plane.\n // Direct distance to the target position is used if the target position is above camera position.\n const centerOnTargetAltitude = this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint, position.toAltitude()));\n\n let targetPosition: ?Vec3;\n if (position.z < this._camera.position[2]) {\n targetPosition = [centerOnTargetAltitude.x, centerOnTargetAltitude.y, centerOnTargetAltitude.z];\n } else {\n targetPosition = [position.x, position.y, position.z];\n }\n\n const distToTarget = vec3.length(vec3.sub([], this._camera.position, targetPosition));\n return clamp(this._zoomFromMercatorZ(distToTarget), this._minZoom, this._maxZoom);\n }\n\n setFreeCameraOptions(options: FreeCameraOptions) {\n if (!this.height)\n return;\n\n if (!options.position && !options.orientation)\n return;\n\n // Camera state must be up-to-date before accessing its getters\n this._updateCameraState();\n\n let changed = false;\n if (options.orientation && !quat.exactEquals(options.orientation, this._camera.orientation)) {\n // $FlowFixMe[incompatible-call] - Flow can't infer that orientation is not null\n changed = this._setCameraOrientation(options.orientation);\n }\n\n if (options.position) {\n const newPosition = [options.position.x, options.position.y, options.position.z];\n if (!vec3.exactEquals(newPosition, this._camera.position)) {\n this._setCameraPosition(newPosition);\n changed = true;\n }\n }\n\n if (changed) {\n this._updateStateFromCamera();\n this.recenterOnTerrain();\n }\n }\n\n getFreeCameraOptions(): FreeCameraOptions {\n this._updateCameraState();\n const pos = this._camera.position;\n const options = new FreeCameraOptions();\n options.position = new MercatorCoordinate(pos[0], pos[1], pos[2]);\n options.orientation = this._camera.orientation;\n options._elevation = this.elevation;\n options._renderWorldCopies = this.renderWorldCopies;\n\n return options;\n }\n\n _setCameraOrientation(orientation: Quat): boolean {\n // zero-length quaternions are not valid\n if (!quat.length(orientation))\n return false;\n\n quat.normalize(orientation, orientation);\n\n // The new orientation must be sanitized by making sure it can be represented\n // with a pitch and bearing. Roll-component must be removed and the camera can't be upside down\n const forward = vec3.transformQuat([], [0, 0, -1], orientation);\n const up = vec3.transformQuat([], [0, -1, 0], orientation);\n\n if (up[2] < 0.0)\n return false;\n\n const updatedOrientation = orientationFromFrame(forward, up);\n if (!updatedOrientation)\n return false;\n\n this._camera.orientation = updatedOrientation;\n return true;\n }\n\n _setCameraPosition(position: Vec3) {\n // Altitude must be clamped to respect min and max zoom\n const minWorldSize = this.zoomScale(this.minZoom) * this.tileSize;\n const maxWorldSize = this.zoomScale(this.maxZoom) * this.tileSize;\n const distToCenter = this.cameraToCenterDistance;\n\n position[2] = clamp(position[2], distToCenter / maxWorldSize, distToCenter / minWorldSize);\n this._camera.position = position;\n }\n\n /**\n * The center of the screen in pixels with the top-left corner being (0,0)\n * and +y axis pointing downwards. This accounts for padding.\n *\n * @readonly\n * @type {Point}\n * @memberof Transform\n */\n get centerPoint(): Point {\n return this._edgeInsets.getCenter(this.width, this.height);\n }\n\n /**\n * Returns the vertical half-fov, accounting for padding, in radians.\n *\n * @readonly\n * @type {number}\n * @private\n */\n get fovAboveCenter(): number {\n return this._fov * (0.5 + this.centerOffset.y / this.height);\n }\n\n /**\n * Returns true if the padding options are equal.\n *\n * @param {PaddingOptions} padding The padding options to compare.\n * @returns {boolean} True if the padding options are equal.\n * @memberof Transform\n */\n isPaddingEqual(padding: PaddingOptions): boolean {\n return this._edgeInsets.equals(padding);\n }\n\n /**\n * Helper method to update edge-insets inplace.\n *\n * @param {PaddingOptions} start The initial padding options.\n * @param {PaddingOptions} target The target padding options.\n * @param {number} t The interpolation variable.\n * @memberof Transform\n */\n interpolatePadding(start: PaddingOptions, target: PaddingOptions, t: number) {\n this._unmodified = false;\n this._edgeInsets.interpolate(start, target, t);\n this._constrain();\n this._calcMatrices();\n }\n\n /**\n * Return the highest zoom level that fully includes all tiles within the transform's boundaries.\n * @param {Object} options Options.\n * @param {number} options.tileSize Tile size, expressed in screen pixels.\n * @param {boolean} options.roundZoom Target zoom level. If true, the value will be rounded to the closest integer. Otherwise the value will be floored.\n * @returns {number} An integer zoom level at which all tiles will be visible.\n */\n coveringZoomLevel(options: {roundZoom?: boolean, tileSize: number}): number {\n const z = (options.roundZoom ? Math.round : Math.floor)(\n this.zoom + this.scaleZoom(this.tileSize / options.tileSize)\n );\n // At negative zoom levels load tiles from z0 because negative tile zoom levels don't exist.\n return Math.max(0, z);\n }\n\n /**\n * Return any \"wrapped\" copies of a given tile coordinate that are visible\n * in the current view.\n *\n * @private\n */\n getVisibleUnwrappedCoordinates(tileID: CanonicalTileID): Array {\n const result = [new UnwrappedTileID(0, tileID)];\n if (this.renderWorldCopies) {\n const utl = this.pointCoordinate(new Point(0, 0));\n const utr = this.pointCoordinate(new Point(this.width, 0));\n const ubl = this.pointCoordinate(new Point(this.width, this.height));\n const ubr = this.pointCoordinate(new Point(0, this.height));\n const w0 = Math.floor(Math.min(utl.x, utr.x, ubl.x, ubr.x));\n const w1 = Math.floor(Math.max(utl.x, utr.x, ubl.x, ubr.x));\n\n // Add an extra copy of the world on each side to properly render ImageSources and CanvasSources.\n // Both sources draw outside the tile boundaries of the tile that \"contains them\" so we need\n // to add extra copies on both sides in case offscreen tiles need to draw into on-screen ones.\n const extraWorldCopy = 1;\n\n for (let w = w0 - extraWorldCopy; w <= w1 + extraWorldCopy; w++) {\n if (w === 0) continue;\n result.push(new UnwrappedTileID(w, tileID));\n }\n }\n return result;\n }\n\n /**\n * Return all coordinates that could cover this transform for a covering\n * zoom level.\n * @param {Object} options\n * @param {number} options.tileSize\n * @param {number} options.minzoom\n * @param {number} options.maxzoom\n * @param {boolean} options.roundZoom\n * @param {boolean} options.reparseOverscaled\n * @returns {Array} OverscaledTileIDs\n * @private\n */\n coveringTiles(\n options: {\n tileSize: number,\n minzoom?: number,\n maxzoom?: number,\n roundZoom?: boolean,\n reparseOverscaled?: boolean,\n renderWorldCopies?: boolean,\n isTerrainDEM?: boolean\n }\n ): Array {\n let z = this.coveringZoomLevel(options);\n const actualZ = z;\n\n const useElevationData = this.elevation && !options.isTerrainDEM;\n const isMercator = this.projection.name === 'mercator';\n\n if (options.minzoom !== undefined && z < options.minzoom) return [];\n if (options.maxzoom !== undefined && z > options.maxzoom) z = options.maxzoom;\n\n const centerCoord = this.locationCoordinate(this.center);\n const centerLatitude = this.center.lat;\n const numTiles = 1 << z;\n const centerPoint = [numTiles * centerCoord.x, numTiles * centerCoord.y, 0];\n const isGlobe = this.projection.name === 'globe';\n const zInMeters = !isGlobe;\n const cameraFrustum = Frustum.fromInvProjectionMatrix(this.invProjMatrix, this.worldSize, z, zInMeters);\n const cameraCoord = isGlobe ? this._camera.mercatorPosition : this.pointCoordinate(this.getCameraPoint());\n const meterToTile = numTiles * mercatorZfromAltitude(1, this.center.lat);\n const cameraAltitude = this._camera.position[2] / mercatorZfromAltitude(1, this.center.lat);\n const cameraPoint = [numTiles * cameraCoord.x, numTiles * cameraCoord.y, cameraAltitude * (zInMeters ? 1 : meterToTile)];\n // Let's consider an example for !roundZoom: e.g. tileZoom 16 is used from zoom 16 all the way to zoom 16.99.\n // This would mean that the minimal distance to split would be based on distance from camera to center of 16.99 zoom.\n // The same is already incorporated in logic behind roundZoom for raster (so there is no adjustment needed in following line).\n // 0.02 added to compensate for precision errors, see \"coveringTiles for terrain\" test in transform.test.js.\n const zoomSplitDistance = this.cameraToCenterDistance / options.tileSize * (options.roundZoom ? 1 : 0.502);\n\n // No change of LOD behavior for pitch lower than 60 and when there is no top padding: return only tile ids from the requested zoom level\n const minZoom = this.pitch <= 60.0 && this._edgeInsets.top <= this._edgeInsets.bottom && !this._elevation && !this.projection.isReprojectedInTileSpace ? z : 0;\n\n // When calculating tile cover for terrain, create deep AABB for nodes, to ensure they intersect frustum: for sources,\n // other than DEM, use minimum of visible DEM tiles and center altitude as upper bound (pitch is always less than 90°).\n const maxRange = options.isTerrainDEM && this._elevation ? this._elevation.exaggeration() * 10000 : this._centerAltitude;\n const minRange = options.isTerrainDEM ? -maxRange : this._elevation ? this._elevation.getMinElevationBelowMSL() : 0;\n\n const scaleAdjustment = this.projection.isReprojectedInTileSpace ? getScaleAdjustment(this) : 1.0;\n\n const relativeScaleAtMercatorCoord = (mc: MercatorCoordinate) => {\n // Calculate how scale compares between projected coordinates and mercator coordinates.\n // Returns a length. The units don't matter since the result is only\n // used in a ratio with other values returned by this function.\n\n // Construct a small square in Mercator coordinates.\n const offset = 1 / 40000;\n const mcEast = new MercatorCoordinate(mc.x + offset, mc.y, mc.z);\n const mcSouth = new MercatorCoordinate(mc.x, mc.y + offset, mc.z);\n\n // Convert the square to projected coordinates.\n const ll = mc.toLngLat();\n const llEast = mcEast.toLngLat();\n const llSouth = mcSouth.toLngLat();\n const p = this.locationCoordinate(ll);\n const pEast = this.locationCoordinate(llEast);\n const pSouth = this.locationCoordinate(llSouth);\n\n // Calculate the size of each edge of the reprojected square\n const dx = Math.hypot(pEast.x - p.x, pEast.y - p.y);\n const dy = Math.hypot(pSouth.x - p.x, pSouth.y - p.y);\n\n // Calculate the size of a projected square that would have the\n // same area as the reprojected square.\n return Math.sqrt(dx * dy) * scaleAdjustment / offset;\n };\n\n const newRootTile = (wrap: number): RootTile => {\n const max = maxRange;\n const min = minRange;\n return {\n // With elevation, this._elevation provides z coordinate values. For 2D:\n // All tiles are on zero elevation plane => z difference is zero\n aabb: tileAABB(this, numTiles, 0, 0, 0, wrap, min, max, this.projection),\n zoom: 0,\n x: 0,\n y: 0,\n minZ: min,\n maxZ: max,\n wrap,\n fullyVisible: false\n };\n };\n\n // Do a depth-first traversal to find visible tiles and proper levels of detail\n const stack = [];\n let result = [];\n const maxZoom = z;\n const overscaledZ = options.reparseOverscaled ? actualZ : z;\n const square = (a: number) => a * a;\n const cameraHeightSqr = square((cameraAltitude - this._centerAltitude) * meterToTile); // in tile coordinates.\n\n const getAABBFromElevation = (it: RootTile) => {\n assert(this._elevation);\n if (!this._elevation || !it.tileID || !isMercator) return; // To silence flow.\n const minmax = this._elevation.getMinMaxForTile(it.tileID);\n const aabb = it.aabb;\n if (minmax) {\n aabb.min[2] = minmax.min;\n aabb.max[2] = minmax.max;\n aabb.center[2] = (aabb.min[2] + aabb.max[2]) / 2;\n } else {\n it.shouldSplit = shouldSplit(it);\n if (!it.shouldSplit) {\n // At final zoom level, while corresponding DEM tile is not loaded yet,\n // assume center elevation. This covers ground to horizon and prevents\n // loading unnecessary tiles until DEM cover is fully loaded.\n aabb.min[2] = aabb.max[2] = aabb.center[2] = this._centerAltitude;\n }\n }\n };\n\n // Scale distance to split for acute angles.\n // dzSqr: z component of camera to tile distance, square.\n // dSqr: 3D distance of camera to tile, square.\n const distToSplitScale = (dzSqr: number, dSqr: number) => {\n // When the angle between camera to tile ray and tile plane is smaller\n // than acuteAngleThreshold, scale the distance to split. Scaling is adaptive: smaller\n // the angle, the scale gets lower value. Although it seems early to start at 45,\n // it is not: scaling kicks in around 60 degrees pitch.\n const acuteAngleThresholdSin = 0.707; // Math.sin(45)\n const stretchTile = 1.1;\n // Distances longer than 'dz / acuteAngleThresholdSin' gets scaled\n // following geometric series sum: every next dz length in distance can be\n // 'stretchTile times' longer. It is further, the angle is sharper. Total,\n // adjusted, distance would then be:\n // = dz / acuteAngleThresholdSin + (dz * stretchTile + dz * stretchTile ^ 2 + ... + dz * stretchTile ^ k),\n // where k = (d - dz / acuteAngleThresholdSin) / dz = d / dz - 1 / acuteAngleThresholdSin;\n // = dz / acuteAngleThresholdSin + dz * ((stretchTile ^ (k + 1) - 1) / (stretchTile - 1) - 1)\n // or put differently, given that k is based on d and dz, tile on distance d could be used on distance scaled by:\n // 1 / acuteAngleThresholdSin + (stretchTile ^ (k + 1) - 1) / (stretchTile - 1) - 1\n if (dSqr * square(acuteAngleThresholdSin) < dzSqr) return 1.0; // Early return, no scale.\n const r = Math.sqrt(dSqr / dzSqr);\n const k = r - 1 / acuteAngleThresholdSin;\n return r / (1 / acuteAngleThresholdSin + (Math.pow(stretchTile, k + 1) - 1) / (stretchTile - 1) - 1);\n };\n\n const shouldSplit = (it: RootTile) => {\n if (it.zoom < minZoom) {\n return true;\n } else if (it.zoom === maxZoom) {\n return false;\n }\n if (it.shouldSplit != null) {\n return it.shouldSplit;\n }\n const dx = it.aabb.distanceX(cameraPoint);\n const dy = it.aabb.distanceY(cameraPoint);\n let dzSqr = cameraHeightSqr;\n\n let tileScaleAdjustment = 1;\n if (isGlobe) {\n dzSqr = square(it.aabb.distanceZ(cameraPoint));\n // Compensate physical sizes of the tiles when determining which zoom level to use.\n // In practice tiles closer to poles should use more aggressive LOD as their\n // physical size is already smaller than size of tiles near the equator.\n const tilesAtZoom = Math.pow(2, it.zoom);\n const minLat = latFromMercatorY((it.y + 1) / tilesAtZoom);\n const maxLat = latFromMercatorY((it.y) / tilesAtZoom);\n const closestLat = Math.min(Math.max(centerLatitude, minLat), maxLat);\n\n const relativeTileScale = circumferenceAtLatitude(closestLat) / circumferenceAtLatitude(centerLatitude);\n\n // With globe, the rendered scale does not exactly match the mercator scale at low zoom levels.\n // Account for this difference during LOD of loading so that you load the correct size tiles.\n // We try to compromise between two conflicting requirements:\n // - loading tiles at the camera's zoom level (for visual and styling consistency)\n // - loading correct size tiles (to reduce the number of tiles loaded)\n // These are arbitrarily balanced:\n if (closestLat === centerLatitude) {\n // For tiles that are in the middle of the viewport, prioritize matching the camera\n // zoom and allow divergence from the true scale.\n const maxDivergence = 0.3;\n tileScaleAdjustment = 1 / Math.max(1, this._mercatorScaleRatio - maxDivergence);\n } else {\n // For other tiles, use the real scale to reduce tile counts near poles.\n tileScaleAdjustment = Math.min(1, relativeTileScale / this._mercatorScaleRatio);\n }\n\n // Ensure that all tiles near the center have the same zoom level.\n // With LOD tile loading, tile zoom levels can change when scale slightly changes.\n // These differences can be pretty different in globe view. Work around this by\n // making more tiles match the center tile's zoom level. If the tiles are nearly big enough,\n // round up. Only apply this adjustment before the transition to mercator rendering has started.\n if (this.zoom <= GLOBE_ZOOM_THRESHOLD_MIN && it.zoom === maxZoom - 1 && relativeTileScale >= 0.9) {\n return true;\n }\n } else {\n assert(zInMeters);\n if (useElevationData) {\n dzSqr = square(it.aabb.distanceZ(cameraPoint) * meterToTile);\n }\n if (this.projection.isReprojectedInTileSpace && actualZ <= 5) {\n // In other projections, not all tiles are the same size.\n // Account for the tile size difference by adjusting the distToSplit.\n // Adjust by the ratio of the area at the tile center to the area at the map center.\n // Adjustments are only needed at lower zooms where tiles are not similarly sized.\n const numTiles = Math.pow(2, it.zoom);\n const relativeScale = relativeScaleAtMercatorCoord(new MercatorCoordinate((it.x + 0.5) / numTiles, (it.y + 0.5) / numTiles));\n // Fudge the ratio slightly so that all tiles near the center have the same zoom level.\n tileScaleAdjustment = relativeScale > 0.85 ? 1 : relativeScale;\n }\n }\n\n const distanceSqr = dx * dx + dy * dy + dzSqr;\n const distToSplit = (1 << maxZoom - it.zoom) * zoomSplitDistance * tileScaleAdjustment;\n const distToSplitSqr = square(distToSplit * distToSplitScale(Math.max(dzSqr, cameraHeightSqr), distanceSqr));\n\n return distanceSqr < distToSplitSqr;\n };\n\n if (this.renderWorldCopies) {\n // Render copy of the globe thrice on both sides\n for (let i = 1; i <= NUM_WORLD_COPIES; i++) {\n stack.push(newRootTile(-i));\n stack.push(newRootTile(i));\n }\n }\n\n stack.push(newRootTile(0));\n\n while (stack.length > 0) {\n const it = stack.pop();\n const x = it.x;\n const y = it.y;\n let fullyVisible = it.fullyVisible;\n\n // Visibility of a tile is not required if any of its ancestor is fully inside the frustum\n if (!fullyVisible) {\n const intersectResult = it.aabb.intersects(cameraFrustum);\n\n if (intersectResult === 0)\n continue;\n\n fullyVisible = intersectResult === 2;\n }\n\n // Have we reached the target depth or is the tile too far away to be any split further?\n if (it.zoom === maxZoom || !shouldSplit(it)) {\n const tileZoom = it.zoom === maxZoom ? overscaledZ : it.zoom;\n if (!!options.minzoom && options.minzoom > tileZoom) {\n // Not within source tile range.\n continue;\n }\n\n const dx = centerPoint[0] - ((0.5 + x + (it.wrap << it.zoom)) * (1 << (z - it.zoom)));\n const dy = centerPoint[1] - 0.5 - y;\n const id = it.tileID ? it.tileID : new OverscaledTileID(tileZoom, it.wrap, it.zoom, x, y);\n result.push({tileID: id, distanceSq: dx * dx + dy * dy});\n continue;\n }\n\n for (let i = 0; i < 4; i++) {\n const childX = (x << 1) + (i % 2);\n const childY = (y << 1) + (i >> 1);\n\n const aabb = isMercator ? it.aabb.quadrant(i) : tileAABB(this, numTiles, it.zoom + 1, childX, childY, it.wrap, it.minZ, it.maxZ, this.projection);\n const child: RootTile = {aabb, zoom: it.zoom + 1, x: childX, y: childY, wrap: it.wrap, fullyVisible, tileID: undefined, shouldSplit: undefined, minZ: it.minZ, maxZ: it.maxZ};\n if (useElevationData && !isGlobe) {\n child.tileID = new OverscaledTileID(it.zoom + 1 === maxZoom ? overscaledZ : it.zoom + 1, it.wrap, it.zoom + 1, childX, childY);\n getAABBFromElevation(child);\n }\n stack.push(child);\n }\n }\n\n if (this.fogCullDistSq) {\n const fogCullDistSq = this.fogCullDistSq;\n const horizonLineFromTop = this.horizonLineFromTop();\n result = result.filter(entry => {\n const min = [0, 0, 0, 1];\n const max = [EXTENT, EXTENT, 0, 1];\n\n const fogTileMatrix = this.calculateFogTileMatrix(entry.tileID.toUnwrapped());\n\n vec4.transformMat4(min, min, fogTileMatrix);\n vec4.transformMat4(max, max, fogTileMatrix);\n\n const sqDist = getAABBPointSquareDist(min, max);\n\n if (sqDist === 0) { return true; }\n\n let overHorizonLine = false;\n\n // Terrain loads at one zoom level lower than the raster data,\n // so the following checks whether the terrain sits above the horizon and ensures that\n // when mountains stick out above the fog (due to horizon-blend),\n // we haven’t accidentally culled some of the raster tiles we need to draw on them.\n // If we don’t do this, the terrain is default black color and may flash in and out as we move toward it.\n\n const elevation = this._elevation;\n\n if (elevation && sqDist > fogCullDistSq && horizonLineFromTop !== 0) {\n const projMatrix = this.calculateProjMatrix(entry.tileID.toUnwrapped());\n\n let minmax;\n if (!options.isTerrainDEM) {\n minmax = elevation.getMinMaxForTile(entry.tileID);\n }\n\n if (!minmax) { minmax = {min: minRange, max: maxRange}; }\n\n // ensure that we want `this.rotation` instead of `this.bearing` here\n const cornerFar = furthestTileCorner(this.rotation);\n\n const farX = cornerFar[0] * EXTENT;\n const farY = cornerFar[1] * EXTENT;\n\n const worldFar = [farX, farY, minmax.max];\n\n // World to NDC\n vec3.transformMat4(worldFar, worldFar, projMatrix);\n\n // NDC to Screen\n const screenCoordY = (1 - worldFar[1]) * this.height * 0.5;\n\n // Prevent cutting tiles crossing over the horizon line to\n // prevent pop-in and out within the fog culling range\n overHorizonLine = screenCoordY < horizonLineFromTop;\n }\n\n return sqDist < fogCullDistSq || overHorizonLine;\n });\n }\n\n const cover = result.sort((a, b) => a.distanceSq - b.distanceSq).map(a => a.tileID);\n\n // Relax the assertion on terrain, on high zoom we use distance to center of tile\n // while camera might be closer to selected center of map.\n assert(!cover.length || this.elevation || cover[0].overscaledZ === overscaledZ || !isMercator);\n return cover;\n }\n\n resize(width: number, height: number) {\n this.width = width;\n this.height = height;\n\n this.pixelsToGLUnits = [2 / width, -2 / height];\n this._constrain();\n this._calcMatrices();\n }\n\n get unmodified(): boolean { return this._unmodified; }\n\n zoomScale(zoom: number): number { return Math.pow(2, zoom); }\n scaleZoom(scale: number): number { return Math.log(scale) / Math.LN2; }\n\n // Transform from LngLat to Point in world coordinates [-180, 180] x [90, -90] --> [0, this.worldSize] x [0, this.worldSize]\n project(lnglat: LngLat): Point {\n const lat = clamp(lnglat.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n const projectedLngLat = this.projection.project(lnglat.lng, lat);\n return new Point(\n projectedLngLat.x * this.worldSize,\n projectedLngLat.y * this.worldSize);\n }\n\n // Transform from Point in world coordinates to LngLat [0, this.worldSize] x [0, this.worldSize] --> [-180, 180] x [90, -90]\n unproject(point: Point): LngLat {\n return this.projection.unproject(point.x / this.worldSize, point.y / this.worldSize);\n }\n\n // Point at center in world coordinates.\n get point(): Point { return this.project(this.center); }\n\n // Point at center in Mercator coordinates.\n get pointMerc(): Point { return this.point._div(this.worldSize); }\n\n // Ratio of pixelsPerMeter in the current projection to Mercator's.\n get pixelsPerMeterRatio(): number { return this.pixelsPerMeter / mercatorZfromAltitude(1, this.center.lat) / this.worldSize; }\n\n setLocationAtPoint(lnglat: LngLat, point: Point) {\n let x, y;\n const centerPoint = this.centerPoint;\n\n if (this.projection.name === 'globe') {\n // Pixel coordinates are applied directly to the globe\n const worldSize = this.worldSize;\n x = (point.x - centerPoint.x) / worldSize;\n y = (point.y - centerPoint.y) / worldSize;\n } else {\n const a = this.pointCoordinate(point);\n const b = this.pointCoordinate(centerPoint);\n x = a.x - b.x;\n y = a.y - b.y;\n }\n\n const loc = this.locationCoordinate(lnglat);\n this.setLocation(new MercatorCoordinate(loc.x - x, loc.y - y));\n }\n\n setLocation(location: MercatorCoordinate) {\n this.center = this.coordinateLocation(location);\n if (this.projection.wrap) {\n this.center = this.center.wrap();\n }\n }\n\n /**\n * Given a location, return the screen point that corresponds to it. In 3D mode\n * (with terrain) this behaves the same as in 2D mode.\n * This method is coupled with {@see pointLocation} in 3D mode to model map manipulation\n * using flat plane approach to keep constant elevation above ground.\n * @param {LngLat} lnglat location\n * @returns {Point} screen point\n * @private\n */\n locationPoint(lnglat: LngLat): Point {\n return this.projection.locationPoint(this, lnglat);\n }\n\n /**\n * Given a location, return the screen point that corresponds to it\n * In 3D mode (when terrain is enabled) elevation is sampled for the point before\n * projecting it. In 2D mode, behaves the same locationPoint.\n * @param {LngLat} lnglat location\n * @returns {Point} screen point\n * @private\n */\n locationPoint3D(lnglat: LngLat): Point {\n return this.projection.locationPoint(this, lnglat, true);\n }\n\n /**\n * Given a point on screen, return its lnglat\n * @param {Point} p screen point\n * @returns {LngLat} lnglat location\n * @private\n */\n pointLocation(p: Point): LngLat {\n return this.coordinateLocation(this.pointCoordinate(p));\n }\n\n /**\n * Given a point on screen, return its lnglat\n * In 3D mode (map with terrain) returns location of terrain raycast point.\n * In 2D mode, behaves the same as {@see pointLocation}.\n * @param {Point} p screen point\n * @returns {LngLat} lnglat location\n * @private\n */\n pointLocation3D(p: Point): LngLat {\n return this.coordinateLocation(this.pointCoordinate3D(p));\n }\n\n /**\n * Given a geographical lngLat, return an unrounded\n * coordinate that represents it at this transform's zoom level.\n * @param {LngLat} lngLat\n * @returns {Coordinate}\n * @private\n */\n locationCoordinate(lngLat: LngLat, altitude?: number): MercatorCoordinate {\n const z = altitude ?\n mercatorZfromAltitude(altitude, lngLat.lat) :\n undefined;\n const projectedLngLat = this.projection.project(lngLat.lng, lngLat.lat);\n return new MercatorCoordinate(\n projectedLngLat.x,\n projectedLngLat.y,\n z);\n }\n\n /**\n * Given a Coordinate, return its geographical position.\n * @param {Coordinate} coord\n * @returns {LngLat} lngLat\n * @private\n */\n coordinateLocation(coord: MercatorCoordinate): LngLat {\n return this.projection.unproject(coord.x, coord.y);\n }\n\n /**\n * Casts a ray from a point on screen and returns the Ray,\n * and the extent along it, at which it intersects the map plane.\n *\n * @param {Point} p Viewport pixel co-ordinates.\n * @param {number} z Optional altitude of the map plane, defaulting to elevation at center.\n * @returns {{ p0: Vec4, p1: Vec4, t: number }} p0,p1 are two points on the ray.\n * t is the fractional extent along the ray at which the ray intersects the map plane.\n * @private\n */\n pointRayIntersection(p: Point, z: ?number): RayIntersectionResult {\n const targetZ = (z !== undefined && z !== null) ? z : this._centerAltitude;\n // Since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that\n // line with z=0.\n\n const p0 = [p.x, p.y, 0, 1];\n const p1 = [p.x, p.y, 1, 1];\n\n vec4.transformMat4(p0, p0, this.pixelMatrixInverse);\n vec4.transformMat4(p1, p1, this.pixelMatrixInverse);\n\n const w0 = p0[3];\n const w1 = p1[3];\n vec4.scale(p0, p0, 1 / w0);\n vec4.scale(p1, p1, 1 / w1);\n\n const z0 = p0[2];\n const z1 = p1[2];\n\n const t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0);\n\n return {p0, p1, t};\n }\n\n screenPointToMercatorRay(p: Point): Ray {\n const p0 = [p.x, p.y, 0, 1];\n const p1 = [p.x, p.y, 1, 1];\n\n vec4.transformMat4(p0, p0, this.pixelMatrixInverse);\n vec4.transformMat4(p1, p1, this.pixelMatrixInverse);\n\n vec4.scale(p0, p0, 1 / p0[3]);\n vec4.scale(p1, p1, 1 / p1[3]);\n\n // Convert altitude from meters to pixels.\n p0[2] = mercatorZfromAltitude(p0[2], this._center.lat) * this.worldSize;\n p1[2] = mercatorZfromAltitude(p1[2], this._center.lat) * this.worldSize;\n\n vec4.scale(p0, p0, 1 / this.worldSize);\n vec4.scale(p1, p1, 1 / this.worldSize);\n\n return new Ray([p0[0], p0[1], p0[2]], vec3.normalize([], vec3.sub([], p1, p0)));\n }\n\n /**\n * Helper method to convert the ray intersection with the map plane to MercatorCoordinate.\n *\n * @param {RayIntersectionResult} rayIntersection\n * @returns {MercatorCoordinate}\n * @private\n */\n rayIntersectionCoordinate(rayIntersection: RayIntersectionResult): MercatorCoordinate {\n const {p0, p1, t} = rayIntersection;\n\n const z0 = mercatorZfromAltitude(p0[2], this._center.lat);\n const z1 = mercatorZfromAltitude(p1[2], this._center.lat);\n\n return new MercatorCoordinate(\n interpolate(p0[0], p1[0], t) / this.worldSize,\n interpolate(p0[1], p1[1], t) / this.worldSize,\n interpolate(z0, z1, t));\n }\n\n /**\n * Given a point on screen, returns MercatorCoordinate.\n * @param {Point} p Top left origin screen point, in pixels.\n * @param {number} z Optional altitude of the map plane, defaulting to elevation at center.\n * @private\n */\n pointCoordinate(p: Point, z?: number = this._centerAltitude): MercatorCoordinate {\n return this.projection.pointCoordinate(this, p.x, p.y, z);\n }\n\n /**\n * Given a point on screen, returns MercatorCoordinate.\n * In 3D mode, raycast to terrain. In 2D mode, behaves the same as {@see pointCoordinate}.\n * For p above terrain, don't return point behind camera but clamp p.y at the top of terrain.\n * @param {Point} p top left origin screen point, in pixels.\n * @private\n */\n pointCoordinate3D(p: Point): MercatorCoordinate {\n if (!this.elevation) return this.pointCoordinate(p);\n let raycast: ?Vec3 = this.projection.pointCoordinate3D(this, p.x, p.y);\n if (raycast) return new MercatorCoordinate(raycast[0], raycast[1], raycast[2]);\n let start = 0, end = this.horizonLineFromTop();\n if (p.y > end) return this.pointCoordinate(p); // holes between tiles below horizon line or below bottom.\n const samples = 10;\n const threshold = 0.02 * end;\n const r = p.clone();\n\n for (let i = 0; i < samples && end - start > threshold; i++) {\n r.y = interpolate(start, end, 0.66); // non uniform binary search favoring points closer to horizon.\n const rCast = this.projection.pointCoordinate3D(this, r.x, r.y);\n if (rCast) {\n end = r.y;\n raycast = rCast;\n } else {\n start = r.y;\n }\n }\n return raycast ? new MercatorCoordinate(raycast[0], raycast[1], raycast[2]) : this.pointCoordinate(p);\n }\n\n /**\n * Returns true if a screenspace Point p, is above the horizon.\n * In non-globe projections, this approximates the map as an infinite plane and does not account for z0-z3\n * wherein the map is small quad with whitespace above the north pole and below the south pole.\n *\n * @param {Point} p\n * @returns {boolean}\n * @private\n */\n isPointAboveHorizon(p: Point): boolean {\n return this.projection.isPointAboveHorizon(this, p);\n }\n\n /**\n * Determines if the given point is located on a visible map surface.\n *\n * @param {Point} p\n * @returns {boolean}\n * @private\n */\n isPointOnSurface(p: Point): boolean {\n if (p.y < 0 || p.y > this.height || p.x < 0 || p.x > this.width) return false;\n if (this.elevation || this.zoom >= GLOBE_ZOOM_THRESHOLD_MAX) return !this.isPointAboveHorizon(p);\n const coord = this.pointCoordinate(p);\n return coord.y >= 0 && coord.y <= 1;\n }\n\n /**\n * Given a coordinate, return the screen point that corresponds to it\n * @param {Coordinate} coord\n * @param {boolean} sampleTerrainIn3D in 3D mode (terrain enabled), sample elevation for the point.\n * If false, do the same as in 2D mode, assume flat camera elevation plane for all points.\n * @returns {Point} screen point\n * @private\n */\n _coordinatePoint(coord: MercatorCoordinate, sampleTerrainIn3D: boolean): Point {\n const elevation = sampleTerrainIn3D && this.elevation ? this.elevation.getAtPointOrZero(coord, this._centerAltitude) : this._centerAltitude;\n const p = [coord.x * this.worldSize, coord.y * this.worldSize, elevation + coord.toAltitude(), 1];\n vec4.transformMat4(p, p, this.pixelMatrix);\n return p[3] > 0 ?\n new Point(p[0] / p[3], p[1] / p[3]) :\n new Point(Number.MAX_VALUE, Number.MAX_VALUE);\n }\n\n // In Globe, conic and thematic projections, Lng/Lat extremes are not always at corners.\n // This function additionally checks each screen edge midpoint.\n // While midpoints continue to be extremes, it recursively checks midpoints of smaller segments.\n _getBoundsNonRectangular(): LngLatBounds {\n assert(!this.projection.supportsWorldCopies, \"Rectangular projections should use the simpler _getBoundsRectangular\");\n const {top, left} = this._edgeInsets;\n const bottom = this.height - this._edgeInsets.bottom;\n const right = this.width - this._edgeInsets.right;\n\n const tl = this.pointLocation3D(new Point(left, top));\n const tr = this.pointLocation3D(new Point(right, top));\n const br = this.pointLocation3D(new Point(right, bottom));\n const bl = this.pointLocation3D(new Point(left, bottom));\n\n let west = Math.min(tl.lng, tr.lng, br.lng, bl.lng);\n let east = Math.max(tl.lng, tr.lng, br.lng, bl.lng);\n let south = Math.min(tl.lat, tr.lat, br.lat, bl.lat);\n let north = Math.max(tl.lat, tr.lat, br.lat, bl.lat);\n\n // we pick an error threshold for calculating the bbox that balances between performance and precision\n // Roughly emulating behavior of maxErr in tile_transform.js\n const s = Math.pow(2, -this.zoom);\n const maxErr = s / 16 * 270; // 270 = avg(180, 360) i.e. rough conversion between Mercator coords and Lat/Lng\n\n // We check a minimum of 15 points on each side for Albers, etc.\n // We check a minmum of one midpoint on each side per globe.\n // Globe checks require raytracing and are slower\n // and mising area near the horizon is highly compressed so not noticeable\n const minRecursions = this.projection.name === \"globe\" ? 1 : 4;\n\n const processSegment = (ax: number, ay: number, bx: number, by: number, depth: number) => {\n const mx = (ax + bx) / 2;\n const my = (ay + by) / 2;\n\n const p = new Point(mx, my);\n const {lng, lat} = this.pointLocation3D(p);\n\n // The error metric is the maximum change to bounds from a given point\n const err = Math.max(0, west - lng, south - lat, lng - east, lat - north);\n\n west = Math.min(west, lng);\n east = Math.max(east, lng);\n south = Math.min(south, lat);\n north = Math.max(north, lat);\n\n if (depth < minRecursions || err > maxErr) {\n processSegment(ax, ay, mx, my, depth + 1);\n processSegment(mx, my, bx, by, depth + 1);\n }\n };\n\n processSegment(left, top, right, top, 1);\n processSegment(right, top, right, bottom, 1);\n processSegment(right, bottom, left, bottom, 1);\n processSegment(left, bottom, left, top, 1);\n\n if (this.projection.name === \"globe\") {\n const [northPoleIsVisible, southPoleIsVisible] = polesInViewport(this);\n if (northPoleIsVisible) {\n north = 90;\n east = 180;\n west = -180;\n } else if (southPoleIsVisible) {\n south = -90;\n east = 180;\n west = -180;\n }\n }\n\n return new LngLatBounds(new LngLat(west, south), new LngLat(east, north));\n }\n\n _getBoundsRectangular(min: number, max: number): LngLatBounds {\n assert(this.projection.supportsWorldCopies, \"_getBoundsRectangular only checks corners and works only on rectangular projections. Other projections should use _getBoundsNonRectangular\");\n\n const {top, left} = this._edgeInsets;\n const bottom = this.height - this._edgeInsets.bottom;\n const right = this.width - this._edgeInsets.right;\n\n const topLeft = new Point(left, top);\n const topRight = new Point(right, top);\n const bottomRight = new Point(right, bottom);\n const bottomLeft = new Point(left, bottom);\n\n // Consider far points at the maximum possible elevation\n // and near points at the minimum to ensure full coverage.\n let tl = this.pointCoordinate(topLeft, min);\n let tr = this.pointCoordinate(topRight, min);\n const br = this.pointCoordinate(bottomRight, max);\n const bl = this.pointCoordinate(bottomLeft, max);\n\n // If map pitch places top corners off map edge (latitude > 90 or < -90),\n // place them at the intersection between the left/right screen edge and map edge.\n const slope = (p1: MercatorCoordinate, p2: MercatorCoordinate) => (p2.y - p1.y) / (p2.x - p1.x);\n\n if (tl.y > 1 && tr.y >= 0) tl = new MercatorCoordinate((1 - bl.y) / slope(bl, tl) + bl.x, 1);\n else if (tl.y < 0 && tr.y <= 1) tl = new MercatorCoordinate(-bl.y / slope(bl, tl) + bl.x, 0);\n\n if (tr.y > 1 && tl.y >= 0) tr = new MercatorCoordinate((1 - br.y) / slope(br, tr) + br.x, 1);\n else if (tr.y < 0 && tl.y <= 1) tr = new MercatorCoordinate(-br.y / slope(br, tr) + br.x, 0);\n\n return new LngLatBounds()\n .extend(this.coordinateLocation(tl))\n .extend(this.coordinateLocation(tr))\n .extend(this.coordinateLocation(bl))\n .extend(this.coordinateLocation(br));\n }\n\n _getBoundsRectangularTerrain(): LngLatBounds {\n assert(this.elevation);\n const elevation = ((this.elevation: any): Elevation);\n if (!elevation.visibleDemTiles.length || elevation.isUsingMockSource()) { return this._getBoundsRectangular(0, 0); }\n const minmax = elevation.visibleDemTiles.reduce((acc, t) => {\n if (t.dem) {\n const tree = t.dem.tree;\n acc.min = Math.min(acc.min, tree.minimums[0]);\n acc.max = Math.max(acc.max, tree.maximums[0]);\n }\n return acc;\n }, {min: Number.MAX_VALUE, max: 0});\n assert(minmax.min !== Number.MAX_VALUE);\n return this._getBoundsRectangular(minmax.min * elevation.exaggeration(), minmax.max * elevation.exaggeration());\n }\n\n /**\n * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not\n * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.\n *\n * @returns {LngLatBounds} Returns a {@link LngLatBounds} object describing the map's geographical bounds.\n */\n getBounds(): LngLatBounds {\n if (this.projection.name === 'mercator' || this.projection.name === 'equirectangular') {\n if (this._terrainEnabled()) return this._getBoundsRectangularTerrain();\n return this._getBoundsRectangular(0, 0);\n }\n return this._getBoundsNonRectangular();\n }\n\n /**\n * Returns position of horizon line from the top of the map in pixels.\n * If horizon is not visible, returns 0 by default or a negative value if called with clampToTop = false.\n * @private\n */\n horizonLineFromTop(clampToTop: boolean = true): number {\n // h is height of space above map center to horizon.\n const h = this.height / 2 / Math.tan(this._fov / 2) / Math.tan(Math.max(this._pitch, 0.1)) + this.centerOffset.y;\n const offset = this.height / 2 - h * (1 - this._horizonShift);\n return clampToTop ? Math.max(0, offset) : offset;\n }\n\n /**\n * Returns the maximum geographical bounds the map is constrained to, or `null` if none set.\n * @returns {LngLatBounds} {@link LngLatBounds}.\n */\n getMaxBounds(): ?LngLatBounds {\n return this.maxBounds;\n }\n\n /**\n * Sets or clears the map's geographical constraints.\n *\n * @param {LngLatBounds} bounds A {@link LngLatBounds} object describing the new geographic boundaries of the map.\n */\n setMaxBounds(bounds: ?LngLatBounds) {\n this.maxBounds = bounds;\n\n this.minLat = -MAX_MERCATOR_LATITUDE;\n this.maxLat = MAX_MERCATOR_LATITUDE;\n this.minLng = -180;\n this.maxLng = 180;\n\n if (bounds) {\n this.minLat = bounds.getSouth();\n this.maxLat = bounds.getNorth();\n this.minLng = bounds.getWest();\n this.maxLng = bounds.getEast();\n if (this.maxLng < this.minLng) this.maxLng += 360;\n }\n\n this.worldMinX = mercatorXfromLng(this.minLng) * this.tileSize;\n this.worldMaxX = mercatorXfromLng(this.maxLng) * this.tileSize;\n this.worldMinY = mercatorYfromLat(this.maxLat) * this.tileSize;\n this.worldMaxY = mercatorYfromLat(this.minLat) * this.tileSize;\n\n this._constrain();\n }\n\n calculatePosMatrix(unwrappedTileID: UnwrappedTileID, worldSize: number): Float64Array {\n return this.projection.createTileMatrix(this, worldSize, unwrappedTileID);\n }\n\n calculateDistanceTileData(unwrappedTileID: UnwrappedTileID): FeatureDistanceData {\n const distanceDataKey = unwrappedTileID.key;\n const cache = this._distanceTileDataCache;\n if (cache[distanceDataKey]) {\n return cache[distanceDataKey];\n }\n\n //Calculate the offset of the tile\n const canonical = unwrappedTileID.canonical;\n const windowScaleFactor = 1 / this.height;\n const cws = this.cameraWorldSize;\n const scale = cws / this.zoomScale(canonical.z);\n const unwrappedX = canonical.x + Math.pow(2, canonical.z) * unwrappedTileID.wrap;\n const tX = unwrappedX * scale;\n const tY = canonical.y * scale;\n\n const center = this.point;\n // center is in world/pixel coordinate, ensure it's in the same coordinate space as tX and tY computed earlier.\n center.x *= cws / this.worldSize;\n center.y *= cws / this.worldSize;\n\n // Calculate the bearing vector by rotating unit vector [0, -1] clockwise\n const angle = this.angle;\n const bX = Math.sin(-angle);\n const bY = -Math.cos(-angle);\n\n const cX = (center.x - tX) * windowScaleFactor;\n const cY = (center.y - tY) * windowScaleFactor;\n cache[distanceDataKey] = {\n bearing: [bX, bY],\n center: [cX, cY],\n scale: (scale / EXTENT) * windowScaleFactor\n };\n\n return cache[distanceDataKey];\n }\n\n /**\n * Calculate the fogTileMatrix that, given a tile coordinate, can be used to\n * calculate its position relative to the camera in units of pixels divided\n * by the map height. Used with fog for consistent computation of distance\n * from camera.\n *\n * @param {UnwrappedTileID} unwrappedTileID;\n * @private\n */\n calculateFogTileMatrix(unwrappedTileID: UnwrappedTileID): Float32Array {\n const fogTileMatrixKey = unwrappedTileID.key;\n const cache = this._fogTileMatrixCache;\n if (cache[fogTileMatrixKey]) {\n return cache[fogTileMatrixKey];\n }\n\n const posMatrix = this.projection.createTileMatrix(this, this.cameraWorldSizeForFog, unwrappedTileID);\n mat4.multiply(posMatrix, this.worldToFogMatrix, posMatrix);\n\n cache[fogTileMatrixKey] = new Float32Array(posMatrix);\n return cache[fogTileMatrixKey];\n }\n\n /**\n * Calculate the projMatrix that, given a tile coordinate, would be used to display the tile on the screen.\n * @param {UnwrappedTileID} unwrappedTileID;\n * @private\n */\n calculateProjMatrix(unwrappedTileID: UnwrappedTileID, aligned: boolean = false): Float32Array {\n const projMatrixKey = unwrappedTileID.key;\n const cache = aligned ? this._alignedProjMatrixCache : this._projMatrixCache;\n if (cache[projMatrixKey]) {\n return cache[projMatrixKey];\n }\n\n const posMatrix = this.calculatePosMatrix(unwrappedTileID, this.worldSize);\n const projMatrix = this.projection.isReprojectedInTileSpace ?\n this.mercatorMatrix : (aligned ? this.alignedProjMatrix : this.projMatrix);\n mat4.multiply(posMatrix, projMatrix, posMatrix);\n\n cache[projMatrixKey] = new Float32Array(posMatrix);\n return cache[projMatrixKey];\n }\n\n calculatePixelsToTileUnitsMatrix(tile: Tile): Float32Array {\n const key = tile.tileID.key;\n const cache = this._pixelsToTileUnitsCache;\n if (cache[key]) {\n return cache[key];\n }\n\n const matrix = getPixelsToTileUnitsMatrix(tile, this);\n cache[key] = matrix;\n return cache[key];\n }\n\n customLayerMatrix(): Array {\n return this.mercatorMatrix.slice();\n }\n\n globeToMercatorMatrix(): ?Array {\n if (this.projection.name === 'globe') {\n const pixelsToMerc = 1 / this.worldSize;\n const m = mat4.fromScaling([], [pixelsToMerc, pixelsToMerc, pixelsToMerc]);\n mat4.multiply(m, m, this.globeMatrix);\n return m;\n }\n return undefined;\n }\n\n recenterOnTerrain() {\n if (!this._elevation || this.projection.name === 'globe')\n return;\n\n const elevation: Elevation = this._elevation;\n this._updateCameraState();\n\n // Cast a ray towards the sea level and find the intersection point with the terrain.\n // We need to use a camera position that exists in the same coordinate space as the data.\n // The default camera position might have been compensated by the active projection model.\n const mercPixelsPerMeter = mercatorZfromAltitude(1, this._center.lat) * this.worldSize;\n const start = this._computeCameraPosition(mercPixelsPerMeter);\n const dir = this._camera.forward();\n\n // The raycast function expects z-component to be in meters\n const metersToMerc = mercatorZfromAltitude(1.0, this._center.lat);\n start[2] /= metersToMerc;\n dir[2] /= metersToMerc;\n vec3.normalize(dir, dir);\n\n const t = elevation.raycast(start, dir, elevation.exaggeration());\n\n if (t) {\n const point = vec3.scaleAndAdd([], start, dir, t);\n const newCenter = new MercatorCoordinate(point[0], point[1], mercatorZfromAltitude(point[2], latFromMercatorY(point[1])));\n\n const camToNew = [newCenter.x - start[0], newCenter.y - start[1], newCenter.z - start[2] * metersToMerc];\n const maxAltitude = (newCenter.z + vec3.length(camToNew)) * this._pixelsPerMercatorPixel;\n this._seaLevelZoom = this._zoomFromMercatorZ(maxAltitude);\n\n // Camera zoom has to be updated as the orbit distance might have changed\n this._centerAltitude = newCenter.toAltitude();\n this._center = this.coordinateLocation(newCenter);\n this._updateZoomFromElevation();\n this._constrain();\n this._calcMatrices();\n }\n }\n\n _constrainCamera(adaptCameraAltitude: boolean = false) {\n if (!this._elevation)\n return;\n\n const elevation: Elevation = this._elevation;\n\n // Find uncompensated camera position for elevation sampling.\n // The default camera position might have been compensated by the active projection model.\n const mercPixelsPerMeter = mercatorZfromAltitude(1, this._center.lat) * this.worldSize;\n const pos = this._computeCameraPosition(mercPixelsPerMeter);\n const elevationAtCamera = elevation.getAtPointOrZero(new MercatorCoordinate(...pos));\n const terrainElevation = this.pixelsPerMeter / this.worldSize * elevationAtCamera;\n const minHeight = this._minimumHeightOverTerrain();\n const cameraHeight = pos[2] - terrainElevation;\n\n if (cameraHeight <= minHeight) {\n if (cameraHeight < 0 || adaptCameraAltitude) {\n const center = this.locationCoordinate(this._center, this._centerAltitude);\n const cameraToCenter = [pos[0], pos[1], center.z - pos[2]];\n\n const prevDistToCamera = vec3.length(cameraToCenter);\n // Adjust the camera vector so that the camera is placed above the terrain.\n // Distance between the camera and the center point is kept constant.\n cameraToCenter[2] -= (minHeight - cameraHeight) / this._pixelsPerMercatorPixel;\n const newDistToCamera = vec3.length(cameraToCenter);\n\n if (newDistToCamera === 0)\n return;\n\n vec3.scale(cameraToCenter, cameraToCenter, prevDistToCamera / newDistToCamera * this._pixelsPerMercatorPixel);\n this._camera.position = [pos[0], pos[1], center.z * this._pixelsPerMercatorPixel - cameraToCenter[2]];\n this._updateStateFromCamera();\n } else {\n this._isCameraConstrained = true;\n }\n }\n }\n\n _constrain() {\n if (!this.center || !this.width || !this.height || this._constraining) return;\n\n this._constraining = true;\n const isGlobe = this.projection.name === 'globe' || this.mercatorFromTransition;\n\n // alternate constraining for non-Mercator projections\n if (this.projection.isReprojectedInTileSpace || isGlobe) {\n const center = this.center;\n center.lat = clamp(center.lat, this.minLat, this.maxLat);\n if (this.maxBounds || !(this.renderWorldCopies || isGlobe)) center.lng = clamp(center.lng, this.minLng, this.maxLng);\n this.center = center;\n this._constraining = false;\n return;\n }\n\n const unmodified = this._unmodified;\n const {x, y} = this.point;\n let s = 0;\n let x2 = x;\n let y2 = y;\n const w2 = this.width / 2;\n const h2 = this.height / 2;\n\n const minY = this.worldMinY * this.scale;\n const maxY = this.worldMaxY * this.scale;\n if (y - h2 < minY) y2 = minY + h2;\n if (y + h2 > maxY) y2 = maxY - h2;\n if (maxY - minY < this.height) {\n s = Math.max(s, this.height / (maxY - minY));\n y2 = (maxY + minY) / 2;\n }\n\n if (this.maxBounds || !this._renderWorldCopies || !this.projection.wrap) {\n const minX = this.worldMinX * this.scale;\n const maxX = this.worldMaxX * this.scale;\n\n // Translate to positive positions with the map center in the center position.\n // This ensures that the map snaps to the correct edge.\n const shift = this.worldSize / 2 - (minX + maxX) / 2;\n x2 = (x + shift + this.worldSize) % this.worldSize - shift;\n\n if (x2 - w2 < minX) x2 = minX + w2;\n if (x2 + w2 > maxX) x2 = maxX - w2;\n if (maxX - minX < this.width) {\n s = Math.max(s, this.width / (maxX - minX));\n x2 = (maxX + minX) / 2;\n }\n }\n\n if (x2 !== x || y2 !== y) { // pan the map to fit the range\n this.center = this.unproject(new Point(x2, y2));\n }\n if (s) { // scale the map to fit the range\n this.zoom += this.scaleZoom(s);\n }\n\n this._constrainCamera();\n this._unmodified = unmodified;\n this._constraining = false;\n }\n\n /**\n * Returns the minimum zoom at which `this.width` can fit max longitude range\n * and `this.height` can fit max latitude range.\n *\n * @returns {number} The zoom value.\n */\n _minZoomForBounds(): number {\n let minZoom = Math.max(0, this.scaleZoom(this.height / (this.worldMaxY - this.worldMinY)));\n if (this.maxBounds) {\n minZoom = Math.max(minZoom, this.scaleZoom(this.width / (this.worldMaxX - this.worldMinX)));\n }\n return minZoom;\n }\n\n /**\n * Returns the maximum distance of the camera from the center of the bounds, such that\n * `this.width` can fit max longitude range and `this.height` can fit max latitude range.\n * In mercator units.\n *\n * @returns {number} The mercator z coordinate.\n */\n _maxCameraBoundsDistance(): number {\n return this._mercatorZfromZoom(this._minZoomForBounds());\n }\n\n _calcMatrices(): void {\n if (!this.height) return;\n\n const offset = this.centerOffset;\n\n // Z-axis uses pixel coordinates when globe mode is enabled\n const pixelsPerMeter = this.pixelsPerMeter;\n\n if (this.projection.name === 'globe') {\n this._mercatorScaleRatio = mercatorZfromAltitude(1, this.center.lat) / mercatorZfromAltitude(1, GLOBE_SCALE_MATCH_LATITUDE);\n }\n\n const projectionT = getProjectionInterpolationT(this.projection, this.zoom, this.width, this.height, 1024);\n\n // 'this._pixelsPerMercatorPixel' is the ratio between pixelsPerMeter in the current projection relative to Mercator.\n // This is useful for converting e.g. camera position between pixel spaces as some logic\n // such as raycasting expects the scale to be in mercator pixels\n this._pixelsPerMercatorPixel = this.projection.pixelSpaceConversion(this.center.lat, this.worldSize, projectionT);\n\n this.cameraToCenterDistance = 0.5 / Math.tan(this._fov * 0.5) * this.height * this._pixelsPerMercatorPixel;\n\n this._updateCameraState();\n\n this._farZ = this.projection.farthestPixelDistance(this);\n\n // The larger the value of nearZ is\n // - the more depth precision is available for features (good)\n // - clipping starts appearing sooner when the camera is close to 3d features (bad)\n //\n // Smaller values worked well for mapbox-gl-js but deckgl was encountering precision issues\n // when rendering it's layers using custom layers. This value was experimentally chosen and\n // seems to solve z-fighting issues in deckgl while not clipping buildings too close to the camera.\n this._nearZ = this.height / 50;\n\n const zUnit = this.projection.zAxisUnit === \"meters\" ? pixelsPerMeter : 1.0;\n const worldToCamera = this._camera.getWorldToCamera(this.worldSize, zUnit);\n const cameraToClip = this._camera.getCameraToClipPerspective(this._fov, this.width / this.height, this._nearZ, this._farZ);\n\n // Apply center of perspective offset\n cameraToClip[8] = -offset.x * 2 / this.width;\n cameraToClip[9] = offset.y * 2 / this.height;\n\n let m: Array | Float32Array | Float64Array = mat4.mul([], cameraToClip, worldToCamera);\n\n if (this.projection.isReprojectedInTileSpace) {\n // Projections undistort as you zoom in (shear, scale, rotate).\n // Apply the undistortion around the center of the map.\n const mc = this.locationCoordinate(this.center);\n const adjustments = mat4.identity([]);\n mat4.translate(adjustments, adjustments, [mc.x * this.worldSize, mc.y * this.worldSize, 0]);\n mat4.multiply(adjustments, adjustments, getProjectionAdjustments(this));\n mat4.translate(adjustments, adjustments, [-mc.x * this.worldSize, -mc.y * this.worldSize, 0]);\n mat4.multiply(m, m, adjustments);\n this.inverseAdjustmentMatrix = getProjectionAdjustmentInverted(this);\n } else {\n this.inverseAdjustmentMatrix = [1, 0, 0, 1];\n }\n\n // The mercatorMatrix can be used to transform points from mercator coordinates\n // ([0, 0] nw, [1, 1] se) to GL coordinates. / zUnit compensates for scaling done in worldToCamera.\n this.mercatorMatrix = mat4.scale([], m, [this.worldSize, this.worldSize, this.worldSize / zUnit, 1.0]);\n\n this.projMatrix = m;\n\n // For tile cover calculation, use inverted of base (non elevated) matrix\n // as tile elevations are in tile coordinates and relative to center elevation.\n this.invProjMatrix = mat4.invert(new Float64Array(16), this.projMatrix);\n\n const clipToCamera = mat4.invert([], cameraToClip);\n this.frustumCorners = FrustumCorners.fromInvProjectionMatrix(clipToCamera, this.horizonLineFromTop(), this.height);\n\n const view = new Float32Array(16);\n mat4.identity(view);\n mat4.scale(view, view, [1, -1, 1]);\n mat4.rotateX(view, view, this._pitch);\n mat4.rotateZ(view, view, this.angle);\n\n const projection = mat4.perspective(new Float32Array(16), this._fov, this.width / this.height, this._nearZ, this._farZ);\n // The distance in pixels the skybox needs to be shifted down by to meet the shifted horizon.\n const skyboxHorizonShift = (Math.PI / 2 - this._pitch) * (this.height / this._fov) * this._horizonShift;\n // Apply center of perspective offset to skybox projection\n projection[8] = -offset.x * 2 / this.width;\n projection[9] = (offset.y + skyboxHorizonShift) * 2 / this.height;\n this.skyboxMatrix = mat4.multiply(view, projection, view);\n\n // Make a second projection matrix that is aligned to a pixel grid for rendering raster tiles.\n // We're rounding the (floating point) x/y values to achieve to avoid rendering raster images to fractional\n // coordinates. Additionally, we adjust by half a pixel in either direction in case that viewport dimension\n // is an odd integer to preserve rendering to the pixel grid. We're rotating this shift based on the angle\n // of the transformation so that 0°, 90°, 180°, and 270° rasters are crisp, and adjust the shift so that\n // it is always <= 0.5 pixels.\n const point = this.point;\n const x = point.x, y = point.y;\n const xShift = (this.width % 2) / 2, yShift = (this.height % 2) / 2,\n angleCos = Math.cos(this.angle), angleSin = Math.sin(this.angle),\n dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift,\n dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift;\n const alignedM = new Float64Array(m);\n mat4.translate(alignedM, alignedM, [ dx > 0.5 ? dx - 1 : dx, dy > 0.5 ? dy - 1 : dy, 0 ]);\n this.alignedProjMatrix = alignedM;\n\n m = mat4.create();\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n this.labelPlaneMatrix = m;\n\n m = mat4.create();\n mat4.scale(m, m, [1, -1, 1]);\n mat4.translate(m, m, [-1, -1, 0]);\n mat4.scale(m, m, [2 / this.width, 2 / this.height, 1]);\n this.glCoordMatrix = m;\n\n // matrix for conversion from location to screen coordinates\n this.pixelMatrix = mat4.multiply(new Float64Array(16), this.labelPlaneMatrix, this.projMatrix);\n\n this._calcFogMatrices();\n this._distanceTileDataCache = {};\n\n // inverse matrix for conversion from screen coordinates to location\n m = mat4.invert(new Float64Array(16), this.pixelMatrix);\n if (!m) throw new Error(\"failed to invert matrix\");\n this.pixelMatrixInverse = m;\n\n if (this.projection.name === 'globe' || this.mercatorFromTransition) {\n this.globeMatrix = calculateGlobeMatrix(this);\n\n const globeCenter = [this.globeMatrix[12], this.globeMatrix[13], this.globeMatrix[14]];\n\n this.globeCenterInViewSpace = vec3.transformMat4(globeCenter, globeCenter, worldToCamera);\n this.globeRadius = this.worldSize / 2.0 / Math.PI - 1.0;\n } else {\n this.globeMatrix = m;\n }\n\n this._projMatrixCache = {};\n this._alignedProjMatrixCache = {};\n this._pixelsToTileUnitsCache = {};\n }\n\n _calcFogMatrices() {\n this._fogTileMatrixCache = {};\n\n const cameraWorldSizeForFog = this.cameraWorldSizeForFog;\n const cameraPixelsPerMeter = this.cameraPixelsPerMeter;\n const cameraPos = this._camera.position;\n\n // The mercator fog matrix encodes transformation necessary to transform a position to camera fog space (in meters):\n // translates p to camera origin and transforms it from pixels to meters. The windowScaleFactor is used to have a\n // consistent transformation across different window sizes.\n // - p = p - cameraOrigin\n // - p.xy = p.xy * cameraWorldSizeForFog * windowScaleFactor\n // - p.z = p.z * cameraPixelsPerMeter * windowScaleFactor\n const windowScaleFactor = 1 / this.height / this._pixelsPerMercatorPixel;\n const metersToPixel = [cameraWorldSizeForFog, cameraWorldSizeForFog, cameraPixelsPerMeter];\n vec3.scale(metersToPixel, metersToPixel, windowScaleFactor);\n vec3.scale(cameraPos, cameraPos, -1);\n vec3.multiply(cameraPos, cameraPos, metersToPixel);\n\n const m = mat4.create();\n mat4.translate(m, m, cameraPos);\n mat4.scale(m, m, metersToPixel);\n this.mercatorFogMatrix = m;\n\n // The worldToFogMatrix can be used for conversion from world coordinates to relative camera position in\n // units of fractions of the map height. Later composed with tile position to construct the fog tile matrix.\n this.worldToFogMatrix = this._camera.getWorldToCameraPosition(cameraWorldSizeForFog, cameraPixelsPerMeter, windowScaleFactor);\n }\n\n _computeCameraPosition(targetPixelsPerMeter: ?number): Vec3 {\n targetPixelsPerMeter = targetPixelsPerMeter || this.pixelsPerMeter;\n const pixelSpaceConversion = targetPixelsPerMeter / this.pixelsPerMeter;\n\n const dir = this._camera.forward();\n const center = this.point;\n\n // Compute camera position using the following vector math: camera.position = map.center - camera.forward * cameraToCenterDist\n // Camera distance to the center can be found in mercator units by subtracting the center elevation from\n // camera's zenith position (which can be deduced from the zoom level)\n const zoom = this._seaLevelZoom ? this._seaLevelZoom : this._zoom;\n const altitude = this._mercatorZfromZoom(zoom) * pixelSpaceConversion;\n const distance = altitude - targetPixelsPerMeter / this.worldSize * this._centerAltitude;\n\n return [\n center.x / this.worldSize - dir[0] * distance,\n center.y / this.worldSize - dir[1] * distance,\n targetPixelsPerMeter / this.worldSize * this._centerAltitude - dir[2] * distance\n ];\n }\n\n _updateCameraState() {\n if (!this.height) return;\n\n // Set camera orientation and move it to a proper distance from the map\n this._camera.setPitchBearing(this._pitch, this.angle);\n this._camera.position = this._computeCameraPosition();\n }\n\n /**\n * Apply a 3d translation to the camera position, but clamping it so that\n * it respects the maximum longitude and latitude range set.\n *\n * @param {vec3} translation The translation vector.\n */\n _translateCameraConstrained(translation: Vec3) {\n const maxDistance = this._maxCameraBoundsDistance();\n // Define a ceiling in mercator Z\n const maxZ = maxDistance * Math.cos(this._pitch);\n const z = this._camera.position[2];\n const deltaZ = translation[2];\n let t = 1;\n\n if (this.projection.wrap) this.center = this.center.wrap();\n\n // we only need to clamp if the camera is moving upwards\n if (deltaZ > 0) {\n t = Math.min((maxZ - z) / deltaZ, 1);\n }\n\n this._camera.position = vec3.scaleAndAdd([], this._camera.position, translation, t);\n this._updateStateFromCamera();\n }\n\n _updateStateFromCamera() {\n const position = this._camera.position;\n const dir = this._camera.forward();\n const {pitch, bearing} = this._camera.getPitchBearing();\n\n // Compute zoom from the distance between camera and terrain\n const centerAltitude = mercatorZfromAltitude(this._centerAltitude, this.center.lat) * this._pixelsPerMercatorPixel;\n const minHeight = this._mercatorZfromZoom(this._maxZoom) * Math.cos(degToRad(this._maxPitch));\n const height = Math.max((position[2] - centerAltitude) / Math.cos(pitch), minHeight);\n const zoom = this._zoomFromMercatorZ(height);\n\n // Cast a ray towards the ground to find the center point\n vec3.scaleAndAdd(position, position, dir, height);\n\n this._pitch = clamp(pitch, degToRad(this.minPitch), degToRad(this.maxPitch));\n this.angle = wrap(bearing, -Math.PI, Math.PI);\n this._setZoom(clamp(zoom, this._minZoom, this._maxZoom));\n this._updateSeaLevelZoom();\n\n this._center = this.coordinateLocation(new MercatorCoordinate(position[0], position[1], position[2]));\n this._unmodified = false;\n this._constrain();\n this._calcMatrices();\n }\n\n _worldSizeFromZoom(zoom: number): number {\n return Math.pow(2.0, zoom) * this.tileSize;\n }\n\n _mercatorZfromZoom(zoom: number): number {\n return this.cameraToCenterDistance / this._worldSizeFromZoom(zoom);\n }\n\n _minimumHeightOverTerrain(): number {\n // Determine minimum height for the camera over the terrain related to current zoom.\n // Values above 4 allow camera closer to e.g. top of the hill, exposing\n // drape raster overscale artifacts or cut terrain (see under it) as it gets clipped on\n // near plane. Returned value is in mercator coordinates.\n const MAX_DRAPE_OVERZOOM = 4;\n const zoom = Math.min((this._seaLevelZoom != null ? this._seaLevelZoom : this._zoom) + MAX_DRAPE_OVERZOOM, this._maxZoom);\n return this._mercatorZfromZoom(zoom);\n }\n\n _zoomFromMercatorZ(z: number): number {\n return this.scaleZoom(this.cameraToCenterDistance / (z * this.tileSize));\n }\n\n // This function is helpful to approximate true zoom given a mercator height with varying ppm.\n // With Globe, since we use a fixed reference latitude at lower zoom levels and transition between this\n // latitude and the center's latitude as you zoom in, camera to center distance varies dynamically.\n // As the cameraToCenterDistance is a function of zoom, we need to approximate the true zoom\n // given a mercator meter value in order to eliminate the zoom/cameraToCenterDistance dependency.\n zoomFromMercatorZAdjusted(mercatorZ: number): number {\n assert(this.projection.name === 'globe');\n assert(mercatorZ !== 0);\n\n let zoomLow = 0;\n let zoomHigh = GLOBE_ZOOM_THRESHOLD_MAX;\n let zoom = 0;\n let minZoomDiff = Infinity;\n\n const epsilon = 1e-6;\n\n while (zoomHigh - zoomLow > epsilon && zoomHigh > zoomLow) {\n const zoomMid = zoomLow + (zoomHigh - zoomLow) * 0.5;\n\n const worldSize = this.tileSize * Math.pow(2, zoomMid);\n const d = this.getCameraToCenterDistance(this.projection, zoomMid, worldSize);\n const newZoom = this.scaleZoom(d / (mercatorZ * this.tileSize));\n\n const diff = Math.abs(zoomMid - newZoom);\n\n if (diff < minZoomDiff) {\n minZoomDiff = diff;\n zoom = zoomMid;\n }\n\n if (zoomMid < newZoom) {\n zoomLow = zoomMid;\n } else {\n zoomHigh = zoomMid;\n }\n }\n\n return zoom;\n }\n\n _terrainEnabled(): boolean {\n if (!this._elevation) return false;\n if (!this.projection.supportsTerrain) {\n warnOnce('Terrain is not yet supported with alternate projections. Use mercator or globe to enable terrain.');\n return false;\n }\n return true;\n }\n\n // Check if any of the four corners are off the edge of the rendered map\n // This function will return `false` for all non-mercator projection\n anyCornerOffEdge(p0: Point, p1: Point): boolean {\n const minX = Math.min(p0.x, p1.x);\n const maxX = Math.max(p0.x, p1.x);\n const minY = Math.min(p0.y, p1.y);\n const maxY = Math.max(p0.y, p1.y);\n\n const horizon = this.horizonLineFromTop(false);\n if (minY < horizon) return true;\n\n if (this.projection.name !== 'mercator') {\n return false;\n }\n\n const min = new Point(minX, minY);\n const max = new Point(maxX, maxY);\n\n const corners = [\n min, max,\n new Point(minX, maxY),\n new Point(maxX, minY),\n ];\n\n const minWX = (this.renderWorldCopies) ? -NUM_WORLD_COPIES : 0;\n const maxWX = (this.renderWorldCopies) ? 1 + NUM_WORLD_COPIES : 1;\n const minWY = 0;\n const maxWY = 1;\n\n for (const corner of corners) {\n const rayIntersection = this.pointRayIntersection(corner);\n // Point is above the horizon\n if (rayIntersection.t < 0) {\n return true;\n }\n // Point is off the bondaries of the map\n const coordinate = this.rayIntersectionCoordinate(rayIntersection);\n if (coordinate.x < minWX || coordinate.y < minWY ||\n coordinate.x > maxWX || coordinate.y > maxWY) {\n return true;\n }\n }\n\n return false;\n }\n\n // Checks the four corners of the frustum to see if they lie in the map's quad.\n //\n isHorizonVisible(): boolean {\n\n // we consider the horizon as visible if the angle between\n // a the top plane of the frustum and the map plane is smaller than this threshold.\n const horizonAngleEpsilon = 2;\n if (this.pitch + radToDeg(this.fovAboveCenter) > (90 - horizonAngleEpsilon)) {\n return true;\n }\n\n return this.anyCornerOffEdge(new Point(0, 0), new Point(this.width, this.height));\n }\n\n /**\n * Converts a zoom delta value into a physical distance travelled in web mercator coordinates.\n *\n * @param {vec3} center Destination mercator point of the movement.\n * @param {number} zoomDelta Change in the zoom value.\n * @returns {number} The distance in mercator coordinates.\n */\n zoomDeltaToMovement(center: Vec3, zoomDelta: number): number {\n const distance = vec3.length(vec3.sub([], this._camera.position, center));\n const relativeZoom = this._zoomFromMercatorZ(distance) + zoomDelta;\n return distance - this._mercatorZfromZoom(relativeZoom);\n }\n\n /*\n * The camera looks at the map from a 3D (lng, lat, altitude) location. Let's use `cameraLocation`\n * as the name for the location under the camera and on the surface of the earth (lng, lat, 0).\n * `cameraPoint` is the projected position of the `cameraLocation`.\n *\n * This point is useful to us because only fill-extrusions that are between `cameraPoint` and\n * the query point on the surface of the earth can extend and intersect the query.\n *\n * When the map is not pitched the `cameraPoint` is equivalent to the center of the map because\n * the camera is right above the center of the map.\n */\n getCameraPoint(): Point {\n if (this.projection.name === 'globe') {\n // Find precise location of the projected camera position on the curved surface\n const center = [this.globeMatrix[12], this.globeMatrix[13], this.globeMatrix[14]];\n const pos = projectClamped(center, this.pixelMatrix);\n return new Point(pos[0], pos[1]);\n } else {\n const pitch = this._pitch;\n const yOffset = Math.tan(pitch) * (this.cameraToCenterDistance || 1);\n return this.centerPoint.add(new Point(0, yOffset));\n }\n }\n\n getCameraToCenterDistance(projection: Projection, zoom: number = this.zoom, worldSize: number = this.worldSize): number {\n const t = getProjectionInterpolationT(projection, zoom, this.width, this.height, 1024);\n const projectionScaler = projection.pixelSpaceConversion(this.center.lat, worldSize, t);\n return 0.5 / Math.tan(this._fov * 0.5) * this.height * projectionScaler;\n }\n\n getWorldToCameraMatrix(): Mat4 {\n const zUnit = this.projection.zAxisUnit === \"meters\" ? this.pixelsPerMeter : 1.0;\n const worldToCamera = this._camera.getWorldToCamera(this.worldSize, zUnit);\n\n if (this.projection.name === 'globe') {\n mat4.multiply(worldToCamera, worldToCamera, this.globeMatrix);\n }\n\n return worldToCamera;\n }\n}\n\nexport default Transform;\n","// @flow strict\n\n/**\n * Throttle the given function to run at most every `period` milliseconds.\n * @private\n */\nexport default function throttle(fn: () => void, time: number): () => ?TimeoutID {\n let pending = false;\n let timerId: ?TimeoutID = null;\n\n const later = () => {\n timerId = null;\n if (pending) {\n fn();\n timerId = setTimeout(later, time);\n pending = false;\n }\n };\n\n return () => {\n pending = true;\n if (!timerId) {\n later();\n }\n return timerId;\n };\n}\n","// @flow\n\nimport {bindAll} from '../util/util.js';\nimport window from '../util/window.js';\nimport throttle from '../util/throttle.js';\n\nimport type Map from './map.js';\n\n/*\n * Adds the map's position to its page's location hash.\n * Passed as an option to the map object.\n *\n * @returns {Hash} `this`\n */\nexport default class Hash {\n _map: ?Map;\n _updateHash: () => ?TimeoutID;\n _hashName: ?string;\n\n constructor(hashName: ?string) {\n this._hashName = hashName && encodeURIComponent(hashName);\n bindAll([\n '_getCurrentHash',\n '_onHashChange',\n '_updateHash'\n ], this);\n\n // Mobile Safari doesn't allow updating the hash more than 100 times per 30 seconds.\n // $FlowFixMe[method-unbinding]\n this._updateHash = throttle(this._updateHashUnthrottled.bind(this), 30 * 1000 / 100);\n }\n\n /*\n * Map element to listen for coordinate changes\n *\n * @param {Object} map\n * @returns {Hash} `this`\n */\n addTo(map: Map): this {\n this._map = map;\n // $FlowFixMe[method-unbinding]\n window.addEventListener('hashchange', this._onHashChange, false);\n map.on('moveend', this._updateHash);\n return this;\n }\n\n /*\n * Removes hash\n *\n * @returns {Popup} `this`\n */\n remove(): this {\n if (!this._map) return this;\n\n this._map.off('moveend', this._updateHash);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('hashchange', this._onHashChange, false);\n clearTimeout(this._updateHash());\n\n this._map = undefined;\n return this;\n }\n\n getHashString(): string {\n const map = this._map;\n if (!map) return '';\n\n const hash = getHashString(map);\n\n if (this._hashName) {\n const hashName = this._hashName;\n let found = false;\n const parts = window.location.hash.slice(1).split('&').map(part => {\n const key = part.split('=')[0];\n if (key === hashName) {\n found = true;\n return `${key}=${hash}`;\n }\n return part;\n }).filter(a => a);\n if (!found) {\n parts.push(`${hashName}=${hash}`);\n }\n return `#${parts.join('&')}`;\n }\n\n return `#${hash}`;\n }\n\n _getCurrentHash(): Array {\n // Get the current hash from location, stripped from its number sign\n const hash = window.location.hash.replace('#', '');\n if (this._hashName) {\n // Split the parameter-styled hash into parts and find the value we need\n let keyval;\n hash.split('&').map(\n part => part.split('=')\n ).forEach(part => {\n if (part[0] === this._hashName) {\n keyval = part;\n }\n });\n return (keyval ? keyval[1] || '' : '').split('/');\n }\n return hash.split('/');\n }\n\n _onHashChange(): boolean {\n const map = this._map;\n if (!map) return false;\n const loc = this._getCurrentHash();\n if (loc.length >= 3 && !loc.some(v => isNaN(v))) {\n const bearing = map.dragRotate.isEnabled() && map.touchZoomRotate.isEnabled() ? +(loc[3] || 0) : map.getBearing();\n map.jumpTo({\n center: [+loc[2], +loc[1]],\n zoom: +loc[0],\n bearing,\n pitch: +(loc[4] || 0)\n });\n return true;\n }\n return false;\n }\n\n _updateHashUnthrottled() {\n // Replace if already present, else append the updated hash string\n const location = window.location.href.replace(/(#.+)?$/, this.getHashString());\n window.history.replaceState(window.history.state, null, location);\n }\n}\n\nexport function getHashString(map: Map, mapFeedback?: boolean): string {\n const center = map.getCenter(),\n zoom = Math.round(map.getZoom() * 100) / 100,\n // derived from equation: 512px * 2^z / 360 / 10^d < 0.5px\n precision = Math.ceil((zoom * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10),\n m = Math.pow(10, precision),\n lng = Math.round(center.lng * m) / m,\n lat = Math.round(center.lat * m) / m,\n bearing = map.getBearing(),\n pitch = map.getPitch();\n\n // new map feedback site has some constraints that don't allow\n // us to use the same hash format as we do for the Map hash option.\n let hash = mapFeedback ? `/${lng}/${lat}/${zoom}` : `${zoom}/${lat}/${lng}`;\n\n if (bearing || pitch) hash += (`/${Math.round(bearing * 10) / 10}`);\n if (pitch) hash += (`/${Math.round(pitch)}`);\n\n return hash;\n}\n","// @flow\n\nimport browser from '../util/browser.js';\nimport type Map from './map.js';\nimport {bezier, clamp, extend} from '../util/util.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type {DragPanOptions} from './handler/shim/drag_pan.js';\nimport type {EasingOptions} from '../ui/camera.js';\n\nconst defaultInertiaOptions = {\n linearity: 0.3,\n easing: bezier(0, 0, 0.3, 1),\n};\n\nconst defaultPanInertiaOptions = extend({\n deceleration: 2500,\n maxSpeed: 1400\n}, defaultInertiaOptions);\n\nconst defaultZoomInertiaOptions = extend({\n deceleration: 20,\n maxSpeed: 1400\n}, defaultInertiaOptions);\n\nconst defaultBearingInertiaOptions = extend({\n deceleration: 1000,\n maxSpeed: 360\n}, defaultInertiaOptions);\n\nconst defaultPitchInertiaOptions = extend({\n deceleration: 1000,\n maxSpeed: 90\n}, defaultInertiaOptions);\n\nexport type InertiaOptions = {\n linearity: number;\n easing: (t: number) => number;\n deceleration: number;\n maxSpeed: number;\n};\n\nexport type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent;\n\nexport default class HandlerInertia {\n _map: Map;\n _inertiaBuffer: Array<{ time: number, settings: Object }>;\n\n constructor(map: Map) {\n this._map = map;\n this.clear();\n }\n\n clear() {\n this._inertiaBuffer = [];\n }\n\n record(settings: any) {\n this._drainInertiaBuffer();\n this._inertiaBuffer.push({time: browser.now(), settings});\n }\n\n _drainInertiaBuffer() {\n const inertia = this._inertiaBuffer,\n now = browser.now(),\n cutoff = 160; //msec\n\n while (inertia.length > 0 && now - inertia[0].time > cutoff)\n inertia.shift();\n }\n\n _onMoveEnd(panInertiaOptions?: DragPanOptions): ?(EasingOptions & {easeId?: string}) {\n if (this._map._prefersReducedMotion()) {\n return;\n }\n\n this._drainInertiaBuffer();\n if (this._inertiaBuffer.length < 2) {\n return;\n }\n\n const deltas = {\n zoom: 0,\n bearing: 0,\n pitch: 0,\n pan: new Point(0, 0),\n pinchAround: undefined,\n around: undefined\n };\n\n for (const {settings} of this._inertiaBuffer) {\n deltas.zoom += settings.zoomDelta || 0;\n deltas.bearing += settings.bearingDelta || 0;\n deltas.pitch += settings.pitchDelta || 0;\n if (settings.panDelta) deltas.pan._add(settings.panDelta);\n if (settings.around) deltas.around = settings.around;\n if (settings.pinchAround) deltas.pinchAround = settings.pinchAround;\n }\n\n const lastEntry = this._inertiaBuffer[this._inertiaBuffer.length - 1];\n const duration = (lastEntry.time - this._inertiaBuffer[0].time);\n\n const easeOptions = {};\n\n if (deltas.pan.mag()) {\n const result = calculateEasing(deltas.pan.mag(), duration, extend({}, defaultPanInertiaOptions, panInertiaOptions || {}));\n easeOptions.offset = deltas.pan.mult(result.amount / deltas.pan.mag());\n easeOptions.center = this._map.transform.center;\n extendDuration(easeOptions, result);\n }\n\n if (deltas.zoom) {\n const result = calculateEasing(deltas.zoom, duration, defaultZoomInertiaOptions);\n easeOptions.zoom = this._map.transform.zoom + result.amount;\n extendDuration(easeOptions, result);\n }\n\n if (deltas.bearing) {\n const result = calculateEasing(deltas.bearing, duration, defaultBearingInertiaOptions);\n easeOptions.bearing = this._map.transform.bearing + clamp(result.amount, -179, 179);\n extendDuration(easeOptions, result);\n }\n\n if (deltas.pitch) {\n const result = calculateEasing(deltas.pitch, duration, defaultPitchInertiaOptions);\n easeOptions.pitch = this._map.transform.pitch + result.amount;\n extendDuration(easeOptions, result);\n }\n\n if (easeOptions.zoom || easeOptions.bearing) {\n const last = deltas.pinchAround === undefined ? deltas.around : deltas.pinchAround;\n easeOptions.around = last ? this._map.unproject(last) : this._map.getCenter();\n }\n\n this.clear();\n easeOptions.noMoveStart = true;\n return easeOptions;\n }\n}\n\n// Unfortunately zoom, bearing, etc can't have different durations and easings so\n// we need to choose one. We use the longest duration and it's corresponding easing.\nfunction extendDuration(easeOptions: EasingOptions, result: {| amount: number, duration: number, easing: (t: number) => number |}) {\n if (!easeOptions.duration || easeOptions.duration < result.duration) {\n easeOptions.duration = result.duration;\n easeOptions.easing = result.easing;\n }\n}\n\nfunction calculateEasing(amount: number, inertiaDuration: number, inertiaOptions: InertiaOptions) {\n const {maxSpeed, linearity, deceleration} = inertiaOptions;\n const speed = clamp(\n amount * linearity / (inertiaDuration / 1000),\n -maxSpeed,\n maxSpeed);\n const duration = Math.abs(speed) / (deceleration * linearity);\n return {\n easing: inertiaOptions.easing,\n duration: duration * 1000,\n amount: speed * (duration / 2)\n };\n}\n","// @flow\n\nimport {Event} from '../util/evented.js';\n\nimport * as DOM from '../util/dom.js';\nimport Point from '@mapbox/point-geometry';\nimport {extend} from '../util/util.js';\n\nimport type Map from './map.js';\nimport type LngLat from '../geo/lng_lat.js';\n\n/**\n * `MapMouseEvent` is a class used by other classes to generate\n * mouse events of specific types such as 'click' or 'hover'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @extends {Object}\n * @example\n * // Example of a MapMouseEvent of type \"click\"\n * map.on('click', (e) => {\n * console.log(e);\n * // {\n * // lngLat: {\n * // lng: 40.203,\n * // lat: -74.451\n * // },\n * // originalEvent: {...},\n * // point: {\n * // x: 266,\n * // y: 464\n * // },\n * // target: {...},\n * // type: \"click\"\n * // }\n * });\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Display popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Display popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n */\nexport class MapMouseEvent extends Event {\n /**\n * The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n */\n type: 'mousedown'\n | 'mouseup'\n | 'preclick'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseout'\n | 'contextmenu';\n\n /**\n * The `Map` object that fired the event.\n */\n target: Map;\n\n /**\n * The DOM event which caused the map event.\n */\n originalEvent: MouseEvent;\n\n /**\n * The pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner.\n */\n point: Point;\n\n /**\n * The geographic location on the map of the mouse cursor.\n */\n lngLat: LngLat;\n\n /**\n * If a single `layerId`(as a single string) or multiple `layerIds` (as an array of strings) were specified when adding the event listener with {@link Map#on},\n * `features` will be an array of [GeoJSON](http://geojson.org/) [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n * The array will contain all features from that layer that are rendered at the event's point,\n * in the order that they are rendered with the topmost feature being at the start of the array.\n * The `features` are identical to those returned by {@link Map#queryRenderedFeatures}.\n *\n * If no `layerId` was specified when adding the event listener, `features` will be `undefined`.\n * You can get the features at the point with `map.queryRenderedFeatures(e.point)`.\n *\n * @example\n * // logging features for a specific layer (with `e.features`)\n * map.on('click', 'myLayerId', (e) => {\n * console.log(`There are ${e.features.length} features at point ${e.point}`);\n * });\n *\n * @example\n * // logging features for two layers (with `e.features`)\n * map.on('click', ['layer1', 'layer2'], (e) => {\n * console.log(`There are ${e.features.length} features at point ${e.point}`);\n * });\n *\n * @example\n * // logging all features for all layers (without `e.features`)\n * map.on('click', (e) => {\n * const features = map.queryRenderedFeatures(e.point);\n * console.log(`There are ${features.length} features at point ${e.point}`);\n * });\n */\n features: Array | void;\n\n /**\n * Prevents subsequent default processing of the event by the map.\n *\n * Calling this method will prevent the following default map behaviors:\n *\n * * On `mousedown` events, the behavior of {@link DragPanHandler}.\n * * On `mousedown` events, the behavior of {@link DragRotateHandler}.\n * * On `mousedown` events, the behavior of {@link BoxZoomHandler}.\n * * On `dblclick` events, the behavior of {@link DoubleClickZoomHandler}.\n *\n * @example\n * map.on('click', (e) => {\n * e.preventDefault();\n * });\n */\n preventDefault() {\n this._defaultPrevented = true;\n }\n\n /**\n * `true` if `preventDefault` has been called.\n * @private\n */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n _defaultPrevented: boolean;\n\n /**\n * @private\n */\n constructor(type: string, map: Map, originalEvent: MouseEvent, data: Object = {}) {\n const point = DOM.mousePos(map.getCanvasContainer(), originalEvent);\n const lngLat = map.unproject(point);\n super(type, extend({point, lngLat, originalEvent}, data));\n this._defaultPrevented = false;\n this.target = map;\n }\n}\n\n/**\n * `MapTouchEvent` is a class used by other classes to generate\n * mouse events of specific types such as 'touchstart' or 'touchend'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @extends {Object}\n *\n * @example\n * // Example of a MapTouchEvent of type \"touch\"\n * map.on('touchstart', (e) => {\n * console.log(e);\n * // {\n * // lngLat: {\n * // lng: 40.203,\n * // lat: -74.451\n * // },\n * // lngLats: [\n * // {\n * // lng: 40.203,\n * // lat: -74.451\n * // }\n * // ],\n * // originalEvent: {...},\n * // point: {\n * // x: 266,\n * // y: 464\n * // },\n * // points: [\n * // {\n * // x: 266,\n * // y: 464\n * // }\n * // ]\n * // preventDefault(),\n * // target: {...},\n * // type: \"touchstart\"\n * // }\n * });\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\nexport class MapTouchEvent extends Event {\n /**\n * The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n */\n type: 'touchstart'\n | 'touchend'\n | 'touchcancel';\n\n /**\n * The `Map` object that fired the event.\n */\n target: Map;\n\n /**\n * The DOM event which caused the map event.\n */\n originalEvent: TouchEvent;\n\n /**\n * The geographic location on the map of the center of the touch event points.\n */\n lngLat: LngLat;\n\n /**\n * The pixel coordinates of the center of the touch event points, relative to the map and measured from the top left\n * corner.\n */\n point: Point;\n\n /**\n * The array of pixel coordinates corresponding to a\n * [touch event's `touches`](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches) property.\n */\n points: Array;\n\n /**\n * The geographical locations on the map corresponding to a\n * [touch event's `touches`](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches) property.\n */\n lngLats: Array;\n\n /**\n * If a `layerId` was specified when adding the event listener with {@link Map#on}, `features` will be an array of\n * [GeoJSON](http://geojson.org/) [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n * The array will contain all features from that layer that are rendered at the event's point.\n * The `features` are identical to those returned by {@link Map#queryRenderedFeatures}.\n *\n * If no `layerId` was specified when adding the event listener, `features` will be `undefined`.\n * You can get the features at the point with `map.queryRenderedFeatures(e.point)`.\n *\n * @example\n * // logging features for a specific layer (with `e.features`)\n * map.on('touchstart', 'myLayerId', (e) => {\n * console.log(`There are ${e.features.length} features at point ${e.point}`);\n * });\n *\n * @example\n * // logging all features for all layers (without `e.features`)\n * map.on('touchstart', (e) => {\n * const features = map.queryRenderedFeatures(e.point);\n * console.log(`There are ${features.length} features at point ${e.point}`);\n * });\n */\n features: Array | void;\n\n /**\n * Prevents subsequent default processing of the event by the map.\n *\n * Calling this method will prevent the following default map behaviors:\n *\n * * On `touchstart` events, the behavior of {@link DragPanHandler}.\n * * On `touchstart` events, the behavior of {@link TouchZoomRotateHandler}.\n *\n * @example\n * map.on('touchstart', (e) => {\n * e.preventDefault();\n * });\n */\n preventDefault() {\n this._defaultPrevented = true;\n }\n\n /**\n * Returns `true` if `preventDefault` has been called.\n * @private\n */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n _defaultPrevented: boolean;\n\n /**\n * @private\n */\n constructor(type: string, map: Map, originalEvent: TouchEvent) {\n const touches = type === \"touchend\" ? originalEvent.changedTouches : originalEvent.touches;\n const points = DOM.touchPos(map.getCanvasContainer(), touches);\n const lngLats = points.map((t) => map.unproject(t));\n const point = points.reduce((prev, curr, i, arr) => {\n return prev.add(curr.div(arr.length));\n }, new Point(0, 0));\n const lngLat = map.unproject(point);\n super(type, {points, point, lngLats, lngLat, originalEvent});\n this._defaultPrevented = false;\n }\n}\n\n/**\n * `MapWheelEvent` is a class used by other classes to generate\n * mouse events of specific types such as 'wheel'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @extends {Object}\n * @example\n * // Example event trigger for a MapWheelEvent of type \"wheel\"\n * map.on('wheel', (e) => {\n * console.log('event type:', e.type);\n * // event type: wheel\n * });\n * @example\n * // Example of a MapWheelEvent of type \"wheel\"\n * // {\n * // originalEvent: WheelEvent {...},\n * // \t target: Map {...},\n * // \t type: \"wheel\"\n * // }\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n */\nexport class MapWheelEvent extends Event {\n /**\n * The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n */\n type: 'wheel';\n\n /**\n * The `Map` object that fired the event.\n */\n target: Map;\n\n /**\n * The DOM event which caused the map event.\n */\n originalEvent: WheelEvent;\n\n /**\n * Prevents subsequent default processing of the event by the map.\n * Calling this method will prevent the the behavior of {@link ScrollZoomHandler}.\n *\n * @example\n * map.on('wheel', (e) => {\n * // Prevent the default map scroll zoom behavior.\n * e.preventDefault();\n * });\n */\n preventDefault() {\n this._defaultPrevented = true;\n }\n\n /**\n * `true` if `preventDefault` has been called.\n * @private\n */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n _defaultPrevented: boolean;\n\n /**\n * @private\n */\n constructor(type: string, map: Map, originalEvent: WheelEvent) {\n super(type, {originalEvent});\n this._defaultPrevented = false;\n }\n}\n\n/**\n * `MapBoxZoomEvent` is a class used to generate\n * the events 'boxzoomstart', 'boxzoomend', and 'boxzoomcancel'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @typedef {Object} MapBoxZoomEvent\n * @property {MouseEvent} originalEvent The DOM event that triggered the boxzoom event. Can be a `MouseEvent` or `KeyboardEvent`.\n * @property {('boxzoomstart' | 'boxzoomend' | 'boxzoomcancel')} type The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n * @property {Map} target The `Map` instance that triggered the event.\n * @example\n * // Example trigger of a BoxZoomEvent of type \"boxzoomstart\"\n * map.on('boxzoomstart', (e) => {\n * console.log('event type:', e.type);\n * // event type: boxzoomstart\n * });\n * @example\n * // Example of a BoxZoomEvent of type \"boxzoomstart\"\n * // {\n * // originalEvent: {...},\n * // type: \"boxzoomstart\",\n * // target: {...}\n * // }\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\nexport type MapBoxZoomEvent = {\n type: 'boxzoomstart'\n | 'boxzoomend'\n | 'boxzoomcancel',\n target: Map,\n originalEvent: MouseEvent\n};\n\n/**\n * `MapDataEvent` is a class used to generate\n * events related to loading data, styles, and sources.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @typedef {Object} MapDataEvent\n * @property {('data' | 'dataloading' | 'styledata' | 'styledataloading' | 'sourcedata'| 'sourcedataloading')} type The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n * @property {('source' | 'style')} dataType The type of data that has changed. One of `'source'` or `'style'`, where `'source'` refers to the data associated with any source, and `'style'` refers to the entire [style](https://docs.mapbox.com/help/glossary/style/) used by the map.\n * @property {boolean} [isSourceLoaded] True if the event has a `dataType` of `source` and the source has no outstanding network requests.\n * @property {Object} [source] The [style spec representation of the source](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) if the event has a `dataType` of `source`.\n * @property {string} [sourceId] The `id` of the [`source`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) that triggered the event, if the event has a `dataType` of `source`. Same as the `id` of the object in the `source` property.\n * @property {string} [sourceDataType] Included if the event has a `dataType` of `source` and the event signals\n * that internal data has been received or changed. Possible values are `metadata`, `content` and `visibility`.\n * @property {Object} [tile] The tile being loaded or changed, if the event has a `dataType` of `source` and\n * the event is related to loading of a tile.\n * @property {Coordinate} [coord] The coordinate of the tile if the event has a `dataType` of `source` and\n * the event is related to loading of a tile.\n * @example\n * // Example of a MapDataEvent of type \"sourcedata\"\n * map.on('sourcedata', (e) => {\n * console.log(e);\n * // {\n * // dataType: \"source\",\n * // isSourceLoaded: false,\n * // source: {\n * // type: \"vector\",\n * // url: \"mapbox://mapbox.mapbox-streets-v8,mapbox.mapbox-terrain-v2\"\n * // },\n * // sourceDataType: \"visibility\",\n * // sourceId: \"composite\",\n * // style: {...},\n * // target: {...},\n * // type: \"sourcedata\"\n * // }\n * });\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Change a map's style](https://docs.mapbox.com/mapbox-gl-js/example/setstyle/)\n * @see [Example: Add a GeoJSON line](https://docs.mapbox.com/mapbox-gl-js/example/geojson-line/)\n */\nexport type MapDataEvent = {\n type: 'data'\n | 'dataloading'\n | 'styledata'\n | 'styledataloading'\n | 'sourcedata'\n | 'sourcedataloading',\n dataType: 'source'\n | 'style'\n};\n\nexport type MapContextEvent = {\n type: 'webglcontextlost' | 'webglcontextrestored',\n originalEvent: WebGLContextEvent\n}\n\nexport type MapEvent =\n /** @section {Interaction}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired when a pointing device (usually a mouse) is pressed within the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is pressed while inside a visible portion of the specifed layer.\n *\n * @event mousedown\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mousedown', () => {\n * console.log('A mousedown event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mousedown', 'poi-label', () => {\n * console.log('A mousedown event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'mousedown'\n\n /**\n * Fired when a pointing device (usually a mouse) is released within the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is released while inside a visible portion of the specifed layer.\n *\n * @event mouseup\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mouseup', () => {\n * console.log('A mouseup event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mouseup', 'poi-label', () => {\n * console.log('A mouseup event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'mouseup'\n\n /**\n * Fired when a pointing device (usually a mouse) is moved within the map.\n * As you move the cursor across a web page containing a map,\n * the event will fire each time it enters the map or any child elements.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is moved inside a visible portion of the specifed layer.\n *\n * @event mouseover\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mouseover', () => {\n * console.log('A mouseover event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mouseover', 'poi-label', () => {\n * console.log('A mouseover event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/)\n * @see [Example: Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n */\n | 'mouseover'\n\n /**\n * Fired when a pointing device (usually a mouse) is moved while the cursor is inside the map.\n * As you move the cursor across the map, the event will fire every time the cursor changes position within the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is inside a visible portion of the specified layer.\n *\n * @event mousemove\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mousemove', () => {\n * console.log('A mousemove event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mousemove', 'poi-label', () => {\n * console.log('A mousemove event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/)\n * @see [Example: Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display a popup on over](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n */\n | 'mousemove'\n\n /**\n * Triggered when a click event occurs and is fired before the click event.\n * Primarily implemented to ensure closeOnClick for pop-ups is fired before any other listeners.\n *\n * @event preclick\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n */\n | 'preclick'\n\n /**\n * Fired when a pointing device (usually a mouse) is pressed and released at the same point on the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * point that is pressed and released contains a visible portion of the specifed layer.\n *\n * @event click\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('click', (e) => {\n * console.log(`A click event has occurred at ${e.lngLat}`);\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('click', 'poi-label', (e) => {\n * console.log(`A click event has occurred on a visible portion of the poi-label layer at ${e.lngLat}`);\n * });\n * @see [Example: Measure distances](https://www.mapbox.com/mapbox-gl-js/example/measure/)\n * @see [Example: Center the map on a clicked symbol](https://www.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n */\n | 'click'\n\n /**\n * Fired when a pointing device (usually a mouse) is pressed and released twice at the same point on\n * the map in rapid succession.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only\n * when the point that is clicked twice contains a visible portion of the specifed layer.\n *\n * @event dblclick\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('dblclick', (e) => {\n * console.log(`A dblclick event has occurred at ${e.lngLat}`);\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('dblclick', 'poi-label', (e) => {\n * console.log(`A dblclick event has occurred on a visible portion of the poi-label layer at ${e.lngLat}`);\n * });\n */\n | 'dblclick'\n\n /**\n * Fired when a pointing device (usually a mouse) enters a visible portion of a specified layer from\n * outside that layer or outside the map canvas.\n *\n * **Important:** This event can only be listened for when {@link Map#on} includes three arguments,\n * where the second argument specifies the desired layer.\n *\n * @event mouseenter\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mouseenter', 'water', () => {\n * console.log('A mouseenter event occurred on a visible portion of the water layer.');\n * });\n * @see [Example: Center the map on a clicked symbol](https://docs.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n */\n | 'mouseenter'\n\n /**\n * Fired when a pointing device (usually a mouse) leaves a visible portion of a specified layer or moves\n * from the specified layer to outside the map canvas.\n *\n * **Note:** To detect when the mouse leaves the canvas, independent of layer, use {@link Map.event:mouseout} instead.\n *\n * **Important:** This event can only be listened for when {@link Map#on} includes three arguments,\n * where the second argument specifies the desired layer.\n *\n * @event mouseleave\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the pointing device leaves\n * // a visible portion of the specified layer.\n * map.on('mouseleave', 'water', () => {\n * console.log('A mouseleave event occurred.');\n * });\n * @see [Example: Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n */\n | 'mouseleave'\n\n /**\n * Fired when a point device (usually a mouse) leaves the map's canvas.\n *\n * @event mouseout\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the pointing device leaves\n * // the map's canvas.\n * map.on('mouseout', () => {\n * console.log('A mouseout event occurred.');\n * });\n */\n | 'mouseout'\n\n /**\n * Fired when the right button of the mouse is clicked or the context menu key is pressed within the map.\n *\n * @event contextmenu\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the right mouse button is\n * // pressed within the map.\n * map.on('contextmenu', () => {\n * console.log('A contextmenu event occurred.');\n * });\n */\n | 'contextmenu'\n\n /**\n * Fired when a [`wheel`](https://developer.mozilla.org/en-US/docs/Web/Events/wheel) event occurs within the map.\n *\n * @event wheel\n * @memberof Map\n * @instance\n * @type {MapWheelEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a wheel event occurs within the map.\n * map.on('wheel', () => {\n * console.log('A wheel event occurred.');\n * });\n */\n | 'wheel'\n\n /**\n * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the map.\n *\n * @event touchstart\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a `touchstart` event occurs within the map.\n * map.on('touchstart', () => {\n * console.log('A touchstart event occurred.');\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'touchstart'\n\n /**\n * Fired when a [`touchend`](https://developer.mozilla.org/en-US/docs/Web/Events/touchend) event occurs within the map.\n *\n * @event touchend\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires when a `touchstart` event occurs within the map.\n * map.on('touchstart', () => {\n * console.log('A touchstart event occurred.');\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'touchend'\n\n /**\n * Fired when a [`touchmove`](https://developer.mozilla.org/en-US/docs/Web/Events/touchmove) event occurs within the map.\n *\n * @event touchmove\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires when a touchmove event occurs within the map.\n * map.on('touchmove', () => {\n * console.log('A touchmove event occurred.');\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'touchmove'\n\n /**\n * Fired when a [`touchcancel`](https://developer.mozilla.org/en-US/docs/Web/Events/touchcancel) event occurs within the map.\n *\n * @event touchcancel\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires when a `touchcancel` event occurs within the map.\n * map.on('touchcancel', () => {\n * console.log('A touchcancel event occurred.');\n * });\n */\n | 'touchcancel'\n\n /** @section {Movement}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired just before the map begins a transition from one view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}.\n *\n * @event movestart\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires just before the map begins a transition from one view to another.\n * map.on('movestart', () => {\n * console.log('A movestart` event occurred.');\n * });\n */\n | 'movestart'\n\n /**\n * Fired repeatedly during an animated transition from one view to another, as the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event move\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires repeatedly during an animated transition.\n * map.on('move', () => {\n * console.log('A move event occurred.');\n * });\n * @see [Example: Display HTML clusters with custom properties](https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/)\n * @see [Example: Filter features within map view](https://docs.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n */\n | 'move'\n\n /**\n * Fired just after the map completes a transition from one\n * view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}.\n *\n * @event moveend\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after the map completes a transition.\n * map.on('moveend', () => {\n * console.log('A moveend event occurred.');\n * });\n * @see [Example: Play map locations as a slideshow](https://www.mapbox.com/mapbox-gl-js/example/playback-locations/)\n * @see [Example: Filter features within map view](https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n * @see [Example: Display HTML clusters with custom properties](https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/)\n */\n | 'moveend'\n\n /**\n * Fired when a \"drag to pan\" interaction starts. See {@link DragPanHandler}.\n *\n * @event dragstart\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a \"drag to pan\" interaction starts.\n * map.on('dragstart', () => {\n * console.log('A dragstart event occurred.');\n * });\n */\n | 'dragstart'\n\n /**\n * Fired repeatedly during a \"drag to pan\" interaction. See {@link DragPanHandler}.\n *\n * @event drag\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during a \"drag to pan\" interaction.\n * map.on('drag', () => {\n * console.log('A drag event occurred.');\n * });\n */\n | 'drag'\n\n /**\n * Fired when a \"drag to pan\" interaction ends. See {@link DragPanHandler}.\n *\n * @event dragend\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a \"drag to pan\" interaction ends.\n * map.on('dragend', () => {\n * console.log('A dragend event occurred.');\n * });\n * @see [Example: Create a draggable marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n */\n | 'dragend'\n\n /**\n * Fired just before the map begins a transition from one zoom level to another,\n * as the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event zoomstart\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a zoom transition starts.\n * map.on('zoomstart', () => {\n * console.log('A zoomstart event occurred.');\n * });\n */\n | 'zoomstart'\n\n /**\n * Fired repeatedly during an animated transition from one zoom level to another,\n * as the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event zoom\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during a zoom transition.\n * map.on('zoom', () => {\n * console.log('A zoom event occurred.');\n * });\n * @see [Example: Update a choropleth layer by zoom level](https://www.mapbox.com/mapbox-gl-js/example/updating-choropleth/)\n */\n | 'zoom'\n\n /**\n * Fired just after the map completes a transition from one zoom level to another\n * as the result of either user interaction or methods such as {@link Map#flyTo}.\n * The zoom transition will usually end before rendering is finished, so if you\n * need to wait for rendering to finish, use the {@link Map.event:idle} event instead.\n *\n * @event zoomend\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a zoom transition finishes.\n * map.on('zoomend', () => {\n * console.log('A zoomend event occurred.');\n * });\n */\n | 'zoomend'\n\n /**\n * Fired when a \"drag to rotate\" interaction starts. See {@link DragRotateHandler}.\n *\n * @event rotatestart\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a \"drag to rotate\" interaction starts.\n * map.on('rotatestart', () => {\n * console.log('A rotatestart event occurred.');\n * });\n */\n | 'rotatestart'\n\n /**\n * Fired repeatedly during a \"drag to rotate\" interaction. See {@link DragRotateHandler}.\n *\n * @event rotate\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during \"drag to rotate\" interaction.\n * map.on('rotate', () => {\n * console.log('A rotate event occurred.');\n * });\n */\n | 'rotate'\n\n /**\n * Fired when a \"drag to rotate\" interaction ends. See {@link DragRotateHandler}.\n *\n * @event rotateend\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a \"drag to rotate\" interaction ends.\n * map.on('rotateend', () => {\n * console.log('A rotateend event occurred.');\n * });\n */\n | 'rotateend'\n\n /**\n * Fired whenever the map's pitch (tilt) begins a change as\n * the result of either user interaction or methods such as {@link Map#flyTo} .\n *\n * @event pitchstart\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a pitch (tilt) transition starts.\n * map.on('pitchstart', () => {\n * console.log('A pitchstart event occurred.');\n * });\n */\n | 'pitchstart'\n\n /**\n * Fired repeatedly during the map's pitch (tilt) animation between\n * one state and another as the result of either user interaction\n * or methods such as {@link Map#flyTo}.\n *\n * @event pitch\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during a pitch (tilt) transition.\n * map.on('pitch', () => {\n * console.log('A pitch event occurred.');\n * });\n */\n | 'pitch'\n\n /**\n * Fired immediately after the map's pitch (tilt) finishes changing as\n * the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event pitchend\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a pitch (tilt) transition ends.\n * map.on('pitchend', () => {\n * console.log('A pitchend event occurred.');\n * });\n */\n | 'pitchend'\n\n /**\n * Fired when a \"box zoom\" interaction starts. See {@link BoxZoomHandler}.\n *\n * @event boxzoomstart\n * @memberof Map\n * @instance\n * @type {MapBoxZoomEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a \"box zoom\" interaction starts.\n * map.on('boxzoomstart', () => {\n * console.log('A boxzoomstart event occurred.');\n * });\n */\n | 'boxzoomstart'\n\n /**\n * Fired when a \"box zoom\" interaction ends. See {@link BoxZoomHandler}.\n *\n * @event boxzoomend\n * @memberof Map\n * @instance\n * @type {Object}\n * @type {MapBoxZoomEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a \"box zoom\" interaction ends.\n * map.on('boxzoomend', () => {\n * console.log('A boxzoomend event occurred.');\n * });\n */\n | 'boxzoomend'\n\n /**\n * Fired when the user cancels a \"box zoom\" interaction, or when the bounding box does not meet the minimum size threshold.\n * See {@link BoxZoomHandler}.\n *\n * @event boxzoomcancel\n * @memberof Map\n * @instance\n * @type {MapBoxZoomEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // the user cancels a \"box zoom\" interaction.\n * map.on('boxzoomcancel', () => {\n * console.log('A boxzoomcancel event occurred.');\n * });\n */\n | 'boxzoomcancel'\n\n /**\n * Fired immediately after the map has been resized.\n *\n * @event resize\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // immediately after the map has been resized.\n * map.on('resize', () => {\n * console.log('A resize event occurred.');\n * });\n */\n | 'resize'\n\n /** @section {Lifecycle}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired immediately after all necessary resources have been downloaded\n * and the first visually complete rendering of the map has occurred.\n *\n * @event load\n * @memberof Map\n * @instance\n * @type {Object}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map has finished loading.\n * map.on('load', () => {\n * console.log('A load event occurred.');\n * });\n * @see [Example: Draw GeoJSON points](https://www.mapbox.com/mapbox-gl-js/example/geojson-markers/)\n * @see [Example: Add live realtime data](https://www.mapbox.com/mapbox-gl-js/example/live-geojson/)\n * @see [Example: Animate a point](https://www.mapbox.com/mapbox-gl-js/example/animate-point-along-line/)\n */\n | 'load'\n\n /**\n * Fired whenever the map is drawn to the screen, as the result of:\n *\n * - a change to the map's position, zoom, pitch, or bearing\n * - a change to the map's style\n * - a change to a GeoJSON source\n * - the loading of a vector tile, GeoJSON file, glyph, or sprite.\n *\n * @event render\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // whenever the map is drawn to the screen.\n * map.on('render', () => {\n * console.log('A render event occurred.');\n * });\n */\n | 'render'\n\n /**\n * Fired after the last frame rendered before the map enters an\n * \"idle\" state:\n *\n * - No camera transitions are in progress\n * - All currently requested tiles have loaded\n * - All fade/transition animations have completed.\n *\n * @event idle\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before the map enters an \"idle\" state.\n * map.on('idle', () => {\n * console.log('A idle event occurred.');\n * });\n */\n | 'idle'\n\n /**\n * Fired immediately after the map has been removed with {@link Map.event:remove}.\n *\n * @event remove\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after the map is removed.\n * map.on('remove', () => {\n * console.log('A remove event occurred.');\n * });\n */\n | 'remove'\n\n /**\n * Fired when an error occurs. This is Mapbox GL JS's primary error reporting\n * mechanism. We use an event instead of `throw` to better accommodate\n * asyncronous operations. If no listeners are bound to the `error` event, the\n * error will be printed to the console.\n *\n * @event error\n * @memberof Map\n * @instance\n * @property {string} message Error message.\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when an error occurs.\n * map.on('error', () => {\n * console.log('A error event occurred.');\n * });\n */\n | 'error'\n\n /**\n * Fired when the WebGL context is lost.\n *\n * @event webglcontextlost\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the WebGL context is lost.\n * map.on('webglcontextlost', () => {\n * console.log('A webglcontextlost event occurred.');\n * });\n */\n | 'webglcontextlost'\n\n /**\n * Fired when the WebGL context is restored.\n *\n * @event webglcontextrestored\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the WebGL context is restored.\n * map.on('webglcontextrestored', () => {\n * console.log('A webglcontextrestored event occurred.');\n * });\n */\n | 'webglcontextrestored'\n\n /** @section {Data loading}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired when any map data loads or changes. See {@link MapDataEvent}\n * for more information.\n *\n * @event data\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when map data loads or changes.\n * map.on('data', () => {\n * console.log('A data event occurred.');\n * });\n * @see [Example: Display HTML clusters with custom properties](https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/)\n */\n | 'data'\n\n /**\n * Fired when the map's style loads or changes. See\n * {@link MapDataEvent} for more information.\n *\n * @event styledata\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map's style loads or changes.\n * map.on('styledata', () => {\n * console.log('A styledata event occurred.');\n * });\n */\n | 'styledata'\n\n /**\n * Fired when one of the map's sources loads or changes, including if a tile belonging\n * to a source loads or changes. See {@link MapDataEvent} for more information.\n *\n * @event sourcedata\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when one of the map's sources loads or changes.\n * map.on('sourcedata', () => {\n * console.log('A sourcedata event occurred.');\n * });\n */\n | 'sourcedata'\n\n /**\n * Fired when any map data (style, source, tile, etc) begins loading or\n * changing asynchronously. All `dataloading` events are followed by a `data`\n * or `error` event. See {@link MapDataEvent} for more information.\n *\n * @event dataloading\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when any map data begins loading\n * // or changing asynchronously.\n * map.on('dataloading', () => {\n * console.log('A dataloading event occurred.');\n * });\n */\n | 'dataloading'\n\n /**\n * Fired when the map's style begins loading or changing asynchronously.\n * All `styledataloading` events are followed by a `styledata`\n * or `error` event. See {@link MapDataEvent} for more information.\n *\n * @event styledataloading\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map's style begins loading or\n * // changing asynchronously.\n * map.on('styledataloading', () => {\n * console.log('A styledataloading event occurred.');\n * });\n */\n | 'styledataloading'\n\n /**\n * Fired when one of the map's sources begins loading or changing asynchronously.\n * All `sourcedataloading` events are followed by a `sourcedata` or `error` event.\n * See {@link MapDataEvent} for more information.\n *\n * @event sourcedataloading\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map's sources begin loading or\n * // changing asynchronously.\n * map.on('sourcedataloading', () => {\n * console.log('A sourcedataloading event occurred.');\n * });\n */\n | 'sourcedataloading'\n\n /**\n * Fired when an icon or pattern needed by the style is missing. The missing image can\n * be added with {@link Map#addImage} within this event listener callback to prevent the image from\n * being skipped. This event can be used to dynamically generate icons and patterns.\n *\n * @event styleimagemissing\n * @memberof Map\n * @instance\n * @property {string} id The id of the missing image.\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when an icon or pattern is missing.\n * map.on('styleimagemissing', () => {\n * console.log('A styleimagemissing event occurred.');\n * });\n * @see [Example: Generate and add a missing icon to the map](https://mapbox.com/mapbox-gl-js/example/add-image-missing-generated/)\n */\n | 'styleimagemissing'\n\n /**\n * Fired immediately after all style resources have been downloaded\n * and the first visually complete rendering of the base style has occurred.\n *\n * @event style.load\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map has finished loading.\n * map.on('style.load', () => {\n * console.log('A style load event occurred.');\n * });\n * @see [Example: Persist layers when switching base style](https://www.mapbox.com/mapbox-gl-js/example/style-switch)\n */\n | 'style.load'\n\n /**\n * Fired after speed index calculation is completed if `speedIndexTiming` option has been set to `true`.\n *\n * @private\n * @event speedindexcompleted\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * var map = new mapboxgl.Map({});\n * map.speedIndexTiming = true;\n * // Set an event listener that fires\n * // after speed index calculation is completed.\n * map.on('speedindexcompleted', function() {\n * console.log(`speed index is ${map.speedIndexNumber}`);\n * });\n */\n | 'speedindexcompleted'\n\n /**\n * Fired after RTL text plugin state changes.\n *\n * @event pluginStateChange\n * @instance\n * @private\n */\n | 'pluginStateChange'\n\n /**\n * Fired in worker.js after sprite loaded.\n *\n * @event pluginStateChange\n * @instance\n * @private\n */\n | 'isSpriteLoaded'\n\n /**\n * Fired in style.js after layer order changed.\n *\n * @event pluginStateChange\n * @instance\n * @private\n */\n | 'neworder'\n;\n","// @flow\n\nimport {extend} from '../../util/util.js';\nimport {MapMouseEvent, MapTouchEvent, MapWheelEvent} from '../events.js';\n\nimport type Map from '../map.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport class MapEventHandler {\n\n _mousedownPos: ?Point;\n _clickTolerance: number;\n _map: Map;\n\n constructor(map: Map, options: { clickTolerance: number }) {\n this._map = map;\n this._clickTolerance = options.clickTolerance;\n }\n\n reset() {\n this._mousedownPos = undefined;\n }\n\n wheel(e: WheelEvent): ?HandlerResult {\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - ScrollZoom\n return this._firePreventable(new MapWheelEvent(e.type, this._map, e));\n }\n\n mousedown(e: MouseEvent, point: Point): ?HandlerResult {\n this._mousedownPos = point;\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - MousePan\n // - MouseRotate\n // - MousePitch\n // - DblclickHandler\n return this._firePreventable(new MapMouseEvent(e.type, this._map, e));\n }\n\n mouseup(e: MouseEvent) {\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n preclick(e: MouseEvent) {\n const synth = extend({}, e);\n synth.type = 'preclick';\n this._map.fire(new MapMouseEvent(synth.type, this._map, synth));\n }\n\n click(e: MouseEvent, point: Point) {\n if (this._mousedownPos && this._mousedownPos.dist(point) >= this._clickTolerance) return;\n this.preclick(e);\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n dblclick(e: MouseEvent): ?HandlerResult {\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - DblClickZoom\n return this._firePreventable(new MapMouseEvent(e.type, this._map, e));\n }\n\n mouseover(e: MouseEvent) {\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n mouseout(e: MouseEvent) {\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n touchstart(e: TouchEvent): ?HandlerResult {\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - TouchPan\n // - TouchZoom\n // - TouchRotate\n // - TouchPitch\n // - TapZoom\n // - SwipeZoom\n return this._firePreventable(new MapTouchEvent(e.type, this._map, e));\n }\n\n touchmove(e: TouchEvent) {\n this._map.fire(new MapTouchEvent(e.type, this._map, e));\n }\n\n touchend(e: TouchEvent) {\n this._map.fire(new MapTouchEvent(e.type, this._map, e));\n }\n\n touchcancel(e: TouchEvent) {\n this._map.fire(new MapTouchEvent(e.type, this._map, e));\n }\n\n _firePreventable(mapEvent: MapMouseEvent | MapTouchEvent | MapWheelEvent): ?HandlerResult {\n this._map.fire(mapEvent);\n if (mapEvent.defaultPrevented) {\n // returning an object marks the handler as active and resets other handlers\n return {};\n }\n }\n\n isEnabled(): boolean {\n return true;\n }\n\n isActive(): boolean {\n return false;\n }\n enable() {}\n disable() {}\n}\n\nexport class BlockableMapEventHandler {\n _map: Map;\n _delayContextMenu: boolean;\n _contextMenuEvent: ?MouseEvent;\n\n constructor(map: Map) {\n this._map = map;\n }\n\n reset() {\n this._delayContextMenu = false;\n this._contextMenuEvent = undefined;\n }\n\n mousemove(e: MouseEvent) {\n // mousemove map events should not be fired when interaction handlers (pan, rotate, etc) are active\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n mousedown() {\n this._delayContextMenu = true;\n }\n\n mouseup() {\n this._delayContextMenu = false;\n if (this._contextMenuEvent) {\n this._map.fire(new MapMouseEvent('contextmenu', this._map, this._contextMenuEvent));\n delete this._contextMenuEvent;\n }\n }\n contextmenu(e: MouseEvent) {\n if (this._delayContextMenu) {\n // Mac: contextmenu fired on mousedown; we save it until mouseup for consistency's sake\n this._contextMenuEvent = e;\n } else {\n // Windows: contextmenu fired on mouseup, so fire event now\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n // prevent browser context menu when necessary\n if (this._map.listens('contextmenu')) {\n e.preventDefault();\n }\n }\n\n isEnabled(): boolean {\n return true;\n }\n\n isActive(): boolean {\n return false;\n }\n enable() {}\n disable() {}\n}\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\n\nimport {Event} from '../../util/evented.js';\n\nimport type Map from '../map.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\n/**\n * The `BoxZoomHandler` allows the user to zoom the map to fit within a bounding box.\n * The bounding box is defined by clicking and holding `shift` while dragging the cursor.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\nclass BoxZoomHandler {\n _map: Map;\n _el: HTMLElement;\n _container: HTMLElement;\n _enabled: boolean;\n _active: boolean;\n _startPos: ?Point;\n _lastPos: ?Point;\n _box: HTMLElement;\n _clickTolerance: number;\n\n /**\n * @private\n */\n constructor(map: Map, options: {\n clickTolerance: number\n }) {\n this._map = map;\n this._el = map.getCanvasContainer();\n this._container = map.getContainer();\n this._clickTolerance = options.clickTolerance || 1;\n }\n\n /**\n * Returns a Boolean indicating whether the \"box zoom\" interaction is enabled.\n *\n * @returns {boolean} Returns `true` if the \"box zoom\" interaction is enabled.\n * @example\n * const isBoxZoomEnabled = map.boxZoom.isEnabled();\n */\n isEnabled(): boolean {\n return !!this._enabled;\n }\n\n /**\n * Returns a Boolean indicating whether the \"box zoom\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"box zoom\" interaction is active.\n * @example\n * const isBoxZoomActive = map.boxZoom.isActive();\n */\n isActive(): boolean {\n return !!this._active;\n }\n\n /**\n * Enables the \"box zoom\" interaction.\n *\n * @example\n * map.boxZoom.enable();\n */\n enable() {\n if (this.isEnabled()) return;\n this._enabled = true;\n }\n\n /**\n * Disables the \"box zoom\" interaction.\n *\n * @example\n * map.boxZoom.disable();\n */\n disable() {\n if (!this.isEnabled()) return;\n this._enabled = false;\n }\n\n mousedown(e: MouseEvent, point: Point) {\n if (!this.isEnabled()) return;\n if (!(e.shiftKey && e.button === 0)) return;\n\n DOM.disableDrag();\n this._startPos = this._lastPos = point;\n this._active = true;\n }\n\n mousemoveWindow(e: MouseEvent, point: Point) {\n if (!this._active) return;\n\n const pos = point;\n const p0 = this._startPos;\n const p1 = this._lastPos;\n\n if (!p0 || !p1 || p1.equals(pos) || (!this._box && pos.dist(p0) < this._clickTolerance)) {\n return;\n }\n\n this._lastPos = pos;\n\n if (!this._box) {\n this._box = DOM.create('div', 'mapboxgl-boxzoom', this._container);\n this._container.classList.add('mapboxgl-crosshair');\n this._fireEvent('boxzoomstart', e);\n }\n\n const minX = Math.min(p0.x, pos.x),\n maxX = Math.max(p0.x, pos.x),\n minY = Math.min(p0.y, pos.y),\n maxY = Math.max(p0.y, pos.y);\n\n this._map._requestDomTask(() => {\n if (this._box) {\n this._box.style.transform = `translate(${minX}px,${minY}px)`;\n this._box.style.width = `${maxX - minX}px`;\n this._box.style.height = `${maxY - minY}px`;\n }\n });\n }\n\n mouseupWindow(e: MouseEvent, point: Point): ?HandlerResult {\n if (!this._active) return;\n\n const p0 = this._startPos,\n p1 = point;\n\n if (!p0 || e.button !== 0) return;\n\n this.reset();\n\n DOM.suppressClick();\n\n if (p0.x === p1.x && p0.y === p1.y) {\n this._fireEvent('boxzoomcancel', e);\n } else {\n this._map.fire(new Event('boxzoomend', {originalEvent: e}));\n return {\n cameraAnimation: (map: Map) => map.fitScreenCoordinates(p0, p1, this._map.getBearing(), {linear: false})\n };\n }\n }\n\n keydown(e: KeyboardEvent) {\n if (!this._active) return;\n\n if (e.keyCode === 27) {\n this.reset();\n this._fireEvent('boxzoomcancel', e);\n }\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n\n this._container.classList.remove('mapboxgl-crosshair');\n\n if (this._box) {\n this._box.remove();\n this._box = (null: any);\n }\n\n DOM.enableDrag();\n\n delete this._startPos;\n delete this._lastPos;\n }\n\n _fireEvent(type: string, e: any): Map {\n return this._map.fire(new Event(type, {originalEvent: e}));\n }\n}\n\nexport default BoxZoomHandler;\n","// @flow\n\nimport assert from 'assert';\n\nimport type Point from '@mapbox/point-geometry';\n\nexport function indexTouches(touches: Array, points: Array): {[number | string]: Point} {\n assert(touches.length === points.length);\n const obj = {};\n for (let i = 0; i < touches.length; i++) {\n obj[touches[i].identifier] = points[i];\n }\n return obj;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport {indexTouches} from './handler_util.js';\n\nfunction getCentroid(points: Array) {\n const sum = new Point(0, 0);\n for (const point of points) {\n sum._add(point);\n }\n return sum.div(points.length);\n}\n\nexport const MAX_TAP_INTERVAL = 500;\nconst MAX_TOUCH_TIME = 500;\nconst MAX_DIST = 30;\n\nexport class SingleTapRecognizer {\n\n numTouches: number;\n centroid: ?Point;\n startTime: number;\n aborted: boolean;\n touches: { [number | string]: Point };\n\n constructor(options: { numTouches: number }) {\n this.reset();\n this.numTouches = options.numTouches;\n }\n\n reset() {\n this.centroid = undefined;\n this.startTime = 0;\n this.touches = {};\n this.aborted = false;\n }\n\n touchstart(e: TouchEvent, points: Array, mapTouches: Array) {\n\n if (this.centroid || mapTouches.length > this.numTouches) {\n this.aborted = true;\n }\n if (this.aborted) {\n return;\n }\n\n if (this.startTime === 0) {\n this.startTime = e.timeStamp;\n }\n\n if (mapTouches.length === this.numTouches) {\n this.centroid = getCentroid(points);\n this.touches = indexTouches(mapTouches, points);\n }\n }\n\n touchmove(e: TouchEvent, points: Array, mapTouches: Array) {\n if (this.aborted || !this.centroid) return;\n\n const newTouches = indexTouches(mapTouches, points);\n for (const id in this.touches) {\n const prevPos = this.touches[id];\n const pos = newTouches[id];\n if (!pos || pos.dist(prevPos) > MAX_DIST) {\n this.aborted = true;\n }\n }\n }\n\n touchend(e: TouchEvent, points: Array, mapTouches: Array): ?Point {\n if (!this.centroid || e.timeStamp - this.startTime > MAX_TOUCH_TIME) {\n this.aborted = true;\n }\n\n if (mapTouches.length === 0) {\n const centroid = !this.aborted && this.centroid;\n this.reset();\n if (centroid) return centroid;\n }\n }\n\n}\n\nexport class TapRecognizer {\n\n singleTap: SingleTapRecognizer;\n numTaps: number;\n lastTime: number;\n lastTap: ?Point;\n count: number;\n\n constructor(options: { numTaps: number, numTouches: number }) {\n this.singleTap = new SingleTapRecognizer(options);\n this.numTaps = options.numTaps;\n this.reset();\n }\n\n reset() {\n this.lastTime = Infinity;\n this.lastTap = undefined;\n this.count = 0;\n this.singleTap.reset();\n }\n\n touchstart(e: TouchEvent, points: Array, mapTouches: Array) {\n this.singleTap.touchstart(e, points, mapTouches);\n }\n\n touchmove(e: TouchEvent, points: Array, mapTouches: Array) {\n this.singleTap.touchmove(e, points, mapTouches);\n }\n\n touchend(e: TouchEvent, points: Array, mapTouches: Array): ?Point {\n const tap = this.singleTap.touchend(e, points, mapTouches);\n if (tap) {\n const soonEnough = e.timeStamp - this.lastTime < MAX_TAP_INTERVAL;\n const closeEnough = !this.lastTap || this.lastTap.dist(tap) < MAX_DIST;\n\n if (!soonEnough || !closeEnough) {\n this.reset();\n }\n\n this.count++;\n this.lastTime = e.timeStamp;\n this.lastTap = tap;\n\n if (this.count === this.numTaps) {\n this.reset();\n return tap;\n }\n }\n }\n}\n","// @flow\n\nimport {TapRecognizer} from './tap_recognizer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class TapZoomHandler {\n\n _enabled: boolean;\n _active: boolean;\n _zoomIn: TapRecognizer;\n _zoomOut: TapRecognizer;\n\n constructor() {\n this._zoomIn = new TapRecognizer({\n numTouches: 1,\n numTaps: 2\n });\n\n this._zoomOut = new TapRecognizer({\n numTouches: 2,\n numTaps: 1\n });\n\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._zoomIn.reset();\n this._zoomOut.reset();\n }\n\n touchstart(e: TouchEvent, points: Array, mapTouches: Array) {\n this._zoomIn.touchstart(e, points, mapTouches);\n this._zoomOut.touchstart(e, points, mapTouches);\n }\n\n touchmove(e: TouchEvent, points: Array, mapTouches: Array) {\n this._zoomIn.touchmove(e, points, mapTouches);\n this._zoomOut.touchmove(e, points, mapTouches);\n }\n\n touchend(e: TouchEvent, points: Array, mapTouches: Array): ?HandlerResult {\n const zoomInPoint = this._zoomIn.touchend(e, points, mapTouches);\n const zoomOutPoint = this._zoomOut.touchend(e, points, mapTouches);\n\n if (zoomInPoint) {\n this._active = true;\n e.preventDefault();\n setTimeout(() => this.reset(), 0);\n return {\n cameraAnimation: (map: Map) => map.easeTo({\n duration: 300,\n zoom: map.getZoom() + 1,\n around: map.unproject(zoomInPoint)\n }, {originalEvent: e})\n };\n } else if (zoomOutPoint) {\n this._active = true;\n e.preventDefault();\n setTimeout(() => this.reset(), 0);\n return {\n cameraAnimation: (map: Map) => map.easeTo({\n duration: 300,\n zoom: map.getZoom() - 1,\n around: map.unproject(zoomOutPoint)\n }, {originalEvent: e})\n };\n }\n }\n\n touchcancel() {\n this.reset();\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\nconst LEFT_BUTTON = 0;\nconst RIGHT_BUTTON = 2;\n\n// the values for each button in MouseEvent.buttons\nconst BUTTONS_FLAGS = {\n [LEFT_BUTTON]: 1,\n [RIGHT_BUTTON]: 2\n};\n\nfunction buttonStillPressed(e: MouseEvent, button: number) {\n const flag = BUTTONS_FLAGS[button];\n return e.buttons === undefined || (e.buttons & flag) !== flag;\n}\n\nclass MouseHandler {\n\n _enabled: boolean;\n _active: boolean;\n _lastPoint: ?Point;\n _eventButton: ?number;\n _moved: boolean;\n _clickTolerance: number;\n\n constructor(options: { clickTolerance: number }) {\n this.reset();\n this._clickTolerance = options.clickTolerance || 1;\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._moved = false;\n this._lastPoint = undefined;\n this._eventButton = undefined;\n }\n\n _correctButton(e: MouseEvent, button: number): boolean { //eslint-disable-line\n return false; // implemented by child\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult { //eslint-disable-line\n return {}; // implemented by child\n }\n\n mousedown(e: MouseEvent, point: Point) {\n if (this._lastPoint) return;\n\n const eventButton = DOM.mouseButton(e);\n if (!this._correctButton(e, eventButton)) return;\n\n this._lastPoint = point;\n this._eventButton = eventButton;\n }\n\n mousemoveWindow(e: MouseEvent, point: Point): ?HandlerResult {\n const lastPoint = this._lastPoint;\n if (!lastPoint) return;\n e.preventDefault();\n\n if (this._eventButton != null && buttonStillPressed(e, this._eventButton)) {\n // Some browsers don't fire a `mouseup` when the mouseup occurs outside\n // the window or iframe:\n // https://github.com/mapbox/mapbox-gl-js/issues/4622\n //\n // If the button is no longer pressed during this `mousemove` it may have\n // been released outside of the window or iframe.\n this.reset();\n return;\n }\n\n if (!this._moved && point.dist(lastPoint) < this._clickTolerance) return;\n this._moved = true;\n this._lastPoint = point;\n\n // implemented by child class\n return this._move(lastPoint, point);\n }\n\n mouseupWindow(e: MouseEvent) {\n if (!this._lastPoint) return;\n const eventButton = DOM.mouseButton(e);\n if (eventButton !== this._eventButton) return;\n if (this._moved) DOM.suppressClick();\n this.reset();\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n\nexport class MousePanHandler extends MouseHandler {\n\n mousedown(e: MouseEvent, point: Point) {\n super.mousedown(e, point);\n if (this._lastPoint) this._active = true;\n }\n _correctButton(e: MouseEvent, button: number): boolean {\n return button === LEFT_BUTTON && !e.ctrlKey;\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult {\n return {\n around: point,\n panDelta: point.sub(lastPoint)\n };\n }\n}\n\nexport class MouseRotateHandler extends MouseHandler {\n _correctButton(e: MouseEvent, button: number): boolean {\n return (button === LEFT_BUTTON && e.ctrlKey) || (button === RIGHT_BUTTON);\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult {\n const degreesPerPixelMoved = 0.8;\n const bearingDelta = (point.x - lastPoint.x) * degreesPerPixelMoved;\n if (bearingDelta) {\n this._active = true;\n return {bearingDelta};\n }\n }\n\n contextmenu(e: MouseEvent) {\n // prevent browser context menu when necessary; we don't allow it with rotation\n // because we can't discern rotation gesture start from contextmenu on Mac\n e.preventDefault();\n }\n}\n\nexport class MousePitchHandler extends MouseHandler {\n _correctButton(e: MouseEvent, button: number): boolean {\n return (button === LEFT_BUTTON && e.ctrlKey) || (button === RIGHT_BUTTON);\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult {\n const degreesPerPixelMoved = -0.5;\n const pitchDelta = (point.y - lastPoint.y) * degreesPerPixelMoved;\n if (pitchDelta) {\n this._active = true;\n return {pitchDelta};\n }\n }\n\n contextmenu(e: MouseEvent) {\n // prevent browser context menu when necessary; we don't allow it with rotation\n // because we can't discern rotation gesture start from contextmenu on Mac\n e.preventDefault();\n }\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport type Map from '../map.js';\nimport {indexTouches} from './handler_util.js';\nimport {bindAll, isFullscreen} from '../../util/util.js';\nimport * as DOM from '../../util/dom.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class TouchPanHandler {\n\n _map: Map;\n _el: HTMLElement;\n _enabled: boolean;\n _active: boolean;\n _touches: { [string | number]: Point };\n _minTouches: number;\n _clickTolerance: number;\n _sum: Point;\n _alertContainer: HTMLElement;\n _alertTimer: TimeoutID;\n\n constructor(map: Map, options: { clickTolerance: number }) {\n this._map = map;\n this._el = map.getCanvasContainer();\n this._minTouches = 1;\n this._clickTolerance = options.clickTolerance || 1;\n this.reset();\n bindAll(['_addTouchPanBlocker', '_showTouchPanBlockerAlert'], this);\n }\n\n reset() {\n this._active = false;\n this._touches = {};\n this._sum = new Point(0, 0);\n }\n\n touchstart(e: TouchEvent, points: Array, mapTouches: Array): ?HandlerResult {\n return this._calculateTransform(e, points, mapTouches);\n }\n\n touchmove(e: TouchEvent, points: Array, mapTouches: Array): ?HandlerResult {\n if (!this._active || mapTouches.length < this._minTouches) return;\n\n // if cooperative gesture handling is set to true, require two fingers to touch pan\n if (this._map._cooperativeGestures && !this._map.isMoving()) {\n if (mapTouches.length === 1 && !isFullscreen()) {\n this._showTouchPanBlockerAlert();\n return;\n } else if (this._alertContainer.style.visibility !== 'hidden') {\n // immediately hide alert if it is visible when two fingers are used to pan.\n this._alertContainer.style.visibility = 'hidden';\n clearTimeout(this._alertTimer);\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n return this._calculateTransform(e, points, mapTouches);\n }\n\n touchend(e: TouchEvent, points: Array, mapTouches: Array) {\n this._calculateTransform(e, points, mapTouches);\n\n if (this._active && mapTouches.length < this._minTouches) {\n this.reset();\n }\n }\n\n touchcancel() {\n this.reset();\n }\n\n _calculateTransform(e: TouchEvent, points: Array, mapTouches: Array): ?HandlerResult {\n if (mapTouches.length > 0) this._active = true;\n\n const touches = indexTouches(mapTouches, points);\n\n const touchPointSum = new Point(0, 0);\n const touchDeltaSum = new Point(0, 0);\n let touchDeltaCount = 0;\n\n for (const identifier in touches) {\n const point = touches[identifier];\n const prevPoint = this._touches[identifier];\n if (prevPoint) {\n touchPointSum._add(point);\n touchDeltaSum._add(point.sub(prevPoint));\n touchDeltaCount++;\n touches[identifier] = point;\n }\n }\n\n this._touches = touches;\n\n if (touchDeltaCount < this._minTouches || !touchDeltaSum.mag()) return;\n\n const panDelta = touchDeltaSum.div(touchDeltaCount);\n this._sum._add(panDelta);\n if (this._sum.mag() < this._clickTolerance) return;\n\n const around = touchPointSum.div(touchDeltaCount);\n\n return {\n around,\n panDelta\n };\n }\n\n enable() {\n this._enabled = true;\n if (this._map._cooperativeGestures) {\n this._addTouchPanBlocker();\n // override touch-action css property to enable scrolling page over map\n this._el.classList.add('mapboxgl-touch-pan-blocker-override', 'mapboxgl-scrollable-page');\n }\n }\n\n disable() {\n this._enabled = false;\n if (this._map._cooperativeGestures) {\n clearTimeout(this._alertTimer);\n this._alertContainer.remove();\n this._el.classList.remove('mapboxgl-touch-pan-blocker-override', 'mapboxgl-scrollable-page');\n }\n this.reset();\n }\n\n isEnabled(): boolean {\n return !!this._enabled;\n }\n\n isActive(): boolean {\n return !!this._active;\n }\n\n _addTouchPanBlocker() {\n if (this._map && !this._alertContainer) {\n this._alertContainer = DOM.create('div', 'mapboxgl-touch-pan-blocker', this._map._container);\n\n this._alertContainer.textContent = this._map._getUIString('TouchPanBlocker.Message');\n\n // dynamically set the font size of the touch pan blocker alert message\n this._alertContainer.style.fontSize = `${Math.max(10, Math.min(24, Math.floor(this._el.clientWidth * 0.05)))}px`;\n }\n }\n\n _showTouchPanBlockerAlert() {\n this._alertContainer.style.visibility = 'visible';\n this._alertContainer.classList.add('mapboxgl-touch-pan-blocker-show');\n this._alertContainer.setAttribute(\"role\", \"alert\");\n\n clearTimeout(this._alertTimer);\n\n this._alertTimer = setTimeout(() => {\n this._alertContainer.classList.remove('mapboxgl-touch-pan-blocker-show');\n this._alertContainer.setAttribute(\"role\", \"null\");\n }, 500);\n }\n\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport * as DOM from '../../util/dom.js';\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\nimport {isFullscreen} from '../../util/util.js';\n\nclass TwoTouchHandler {\n\n _enabled: boolean;\n _active: boolean;\n _firstTwoTouches: ?[number, number];\n _vector: ?Point;\n _startVector: ?Point;\n _aroundCenter: boolean;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._firstTwoTouches = undefined;\n }\n\n _start(points: [Point, Point]) {} //eslint-disable-line\n _move(points: [Point, Point], pinchAround: ?Point, e: TouchEvent): ?HandlerResult { return {}; } //eslint-disable-line\n\n touchstart(e: TouchEvent, points: Array, mapTouches: Array) {\n //console.log(e.target, e.targetTouches.length ? e.targetTouches[0].target : null);\n //log('touchstart', points, e.target.innerHTML, e.targetTouches.length ? e.targetTouches[0].target.innerHTML: undefined);\n if (this._firstTwoTouches || mapTouches.length < 2) return;\n\n this._firstTwoTouches = [\n mapTouches[0].identifier,\n mapTouches[1].identifier\n ];\n\n // implemented by child classes\n this._start([points[0], points[1]]);\n }\n\n touchmove(e: TouchEvent, points: Array, mapTouches: Array): ?HandlerResult {\n const firstTouches = this._firstTwoTouches;\n if (!firstTouches) return;\n\n e.preventDefault();\n\n const [idA, idB] = firstTouches;\n const a = getTouchById(mapTouches, points, idA);\n const b = getTouchById(mapTouches, points, idB);\n if (!a || !b) return;\n const pinchAround = this._aroundCenter ? null : a.add(b).div(2);\n\n // implemented by child classes\n return this._move([a, b], pinchAround, e);\n\n }\n\n touchend(e: TouchEvent, points: Array, mapTouches: Array) {\n if (!this._firstTwoTouches) return;\n\n const [idA, idB] = this._firstTwoTouches;\n const a = getTouchById(mapTouches, points, idA);\n const b = getTouchById(mapTouches, points, idB);\n if (a && b) return;\n\n if (this._active) DOM.suppressClick();\n\n this.reset();\n }\n\n touchcancel() {\n this.reset();\n }\n\n enable(options: ?{around?: 'center'}) {\n this._enabled = true;\n this._aroundCenter = !!options && options.around === 'center';\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n\nfunction getTouchById(mapTouches: Array, points: Array, identifier: number) {\n for (let i = 0; i < mapTouches.length; i++) {\n if (mapTouches[i].identifier === identifier) return points[i];\n }\n}\n\n/* ZOOM */\n\nconst ZOOM_THRESHOLD = 0.1;\n\nfunction getZoomDelta(distance: number, lastDistance: number) {\n return Math.log(distance / lastDistance) / Math.LN2;\n}\n\nexport class TouchZoomHandler extends TwoTouchHandler {\n\n _distance: number;\n _startDistance: number;\n\n reset() {\n super.reset();\n this._distance = 0;\n this._startDistance = 0;\n }\n\n _start(points: [Point, Point]) {\n this._startDistance = this._distance = points[0].dist(points[1]);\n }\n\n _move(points: [Point, Point], pinchAround: ?Point): ?HandlerResult {\n const lastDistance = this._distance;\n this._distance = points[0].dist(points[1]);\n if (!this._active && Math.abs(getZoomDelta(this._distance, this._startDistance)) < ZOOM_THRESHOLD) return;\n this._active = true;\n return {\n zoomDelta: getZoomDelta(this._distance, lastDistance),\n pinchAround\n };\n }\n}\n\n/* ROTATE */\n\nconst ROTATION_THRESHOLD = 25; // pixels along circumference of touch circle\n\nfunction getBearingDelta(a: Point, b: Point) {\n return a.angleWith(b) * 180 / Math.PI;\n}\n\nexport class TouchRotateHandler extends TwoTouchHandler {\n _minDiameter: number;\n\n reset() {\n super.reset();\n this._minDiameter = 0;\n this._startVector = undefined;\n this._vector = undefined;\n }\n\n _start(points: [Point, Point]) {\n this._startVector = this._vector = points[0].sub(points[1]);\n this._minDiameter = points[0].dist(points[1]);\n }\n\n _move(points: [Point, Point], pinchAround: ?Point): ?HandlerResult {\n const lastVector = this._vector;\n this._vector = points[0].sub(points[1]);\n\n if (!lastVector || (!this._active && this._isBelowThreshold(this._vector))) return;\n this._active = true;\n\n return {\n // $FlowFixMe[incompatible-call] - Flow doesn't infer that this._vectoris not null\n bearingDelta: getBearingDelta(this._vector, lastVector),\n pinchAround\n };\n }\n\n _isBelowThreshold(vector: Point): boolean {\n /*\n * The threshold before a rotation actually happens is configured in\n * pixels alongth circumference of the circle formed by the two fingers.\n * This makes the threshold in degrees larger when the fingers are close\n * together and smaller when the fingers are far apart.\n *\n * Use the smallest diameter from the whole gesture to reduce sensitivity\n * when pinching in and out.\n */\n\n this._minDiameter = Math.min(this._minDiameter, vector.mag());\n const circumference = Math.PI * this._minDiameter;\n const threshold = ROTATION_THRESHOLD / circumference * 360;\n\n const startVector = this._startVector;\n if (!startVector) return false;\n\n const bearingDeltaSinceStart = getBearingDelta(vector, startVector);\n return Math.abs(bearingDeltaSinceStart) < threshold;\n }\n}\n\n/* PITCH */\n\nfunction isVertical(vector: Point) {\n return Math.abs(vector.y) > Math.abs(vector.x);\n}\n\nconst ALLOWED_SINGLE_TOUCH_TIME = 100;\n\n/**\n * The `TouchPitchHandler` allows the user to pitch the map by dragging up and down with two fingers.\n *\n * @see [Example: Set pitch and bearing](https://docs.mapbox.com/mapbox-gl-js/example/set-perspective/)\n*/\nexport class TouchPitchHandler extends TwoTouchHandler {\n\n _valid: boolean | void;\n _firstMove: ?number;\n _lastPoints: ?[Point, Point];\n _map: Map;\n\n constructor(map: Map) {\n super();\n this._map = map;\n }\n\n reset() {\n super.reset();\n this._valid = undefined;\n this._firstMove = undefined;\n this._lastPoints = undefined;\n }\n\n _start(points: [Point, Point]) {\n this._lastPoints = points;\n if (isVertical(points[0].sub(points[1]))) {\n // fingers are more horizontal than vertical\n this._valid = false;\n }\n\n }\n\n _move(points: [Point, Point], center: ?Point, e: TouchEvent): ?HandlerResult {\n const lastPoints = this._lastPoints;\n if (!lastPoints) return;\n const vectorA = points[0].sub(lastPoints[0]);\n const vectorB = points[1].sub(lastPoints[1]);\n\n if (this._map._cooperativeGestures && !isFullscreen() && e.touches.length < 3) return;\n\n this._valid = this.gestureBeginsVertically(vectorA, vectorB, e.timeStamp);\n\n if (!this._valid) return;\n\n this._lastPoints = points;\n this._active = true;\n const yDeltaAverage = (vectorA.y + vectorB.y) / 2;\n const degreesPerPixelMoved = -0.5;\n return {\n pitchDelta: yDeltaAverage * degreesPerPixelMoved\n };\n }\n\n gestureBeginsVertically(vectorA: Point, vectorB: Point, timeStamp: number): void | boolean {\n if (this._valid !== undefined) return this._valid;\n\n const threshold = 2;\n const movedA = vectorA.mag() >= threshold;\n const movedB = vectorB.mag() >= threshold;\n\n // neither finger has moved a meaningful amount, wait\n if (!movedA && !movedB) return;\n\n // One finger has moved and the other has not.\n // If enough time has passed, decide it is not a pitch.\n if (!movedA || !movedB) {\n if (this._firstMove == null) {\n this._firstMove = timeStamp;\n }\n\n if (timeStamp - this._firstMove < ALLOWED_SINGLE_TOUCH_TIME) {\n // still waiting for a movement from the second finger\n return undefined;\n } else {\n return false;\n }\n }\n\n const isSameDirection = vectorA.y > 0 === vectorB.y > 0;\n return isVertical(vectorA) && isVertical(vectorB) && isSameDirection;\n }\n}\n","// @flow\n\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nconst defaultOptions = {\n panStep: 100,\n bearingStep: 15,\n pitchStep: 10\n};\n\n/**\n * The `KeyboardHandler` allows the user to zoom, rotate, and pan the map using\n * the following keyboard shortcuts:\n *\n * - `=` / `+`: Increase the zoom level by 1.\n * - `Shift-=` / `Shift-+`: Increase the zoom level by 2.\n * - `-`: Decrease the zoom level by 1.\n * - `Shift--`: Decrease the zoom level by 2.\n * - Arrow keys: Pan by 100 pixels.\n * - `Shift+⇢`: Increase the rotation by 15 degrees.\n * - `Shift+⇠`: Decrease the rotation by 15 degrees.\n * - `Shift+⇡`: Increase the pitch by 10 degrees.\n * - `Shift+⇣`: Decrease the pitch by 10 degrees.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Navigate the map with game-like controls](https://docs.mapbox.com/mapbox-gl-js/example/game-controls/)\n * @see [Example: Display map navigation controls](https://docs.mapbox.com/mapbox-gl-js/example/navigation/)\n */\nclass KeyboardHandler {\n _enabled: boolean;\n _active: boolean;\n _panStep: number;\n _bearingStep: number;\n _pitchStep: number;\n _rotationDisabled: boolean;\n\n /**\n * @private\n */\n constructor() {\n const stepOptions = defaultOptions;\n this._panStep = stepOptions.panStep;\n this._bearingStep = stepOptions.bearingStep;\n this._pitchStep = stepOptions.pitchStep;\n this._rotationDisabled = false;\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n }\n\n keydown(e: KeyboardEvent): ?HandlerResult {\n if (e.altKey || e.ctrlKey || e.metaKey) return;\n\n let zoomDir = 0;\n let bearingDir = 0;\n let pitchDir = 0;\n let xDir = 0;\n let yDir = 0;\n\n switch (e.keyCode) {\n case 61:\n case 107:\n case 171:\n case 187:\n zoomDir = 1;\n break;\n\n case 189:\n case 109:\n case 173:\n zoomDir = -1;\n break;\n\n case 37:\n if (e.shiftKey) {\n bearingDir = -1;\n } else {\n e.preventDefault();\n xDir = -1;\n }\n break;\n\n case 39:\n if (e.shiftKey) {\n bearingDir = 1;\n } else {\n e.preventDefault();\n xDir = 1;\n }\n break;\n\n case 38:\n if (e.shiftKey) {\n pitchDir = 1;\n } else {\n e.preventDefault();\n yDir = -1;\n }\n break;\n\n case 40:\n if (e.shiftKey) {\n pitchDir = -1;\n } else {\n e.preventDefault();\n yDir = 1;\n }\n break;\n\n default:\n return;\n }\n\n if (this._rotationDisabled) {\n bearingDir = 0;\n pitchDir = 0;\n }\n\n return {\n cameraAnimation: (map: Map) => {\n const zoom = map.getZoom();\n\n map.easeTo({\n duration: 300,\n easeId: 'keyboardHandler',\n easing: easeOut,\n zoom: zoomDir ? Math.round(zoom) + zoomDir * (e.shiftKey ? 2 : 1) : zoom,\n bearing: map.getBearing() + bearingDir * this._bearingStep,\n pitch: map.getPitch() + pitchDir * this._pitchStep,\n offset: [-xDir * this._panStep, -yDir * this._panStep],\n center: map.getCenter()\n }, {originalEvent: e});\n }\n };\n }\n\n /**\n * Enables the \"keyboard rotate and zoom\" interaction.\n *\n * @example\n * map.keyboard.enable();\n */\n enable() {\n this._enabled = true;\n }\n\n /**\n * Disables the \"keyboard rotate and zoom\" interaction.\n *\n * @example\n * map.keyboard.disable();\n */\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n /**\n * Returns a Boolean indicating whether the \"keyboard rotate and zoom\"\n * interaction is enabled.\n *\n * @returns {boolean} `true` if the \"keyboard rotate and zoom\"\n * interaction is enabled.\n * @example\n * const isKeyboardEnabled = map.keyboard.isEnabled();\n */\n isEnabled(): boolean {\n return this._enabled;\n }\n\n /**\n * Returns true if the handler is enabled and has detected the start of a\n * zoom/rotate gesture.\n *\n * @returns {boolean} `true` if the handler is enabled and has detected the\n * start of a zoom/rotate gesture.\n * @example\n * const isKeyboardActive = map.keyboard.isActive();\n */\n isActive(): boolean {\n return this._active;\n }\n\n /**\n * Disables the \"keyboard pan/rotate\" interaction, leaving the\n * \"keyboard zoom\" interaction enabled.\n *\n * @example\n * map.keyboard.disableRotation();\n */\n disableRotation() {\n this._rotationDisabled = true;\n }\n\n /**\n * Enables the \"keyboard pan/rotate\" interaction.\n *\n * @example\n * map.keyboard.enable();\n * map.keyboard.enableRotation();\n */\n enableRotation() {\n this._rotationDisabled = false;\n }\n}\n\nfunction easeOut(t: number) {\n return t * (2 - t);\n}\n\nexport default KeyboardHandler;\n","// @flow\n\nimport assert from 'assert';\nimport * as DOM from '../../util/dom.js';\n\nimport {ease as _ease, bindAll, bezier, isFullscreen} from '../../util/util.js';\nimport browser from '../../util/browser.js';\nimport window from '../../util/window.js';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type Map from '../map.js';\nimport type HandlerManager, {HandlerResult} from '../handler_manager.js';\nimport MercatorCoordinate from '../../geo/mercator_coordinate.js';\n\n// deltaY value for mouse scroll wheel identification\nconst wheelZoomDelta = 4.000244140625;\n\n// These magic numbers control the rate of zoom. Trackpad events fire at a greater\n// frequency than mouse scroll wheel, so reduce the zoom rate per wheel tick\nconst defaultZoomRate = 1 / 100;\nconst wheelZoomRate = 1 / 450;\n\n// upper bound on how much we scale the map in any single render frame; this\n// is used to limit zoom rate in the case of very fast scrolling\nconst maxScalePerFrame = 2;\n\n/**\n * The `ScrollZoomHandler` allows the user to zoom the map by scrolling.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Disable scroll zoom](https://docs.mapbox.com/mapbox-gl-js/example/disable-scroll-zoom/)\n */\nclass ScrollZoomHandler {\n _map: Map;\n _el: HTMLElement;\n _enabled: boolean;\n _active: boolean;\n _zooming: boolean;\n _aroundCenter: boolean;\n _aroundPoint: Point;\n _aroundCoord: MercatorCoordinate;\n _type: 'wheel' | 'trackpad' | null;\n _lastValue: number;\n _timeout: ?TimeoutID; // used for delayed-handling of a single wheel movement\n _finishTimeout: ?TimeoutID; // used to delay final '{move,zoom}end' events\n\n _lastWheelEvent: any;\n _lastWheelEventTime: number;\n\n _startZoom: ?number;\n _targetZoom: ?number;\n _delta: number;\n _easing: ?((number) => number);\n _prevEase: ?{start: number, duration: number, easing: (_: number) => number};\n\n _frameId: ?boolean;\n _handler: HandlerManager;\n\n _defaultZoomRate: number;\n _wheelZoomRate: number;\n\n _alertContainer: HTMLElement; // used to display the scroll zoom blocker alert\n _alertTimer: TimeoutID;\n\n /**\n * @private\n */\n constructor(map: Map, handler: HandlerManager) {\n this._map = map;\n this._el = map.getCanvasContainer();\n this._handler = handler;\n\n this._delta = 0;\n\n this._defaultZoomRate = defaultZoomRate;\n this._wheelZoomRate = wheelZoomRate;\n\n bindAll(['_onTimeout', '_addScrollZoomBlocker', '_showBlockerAlert'], this);\n\n }\n\n /**\n * Sets the zoom rate of a trackpad.\n *\n * @param {number} [zoomRate=1/100] The rate used to scale trackpad movement to a zoom value.\n * @example\n * // Speed up trackpad zoom\n * map.scrollZoom.setZoomRate(1 / 25);\n */\n setZoomRate(zoomRate: number) {\n this._defaultZoomRate = zoomRate;\n }\n\n /**\n * Sets the zoom rate of a mouse wheel.\n *\n * @param {number} [wheelZoomRate=1/450] The rate used to scale mouse wheel movement to a zoom value.\n * @example\n * // Slow down zoom of mouse wheel\n * map.scrollZoom.setWheelZoomRate(1 / 600);\n */\n setWheelZoomRate(wheelZoomRate: number) {\n this._wheelZoomRate = wheelZoomRate;\n }\n\n /**\n * Returns a Boolean indicating whether the \"scroll to zoom\" interaction is enabled.\n *\n * @returns {boolean} `true` if the \"scroll to zoom\" interaction is enabled.\n * @example\n * const isScrollZoomEnabled = map.scrollZoom.isEnabled();\n */\n isEnabled(): boolean {\n return !!this._enabled;\n }\n\n /*\n * Active state is turned on and off with every scroll wheel event and is set back to false before the map\n * render is called, so _active is not a good candidate for determining if a scroll zoom animation is in\n * progress.\n */\n isActive(): boolean {\n return this._active || this._finishTimeout !== undefined;\n }\n\n isZooming(): boolean {\n return !!this._zooming;\n }\n\n /**\n * Enables the \"scroll to zoom\" interaction.\n *\n * @param {Object} [options] Options object.\n * @param {string} [options.around] If \"center\" is passed, map will zoom around center of map.\n *\n * @example\n * map.scrollZoom.enable();\n * @example\n * map.scrollZoom.enable({around: 'center'});\n */\n enable(options: ?{around?: 'center'}) {\n if (this.isEnabled()) return;\n this._enabled = true;\n this._aroundCenter = !!options && options.around === 'center';\n if (this._map._cooperativeGestures) this._addScrollZoomBlocker();\n }\n\n /**\n * Disables the \"scroll to zoom\" interaction.\n *\n * @example\n * map.scrollZoom.disable();\n */\n disable() {\n if (!this.isEnabled()) return;\n this._enabled = false;\n if (this._map._cooperativeGestures) {\n clearTimeout(this._alertTimer);\n this._alertContainer.remove();\n }\n }\n\n wheel(e: WheelEvent) {\n if (!this.isEnabled()) return;\n\n if (this._map._cooperativeGestures) {\n if (!e.ctrlKey && !e.metaKey && !this.isZooming() && !isFullscreen()) {\n this._showBlockerAlert();\n return;\n } else if (this._alertContainer.style.visibility !== 'hidden') {\n // immediately hide alert if it is visible when ctrl or ⌘ is pressed while scroll zooming.\n this._alertContainer.style.visibility = 'hidden';\n clearTimeout(this._alertTimer);\n }\n }\n\n // Remove `any` cast when https://github.com/facebook/flow/issues/4879 is fixed.\n let value = e.deltaMode === (window.WheelEvent: any).DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY;\n const now = browser.now(),\n timeDelta = now - (this._lastWheelEventTime || 0);\n\n this._lastWheelEventTime = now;\n\n if (value !== 0 && (value % wheelZoomDelta) === 0) {\n // This one is definitely a mouse wheel event.\n this._type = 'wheel';\n\n } else if (value !== 0 && Math.abs(value) < 4) {\n // This one is definitely a trackpad event because it is so small.\n this._type = 'trackpad';\n\n } else if (timeDelta > 400) {\n // This is likely a new scroll action.\n this._type = null;\n this._lastValue = value;\n\n // Start a timeout in case this was a singular event, and delay it by up to 40ms.\n // $FlowFixMe[method-unbinding]\n this._timeout = setTimeout(this._onTimeout, 40, e);\n\n } else if (!this._type) {\n // This is a repeating event, but we don't know the type of event just yet.\n // If the delta per time is small, we assume it's a fast trackpad; otherwise we switch into wheel mode.\n this._type = (Math.abs(timeDelta * value) < 200) ? 'trackpad' : 'wheel';\n\n // Make sure our delayed event isn't fired again, because we accumulate\n // the previous event (which was less than 40ms ago) into this event.\n if (this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = null;\n value += this._lastValue;\n }\n }\n\n // Slow down zoom if shift key is held for more precise zooming\n if (e.shiftKey && value) value = value / 4;\n\n // Only fire the callback if we actually know what type of scrolling device the user uses.\n if (this._type) {\n this._lastWheelEvent = e;\n this._delta -= value;\n if (!this._active) {\n this._start(e);\n }\n }\n\n e.preventDefault();\n }\n\n _onTimeout(initialEvent: WheelEvent) {\n this._type = 'wheel';\n this._delta -= this._lastValue;\n if (!this._active) {\n this._start(initialEvent);\n }\n }\n\n _start(e: WheelEvent) {\n if (!this._delta) return;\n\n if (this._frameId) {\n this._frameId = null;\n }\n\n this._active = true;\n if (!this.isZooming()) {\n this._zooming = true;\n }\n\n if (this._finishTimeout) {\n clearTimeout(this._finishTimeout);\n delete this._finishTimeout;\n }\n\n const pos = DOM.mousePos(this._el, e);\n this._aroundPoint = this._aroundCenter ? this._map.transform.centerPoint : pos;\n this._aroundCoord = this._map.transform.pointCoordinate3D(this._aroundPoint);\n this._targetZoom = undefined;\n\n if (!this._frameId) {\n this._frameId = true;\n this._handler._triggerRenderFrame();\n }\n }\n\n renderFrame(): ?HandlerResult {\n if (!this._frameId) return;\n this._frameId = null;\n\n if (!this.isActive()) return;\n\n const tr = this._map.transform;\n\n // If projection wraps and center crosses the antimeridian, reset previous mouse scroll easing settings to resolve https://github.com/mapbox/mapbox-gl-js/issues/11910\n if (this._type === 'wheel' && tr.projection.wrap && (tr._center.lng >= 180 || tr._center.lng <= -180)) {\n this._prevEase = null;\n this._easing = null;\n this._lastWheelEvent = null;\n this._lastWheelEventTime = 0;\n }\n\n const startingZoom = () => {\n return (tr._terrainEnabled() && this._aroundCoord) ? tr.computeZoomRelativeTo(this._aroundCoord) : tr.zoom;\n };\n\n // if we've had scroll events since the last render frame, consume the\n // accumulated delta, and update the target zoom level accordingly\n if (this._delta !== 0) {\n // For trackpad events and single mouse wheel ticks, use the default zoom rate\n const zoomRate = (this._type === 'wheel' && Math.abs(this._delta) > wheelZoomDelta) ? this._wheelZoomRate : this._defaultZoomRate;\n // Scale by sigmoid of scroll wheel delta.\n let scale = maxScalePerFrame / (1 + Math.exp(-Math.abs(this._delta * zoomRate)));\n\n if (this._delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n const startZoom = startingZoom();\n const startScale = Math.pow(2.0, startZoom);\n\n const fromScale = typeof this._targetZoom === 'number' ? tr.zoomScale(this._targetZoom) : startScale;\n this._targetZoom = Math.min(tr.maxZoom, Math.max(tr.minZoom, tr.scaleZoom(fromScale * scale)));\n\n // if this is a mouse wheel, refresh the starting zoom and easing\n // function we're using to smooth out the zooming between wheel\n // events\n if (this._type === 'wheel') {\n this._startZoom = startZoom;\n this._easing = this._smoothOutEasing(200);\n }\n\n this._delta = 0;\n }\n const targetZoom = typeof this._targetZoom === 'number' ?\n this._targetZoom : startingZoom();\n const startZoom = this._startZoom;\n const easing = this._easing;\n\n let finished = false;\n let zoom;\n if (this._type === 'wheel' && startZoom && easing) {\n assert(easing && typeof startZoom === 'number');\n\n const t = Math.min((browser.now() - this._lastWheelEventTime) / 200, 1);\n const k = easing(t);\n zoom = interpolate(startZoom, targetZoom, k);\n if (t < 1) {\n if (!this._frameId) {\n this._frameId = true;\n }\n } else {\n finished = true;\n }\n } else {\n zoom = targetZoom;\n finished = true;\n }\n\n this._active = true;\n\n if (finished) {\n this._active = false;\n this._finishTimeout = setTimeout(() => {\n this._zooming = false;\n this._handler._triggerRenderFrame();\n delete this._targetZoom;\n delete this._finishTimeout;\n }, 200);\n }\n\n return {\n noInertia: true,\n needsRenderFrame: !finished,\n zoomDelta: zoom - startingZoom(),\n around: this._aroundPoint,\n aroundCoord: this._aroundCoord,\n originalEvent: this._lastWheelEvent\n };\n }\n\n _smoothOutEasing(duration: number): (number) => number {\n let easing = _ease;\n\n if (this._prevEase) {\n const ease = this._prevEase,\n t = (browser.now() - ease.start) / ease.duration,\n speed = ease.easing(t + 0.01) - ease.easing(t),\n\n // Quick hack to make new bezier that is continuous with last\n x = 0.27 / Math.sqrt(speed * speed + 0.0001) * 0.01,\n y = Math.sqrt(0.27 * 0.27 - x * x);\n\n easing = bezier(x, y, 0.25, 1);\n }\n\n this._prevEase = {\n start: browser.now(),\n duration,\n easing\n };\n\n return easing;\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n }\n\n _addScrollZoomBlocker() {\n if (this._map && !this._alertContainer) {\n this._alertContainer = DOM.create('div', 'mapboxgl-scroll-zoom-blocker', this._map._container);\n\n if (/(Mac|iPad)/i.test(window.navigator.userAgent)) {\n this._alertContainer.textContent = this._map._getUIString('ScrollZoomBlocker.CmdMessage');\n } else {\n this._alertContainer.textContent = this._map._getUIString('ScrollZoomBlocker.CtrlMessage');\n }\n\n // dynamically set the font size of the scroll zoom blocker alert message\n this._alertContainer.style.fontSize = `${Math.max(10, Math.min(24, Math.floor(this._el.clientWidth * 0.05)))}px`;\n }\n }\n\n _showBlockerAlert() {\n this._alertContainer.style.visibility = 'visible';\n this._alertContainer.classList.add('mapboxgl-scroll-zoom-blocker-show');\n this._alertContainer.setAttribute(\"role\", \"alert\");\n\n clearTimeout(this._alertTimer);\n\n this._alertTimer = setTimeout(() => {\n this._alertContainer.classList.remove('mapboxgl-scroll-zoom-blocker-show');\n this._alertContainer.setAttribute(\"role\", \"null\");\n }, 200);\n }\n\n}\n\nexport default ScrollZoomHandler;\n","// @flow\n\nimport type ClickZoomHandler from '../click_zoom.js';\nimport type TapZoomHandler from './../tap_zoom.js';\n\n/**\n * The `DoubleClickZoomHandler` allows the user to zoom the map at a point by\n * double clicking or double tapping.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n */\nexport default class DoubleClickZoomHandler {\n\n _clickZoom: ClickZoomHandler;\n _tapZoom: TapZoomHandler;\n\n /**\n * @private\n */\n constructor(clickZoom: ClickZoomHandler, TapZoom: TapZoomHandler) {\n this._clickZoom = clickZoom;\n this._tapZoom = TapZoom;\n }\n\n /**\n * Enables the \"double click to zoom\" interaction.\n *\n * @example\n * map.doubleClickZoom.enable();\n */\n enable() {\n this._clickZoom.enable();\n this._tapZoom.enable();\n }\n\n /**\n * Disables the \"double click to zoom\" interaction.\n *\n * @example\n * map.doubleClickZoom.disable();\n */\n disable() {\n this._clickZoom.disable();\n this._tapZoom.disable();\n }\n\n /**\n * Returns a Boolean indicating whether the \"double click to zoom\" interaction is enabled.\n *\n * @returns {boolean} Returns `true` if the \"double click to zoom\" interaction is enabled.\n * @example\n * const isDoubleClickZoomEnabled = map.doubleClickZoom.isEnabled();\n */\n isEnabled(): boolean {\n return this._clickZoom.isEnabled() && this._tapZoom.isEnabled();\n }\n\n /**\n * Returns a Boolean indicating whether the \"double click to zoom\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"double click to zoom\" interaction is active.\n * @example\n * const isDoubleClickZoomActive = map.doubleClickZoom.isActive();\n */\n isActive(): boolean {\n return this._clickZoom.isActive() || this._tapZoom.isActive();\n }\n}\n","// @flow\n\nimport type Point from '@mapbox/point-geometry';\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class ClickZoomHandler {\n\n _enabled: boolean;\n _active: boolean;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n }\n\n blur() {\n this.reset();\n }\n\n dblclick(e: MouseEvent, point: Point): HandlerResult {\n e.preventDefault();\n return {\n cameraAnimation: (map: Map) => {\n map.easeTo({\n duration: 300,\n zoom: map.getZoom() + (e.shiftKey ? -1 : 1),\n around: map.unproject(point)\n }, {originalEvent: e});\n }\n };\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n","// @flow\n\nimport {TapRecognizer, MAX_TAP_INTERVAL} from './tap_recognizer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class TapDragZoomHandler {\n\n _enabled: boolean;\n _active: boolean;\n _swipePoint: ?Point;\n _swipeTouch: number;\n _tapTime: number;\n _tap: TapRecognizer;\n\n constructor() {\n\n this._tap = new TapRecognizer({\n numTouches: 1,\n numTaps: 1\n });\n\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._swipePoint = undefined;\n this._swipeTouch = 0;\n this._tapTime = 0;\n this._tap.reset();\n }\n\n touchstart(e: TouchEvent, points: Array, mapTouches: Array) {\n if (this._swipePoint) return;\n\n if (this._tapTime && e.timeStamp - this._tapTime > MAX_TAP_INTERVAL) {\n this.reset();\n }\n\n if (!this._tapTime) {\n this._tap.touchstart(e, points, mapTouches);\n } else if (mapTouches.length > 0) {\n this._swipePoint = points[0];\n this._swipeTouch = mapTouches[0].identifier;\n }\n\n }\n\n touchmove(e: TouchEvent, points: Array, mapTouches: Array): ?HandlerResult {\n if (!this._tapTime) {\n this._tap.touchmove(e, points, mapTouches);\n } else if (this._swipePoint) {\n if (mapTouches[0].identifier !== this._swipeTouch) {\n return;\n }\n\n const newSwipePoint = points[0];\n const dist = newSwipePoint.y - this._swipePoint.y;\n this._swipePoint = newSwipePoint;\n\n e.preventDefault();\n this._active = true;\n\n return {\n zoomDelta: dist / 128\n };\n }\n }\n\n touchend(e: TouchEvent, points: Array, mapTouches: Array) {\n if (!this._tapTime) {\n const point = this._tap.touchend(e, points, mapTouches);\n if (point) {\n this._tapTime = e.timeStamp;\n }\n } else if (this._swipePoint) {\n if (mapTouches.length === 0) {\n this.reset();\n }\n }\n }\n\n touchcancel() {\n this.reset();\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n","// @flow\n\nimport type {MousePanHandler} from '../mouse.js';\nimport type TouchPanHandler from './../touch_pan.js';\n\nexport type DragPanOptions = {\n linearity?: number;\n easing?: (t: number) => number;\n deceleration?: number;\n maxSpeed?: number;\n};\n\n/**\n * The `DragPanHandler` allows the user to pan the map by clicking and dragging\n * the cursor.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\nexport default class DragPanHandler {\n\n _el: HTMLElement;\n _mousePan: MousePanHandler;\n _touchPan: TouchPanHandler;\n _inertiaOptions: DragPanOptions\n\n /**\n * @private\n */\n constructor(el: HTMLElement, mousePan: MousePanHandler, touchPan: TouchPanHandler) {\n this._el = el;\n this._mousePan = mousePan;\n this._touchPan = touchPan;\n }\n\n /**\n * Enables the \"drag to pan\" interaction and accepts options to control the behavior of the panning inertia.\n *\n * @param {Object} [options] Options object.\n * @param {number} [options.linearity=0] Factor used to scale the drag velocity.\n * @param {Function} [options.easing] Optional easing function applied to {@link Map#panTo} when applying the drag. Defaults to bezier function using [@mapbox/unitbezier](https://github.com/mapbox/unitbezier).\n * @param {number} [options.maxSpeed=1400] The maximum value of the drag velocity.\n * @param {number} [options.deceleration=2500] The rate at which the speed reduces after the pan ends.\n *\n * @example\n * map.dragPan.enable();\n * @example\n * map.dragPan.enable({\n * linearity: 0.3,\n * easing: t => t,\n * maxSpeed: 1400,\n * deceleration: 2500\n * });\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\n enable(options?: DragPanOptions) {\n this._inertiaOptions = options || {};\n this._mousePan.enable();\n this._touchPan.enable();\n this._el.classList.add('mapboxgl-touch-drag-pan');\n }\n\n /**\n * Disables the \"drag to pan\" interaction.\n *\n * @example\n * map.dragPan.disable();\n */\n disable() {\n this._mousePan.disable();\n this._touchPan.disable();\n this._el.classList.remove('mapboxgl-touch-drag-pan');\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to pan\" interaction is enabled.\n *\n * @returns {boolean} Returns `true` if the \"drag to pan\" interaction is enabled.\n * @example\n * const isDragPanEnabled = map.dragPan.isEnabled();\n */\n isEnabled(): boolean {\n return this._mousePan.isEnabled() && this._touchPan.isEnabled();\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to pan\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"drag to pan\" interaction is active.\n * @example\n * const isDragPanActive = map.dragPan.isActive();\n */\n isActive(): boolean {\n return this._mousePan.isActive() || this._touchPan.isActive();\n }\n}\n","// @flow\n\nimport type {MouseRotateHandler, MousePitchHandler} from '../mouse.js';\n\n/**\n * The `DragRotateHandler` allows the user to rotate the map by clicking and\n * dragging the cursor while holding the right mouse button or `ctrl` key.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Disable map rotation](https://docs.mapbox.com/mapbox-gl-js/example/disable-rotation/)\n */\nexport default class DragRotateHandler {\n\n _mouseRotate: MouseRotateHandler;\n _mousePitch: MousePitchHandler;\n _pitchWithRotate: boolean;\n\n /**\n * @param {Object} [options]\n * @param {number} [options.bearingSnap] The threshold, measured in degrees, that determines when the map's\n * bearing will snap to north.\n * @param {bool} [options.pitchWithRotate=true] Control the map pitch in addition to the bearing\n * @private\n */\n constructor(options: {pitchWithRotate: boolean}, mouseRotate: MouseRotateHandler, mousePitch: MousePitchHandler) {\n this._pitchWithRotate = options.pitchWithRotate;\n this._mouseRotate = mouseRotate;\n this._mousePitch = mousePitch;\n }\n\n /**\n * Enables the \"drag to rotate\" interaction.\n *\n * @example\n * map.dragRotate.enable();\n */\n enable() {\n this._mouseRotate.enable();\n if (this._pitchWithRotate) this._mousePitch.enable();\n }\n\n /**\n * Disables the \"drag to rotate\" interaction.\n *\n * @example\n * map.dragRotate.disable();\n */\n disable() {\n this._mouseRotate.disable();\n this._mousePitch.disable();\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to rotate\" interaction is enabled.\n *\n * @returns {boolean} `true` if the \"drag to rotate\" interaction is enabled.\n * @example\n * const isDragRotateEnabled = map.dragRotate.isEnabled();\n */\n isEnabled(): boolean {\n return this._mouseRotate.isEnabled() && (!this._pitchWithRotate || this._mousePitch.isEnabled());\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to rotate\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"drag to rotate\" interaction is active.\n * @example\n * const isDragRotateActive = map.dragRotate.isActive();\n */\n isActive(): boolean {\n return this._mouseRotate.isActive() || this._mousePitch.isActive();\n }\n}\n","// @flow\n\nimport type {TouchZoomHandler, TouchRotateHandler} from '../touch_zoom_rotate.js';\nimport type TapDragZoomHandler from '../tap_drag_zoom.js';\n\n/**\n * The `TouchZoomRotateHandler` allows the user to zoom and rotate the map by\n * pinching on a touchscreen.\n *\n * They can zoom with one finger by double tapping and dragging. On the second tap,\n * hold the finger down and drag up or down to zoom in or out.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n */\nexport default class TouchZoomRotateHandler {\n\n _el: HTMLElement;\n _touchZoom: TouchZoomHandler;\n _touchRotate: TouchRotateHandler;\n _tapDragZoom: TapDragZoomHandler;\n _rotationDisabled: boolean;\n _enabled: boolean;\n\n /**\n * @private\n */\n constructor(el: HTMLElement, touchZoom: TouchZoomHandler, touchRotate: TouchRotateHandler, tapDragZoom: TapDragZoomHandler) {\n this._el = el;\n this._touchZoom = touchZoom;\n this._touchRotate = touchRotate;\n this._tapDragZoom = tapDragZoom;\n this._rotationDisabled = false;\n this._enabled = true;\n }\n\n /**\n * Enables the \"pinch to rotate and zoom\" interaction.\n *\n * @param {Object} [options] Options object.\n * @param {string} [options.around] If \"center\" is passed, map will zoom around the center.\n *\n * @example\n * map.touchZoomRotate.enable();\n * @example\n * map.touchZoomRotate.enable({around: 'center'});\n */\n enable(options: ?{around?: 'center'}) {\n this._touchZoom.enable(options);\n if (!this._rotationDisabled) this._touchRotate.enable(options);\n this._tapDragZoom.enable();\n this._el.classList.add('mapboxgl-touch-zoom-rotate');\n }\n\n /**\n * Disables the \"pinch to rotate and zoom\" interaction.\n *\n * @example\n * map.touchZoomRotate.disable();\n */\n disable() {\n this._touchZoom.disable();\n this._touchRotate.disable();\n this._tapDragZoom.disable();\n this._el.classList.remove('mapboxgl-touch-zoom-rotate');\n }\n\n /**\n * Returns a Boolean indicating whether the \"pinch to rotate and zoom\" interaction is enabled.\n *\n * @returns {boolean} `true` if the \"pinch to rotate and zoom\" interaction is enabled.\n * @example\n * const isTouchZoomRotateEnabled = map.touchZoomRotate.isEnabled();\n */\n isEnabled(): boolean {\n return this._touchZoom.isEnabled() &&\n (this._rotationDisabled || this._touchRotate.isEnabled()) &&\n this._tapDragZoom.isEnabled();\n }\n\n /**\n * Returns true if the handler is enabled and has detected the start of a zoom/rotate gesture.\n *\n * @returns {boolean} `true` if enabled and a zoom/rotate gesture was detected.\n * @example\n * const isTouchZoomRotateActive = map.touchZoomRotate.isActive();\n */\n isActive(): boolean {\n return this._touchZoom.isActive() || this._touchRotate.isActive() || this._tapDragZoom.isActive();\n }\n\n /**\n * Disables the \"pinch to rotate\" interaction, leaving the \"pinch to zoom\"\n * interaction enabled.\n *\n * @example\n * map.touchZoomRotate.disableRotation();\n */\n disableRotation() {\n this._rotationDisabled = true;\n this._touchRotate.disable();\n }\n\n /**\n * Enables the \"pinch to rotate\" interaction.\n *\n * @example\n * map.touchZoomRotate.enable();\n * map.touchZoomRotate.enableRotation();\n */\n enableRotation() {\n this._rotationDisabled = false;\n if (this._touchZoom.isEnabled()) this._touchRotate.enable();\n }\n}\n","// @flow\n\nimport {Event} from '../util/evented.js';\nimport * as DOM from '../util/dom.js';\nimport type Map from './map.js';\nimport HandlerInertia from './handler_inertia.js';\nimport {MapEventHandler, BlockableMapEventHandler} from './handler/map_event.js';\nimport BoxZoomHandler from './handler/box_zoom.js';\nimport TapZoomHandler from './handler/tap_zoom.js';\nimport {MousePanHandler, MouseRotateHandler, MousePitchHandler} from './handler/mouse.js';\nimport TouchPanHandler from './handler/touch_pan.js';\nimport {TouchZoomHandler, TouchRotateHandler, TouchPitchHandler} from './handler/touch_zoom_rotate.js';\nimport KeyboardHandler from './handler/keyboard.js';\nimport ScrollZoomHandler from './handler/scroll_zoom.js';\nimport DoubleClickZoomHandler from './handler/shim/dblclick_zoom.js';\nimport ClickZoomHandler from './handler/click_zoom.js';\nimport TapDragZoomHandler from './handler/tap_drag_zoom.js';\nimport DragPanHandler from './handler/shim/drag_pan.js';\nimport DragRotateHandler from './handler/shim/drag_rotate.js';\nimport TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate.js';\nimport {bindAll, extend} from '../util/util.js';\nimport window from '../util/window.js';\nimport Point from '@mapbox/point-geometry';\nimport assert from 'assert';\nimport {vec3} from 'gl-matrix';\nimport MercatorCoordinate, {latFromMercatorY, mercatorScale} from '../geo/mercator_coordinate.js';\n\nimport type {Vec3} from 'gl-matrix';\n\nexport type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent;\n\nconst isMoving = (p: { [string]: any }) => p.zoom || p.drag || p.pitch || p.rotate;\n\nclass RenderFrameEvent extends Event {\n type: 'renderFrame';\n timeStamp: number;\n}\n\nclass TrackingEllipsoid {\n constants: Array;\n radius: number;\n\n constructor() {\n // a, b, c in the equation x²/a² + y²/b² + z²/c² = 1\n this.constants = [1, 1, 0.01];\n this.radius = 0;\n }\n\n setup(center: Vec3, pointOnSurface: Vec3) {\n const centerToSurface = vec3.sub([], pointOnSurface, center);\n if (centerToSurface[2] < 0) {\n this.radius = vec3.length(vec3.div([], centerToSurface, this.constants));\n } else {\n // The point on surface is above the center. This can happen for example when the camera is\n // below the clicked point (like a mountain) Use slightly shorter radius for less aggressive movement\n this.radius = vec3.length([centerToSurface[0], centerToSurface[1], 0]);\n }\n }\n\n // Cast a ray from the center of the ellipsoid and the intersection point.\n projectRay(dir: Vec3): Vec3 {\n // Perform the intersection test against a unit sphere\n vec3.div(dir, dir, this.constants);\n vec3.normalize(dir, dir);\n vec3.mul(dir, dir, this.constants);\n\n const intersection = vec3.scale([], dir, this.radius);\n\n if (intersection[2] > 0) {\n // The intersection point is above horizon so special handling is required.\n // Otherwise direction of the movement would be inverted due to the ellipsoid shape\n const h = vec3.scale([], [0, 0, 1], vec3.dot(intersection, [0, 0, 1]));\n const r = vec3.scale([], vec3.normalize([], [intersection[0], intersection[1], 0]), this.radius);\n const p = vec3.add([], intersection, vec3.scale([], vec3.sub([], vec3.add([], r, h), intersection), 2));\n\n intersection[0] = p[0];\n intersection[1] = p[1];\n }\n\n return intersection;\n }\n}\n\n// Handlers interpret dom events and return camera changes that should be\n// applied to the map (`HandlerResult`s). The camera changes are all deltas.\n// The handler itself should have no knowledge of the map's current state.\n// This makes it easier to merge multiple results and keeps handlers simpler.\n// For example, if there is a mousedown and mousemove, the mousePan handler\n// would return a `panDelta` on the mousemove.\nexport interface Handler {\n enable(): void;\n disable(): void;\n isEnabled(): boolean;\n isActive(): boolean;\n\n // `reset` can be called by the manager at any time and must reset everything to it's original state\n reset(): void;\n\n // Handlers can optionally implement these methods.\n // They are called with dom events whenever those dom evens are received.\n +touchstart?: (e: TouchEvent, points: Array, mapTouches: Array) => ?HandlerResult;\n +touchmove?: (e: TouchEvent, points: Array, mapTouches: Array) => ?HandlerResult;\n +touchend?: (e: TouchEvent, points: Array, mapTouches: Array) => ?HandlerResult;\n +touchcancel?: (e: TouchEvent, points: Array, mapTouches: Array) => ?HandlerResult;\n +mousedown?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +mousemove?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +mouseup?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +dblclick?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +wheel?: (e: WheelEvent, point: Point) => ?HandlerResult;\n +keydown?: (e: KeyboardEvent) => ?HandlerResult;\n +keyup?: (e: KeyboardEvent) => ?HandlerResult;\n\n // `renderFrame` is the only non-dom event. It is called during render\n // frames and can be used to smooth camera changes (see scroll handler).\n +renderFrame?: () => ?HandlerResult;\n}\n\n// All handler methods that are called with events can optionally return a `HandlerResult`.\nexport type HandlerResult = {\n panDelta?: Point,\n zoomDelta?: number,\n bearingDelta?: number,\n pitchDelta?: number,\n // the point to not move when changing the camera\n around?: Point | null,\n // same as above, except for pinch actions, which are given higher priority\n pinchAround?: Point | null,\n // the point to not move when changing the camera in mercator coordinates\n aroundCoord?: MercatorCoordinate | null,\n // A method that can fire a one-off easing by directly changing the map's camera.\n cameraAnimation?: (map: Map) => any;\n\n // The last three properties are needed by only one handler: scrollzoom.\n // The DOM event to be used as the `originalEvent` on any camera change events.\n originalEvent?: any,\n // Makes the manager trigger a frame, allowing the handler to return multiple results over time (see scrollzoom).\n needsRenderFrame?: boolean,\n // The camera changes won't get recorded for inertial zooming.\n noInertia?: boolean\n};\n\nfunction hasChange(result: HandlerResult) {\n return (result.panDelta && result.panDelta.mag()) || result.zoomDelta || result.bearingDelta || result.pitchDelta;\n}\n\nclass HandlerManager {\n _map: Map;\n _el: HTMLElement;\n _handlers: Array<{ handlerName: string, handler: Handler, allowed: any }>;\n _eventsInProgress: Object;\n _frameId: ?number;\n _inertia: HandlerInertia;\n _bearingSnap: number;\n _handlersById: { [string]: Handler };\n _updatingCamera: boolean;\n _changes: Array<[HandlerResult, Object, any]>;\n _previousActiveHandlers: { [string]: Handler };\n _listeners: Array<[HTMLElement, string, void | EventListenerOptionsOrUseCapture]>;\n _trackingEllipsoid: TrackingEllipsoid;\n _dragOrigin: ?Vec3;\n\n constructor(map: Map, options: { interactive: boolean, pitchWithRotate: boolean, clickTolerance: number, bearingSnap: number}) {\n this._map = map;\n this._el = this._map.getCanvasContainer();\n this._handlers = [];\n this._handlersById = {};\n this._changes = [];\n\n this._inertia = new HandlerInertia(map);\n this._bearingSnap = options.bearingSnap;\n this._previousActiveHandlers = {};\n this._trackingEllipsoid = new TrackingEllipsoid();\n this._dragOrigin = null;\n\n // Track whether map is currently moving, to compute start/move/end events\n this._eventsInProgress = {};\n\n this._addDefaultHandlers(options);\n\n bindAll(['handleEvent', 'handleWindowEvent'], this);\n\n const el = this._el;\n\n this._listeners = [\n // This needs to be `passive: true` so that a double tap fires two\n // pairs of touchstart/end events in iOS Safari 13. If this is set to\n // `passive: false` then the second pair of events is only fired if\n // preventDefault() is called on the first touchstart. Calling preventDefault()\n // undesirably prevents click events.\n [el, 'touchstart', {passive: true}],\n // This needs to be `passive: false` so that scrolls and pinches can be\n // prevented in browsers that don't support `touch-actions: none`, for example iOS Safari 12.\n [el, 'touchmove', {passive: false}],\n [el, 'touchend', undefined],\n [el, 'touchcancel', undefined],\n\n [el, 'mousedown', undefined],\n [el, 'mousemove', undefined],\n [el, 'mouseup', undefined],\n\n // Bind window-level event listeners for move and up/end events. In the absence of\n // the pointer capture API, which is not supported by all necessary platforms,\n // window-level event listeners give us the best shot at capturing events that\n // fall outside the map canvas element. Use `{capture: true}` for the move event\n // to prevent map move events from being fired during a drag.\n [window.document, 'mousemove', {capture: true}],\n [window.document, 'mouseup', undefined],\n\n [el, 'mouseover', undefined],\n [el, 'mouseout', undefined],\n [el, 'dblclick', undefined],\n [el, 'click', undefined],\n\n [el, 'keydown', {capture: false}],\n [el, 'keyup', undefined],\n\n [el, 'wheel', {passive: false}],\n [el, 'contextmenu', undefined],\n\n [window, 'blur', undefined]\n ];\n\n for (const [target, type, listenerOptions] of this._listeners) {\n // $FlowFixMe[method-unbinding]\n const listener = target === window.document ? this.handleWindowEvent : this.handleEvent;\n target.addEventListener((type: any), (listener: any), listenerOptions);\n }\n }\n\n destroy() {\n for (const [target, type, listenerOptions] of this._listeners) {\n // $FlowFixMe[method-unbinding]\n const listener = target === window.document ? this.handleWindowEvent : this.handleEvent;\n target.removeEventListener((type: any), (listener: any), listenerOptions);\n }\n }\n\n _addDefaultHandlers(options: { interactive: boolean, pitchWithRotate: boolean, clickTolerance: number }) {\n const map = this._map;\n const el = map.getCanvasContainer();\n // $FlowFixMe[method-unbinding]\n this._add('mapEvent', new MapEventHandler(map, options));\n\n const boxZoom = map.boxZoom = new BoxZoomHandler(map, options);\n // $FlowFixMe[method-unbinding]\n this._add('boxZoom', boxZoom);\n\n const tapZoom = new TapZoomHandler();\n const clickZoom = new ClickZoomHandler();\n map.doubleClickZoom = new DoubleClickZoomHandler(clickZoom, tapZoom);\n // $FlowFixMe[method-unbinding]\n this._add('tapZoom', tapZoom);\n // $FlowFixMe[method-unbinding]\n this._add('clickZoom', clickZoom);\n\n const tapDragZoom = new TapDragZoomHandler();\n // $FlowFixMe[method-unbinding]\n this._add('tapDragZoom', tapDragZoom);\n\n const touchPitch = map.touchPitch = new TouchPitchHandler(map);\n // $FlowFixMe[method-unbinding]\n this._add('touchPitch', touchPitch);\n\n const mouseRotate = new MouseRotateHandler(options);\n const mousePitch = new MousePitchHandler(options);\n map.dragRotate = new DragRotateHandler(options, mouseRotate, mousePitch);\n // $FlowFixMe[method-unbinding]\n this._add('mouseRotate', mouseRotate, ['mousePitch']);\n // $FlowFixMe[method-unbinding]\n this._add('mousePitch', mousePitch, ['mouseRotate']);\n\n const mousePan = new MousePanHandler(options);\n const touchPan = new TouchPanHandler(map, options);\n map.dragPan = new DragPanHandler(el, mousePan, touchPan);\n // $FlowFixMe[method-unbinding]\n this._add('mousePan', mousePan);\n // $FlowFixMe[method-unbinding]\n this._add('touchPan', touchPan, ['touchZoom', 'touchRotate']);\n\n const touchRotate = new TouchRotateHandler();\n const touchZoom = new TouchZoomHandler();\n map.touchZoomRotate = new TouchZoomRotateHandler(el, touchZoom, touchRotate, tapDragZoom);\n // $FlowFixMe[method-unbinding]\n this._add('touchRotate', touchRotate, ['touchPan', 'touchZoom']);\n // $FlowFixMe[method-unbinding]\n this._add('touchZoom', touchZoom, ['touchPan', 'touchRotate']);\n\n // $FlowFixMe[method-unbinding]\n this._add('blockableMapEvent', new BlockableMapEventHandler(map));\n\n const scrollZoom = map.scrollZoom = new ScrollZoomHandler(map, this);\n // $FlowFixMe[method-unbinding]\n this._add('scrollZoom', scrollZoom, ['mousePan']);\n\n const keyboard = map.keyboard = new KeyboardHandler();\n // $FlowFixMe[method-unbinding]\n this._add('keyboard', keyboard);\n\n for (const name of ['boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard']) {\n if (options.interactive && (options: any)[name]) {\n (map: any)[name].enable((options: any)[name]);\n }\n }\n }\n\n _add(handlerName: string, handler: Handler, allowed?: Array) {\n this._handlers.push({handlerName, handler, allowed});\n this._handlersById[handlerName] = handler;\n }\n\n stop(allowEndAnimation: boolean) {\n // do nothing if this method was triggered by a gesture update\n if (this._updatingCamera) return;\n\n for (const {handler} of this._handlers) {\n handler.reset();\n }\n this._inertia.clear();\n this._fireEvents({}, {}, allowEndAnimation);\n this._changes = [];\n }\n\n isActive(): boolean {\n for (const {handler} of this._handlers) {\n if (handler.isActive()) return true;\n }\n return false;\n }\n\n isZooming(): boolean {\n return !!this._eventsInProgress.zoom || this._map.scrollZoom.isZooming();\n }\n\n isRotating(): boolean {\n return !!this._eventsInProgress.rotate;\n }\n\n isMoving(): boolean {\n return !!isMoving(this._eventsInProgress) || this.isZooming();\n }\n\n _isDragging(): boolean {\n return !!this._eventsInProgress.drag;\n }\n\n _blockedByActive(activeHandlers: { [string]: Handler }, allowed: Array, myName: string): boolean {\n for (const name in activeHandlers) {\n if (name === myName) continue;\n if (!allowed || allowed.indexOf(name) < 0) {\n return true;\n }\n }\n return false;\n }\n\n handleWindowEvent(e: InputEvent) {\n this.handleEvent(e, `${e.type}Window`);\n }\n\n _getMapTouches(touches: TouchList): TouchList {\n const mapTouches = [];\n for (const t of touches) {\n const target = ((t.target: any): Node);\n if (this._el.contains(target)) {\n mapTouches.push(t);\n }\n }\n return ((mapTouches: any): TouchList);\n }\n\n handleEvent(e: InputEvent | RenderFrameEvent, eventName?: string) {\n\n this._updatingCamera = true;\n assert(e.timeStamp !== undefined);\n\n const isRenderFrame = e.type === 'renderFrame';\n const inputEvent = isRenderFrame ? undefined : ((e: any): InputEvent);\n\n /*\n * We don't call e.preventDefault() for any events by default.\n * Handlers are responsible for calling it where necessary.\n */\n\n const mergedHandlerResult: HandlerResult = {needsRenderFrame: false};\n const eventsInProgress = {};\n const activeHandlers = {};\n\n const mapTouches = e.touches ? this._getMapTouches(((e: any): TouchEvent).touches) : undefined;\n const points = mapTouches ? DOM.touchPos(this._el, mapTouches) :\n isRenderFrame ? undefined : // renderFrame event doesn't have any points\n DOM.mousePos(this._el, ((e: any): MouseEvent));\n\n for (const {handlerName, handler, allowed} of this._handlers) {\n if (!handler.isEnabled()) continue;\n\n let data: ?HandlerResult;\n if (this._blockedByActive(activeHandlers, allowed, handlerName)) {\n handler.reset();\n\n } else {\n if ((handler: any)[eventName || e.type]) {\n data = (handler: any)[eventName || e.type](e, points, mapTouches);\n this.mergeHandlerResult(mergedHandlerResult, eventsInProgress, data, handlerName, inputEvent);\n if (data && data.needsRenderFrame) {\n this._triggerRenderFrame();\n }\n }\n }\n\n if (data || handler.isActive()) {\n activeHandlers[handlerName] = handler;\n }\n }\n\n const deactivatedHandlers = {};\n for (const name in this._previousActiveHandlers) {\n if (!activeHandlers[name]) {\n deactivatedHandlers[name] = inputEvent;\n }\n }\n this._previousActiveHandlers = activeHandlers;\n\n if (Object.keys(deactivatedHandlers).length || hasChange(mergedHandlerResult)) {\n this._changes.push([mergedHandlerResult, eventsInProgress, deactivatedHandlers]);\n this._triggerRenderFrame();\n }\n\n if (Object.keys(activeHandlers).length || hasChange(mergedHandlerResult)) {\n this._map._stop(true);\n }\n\n this._updatingCamera = false;\n\n const {cameraAnimation} = mergedHandlerResult;\n if (cameraAnimation) {\n this._inertia.clear();\n this._fireEvents({}, {}, true);\n this._changes = [];\n cameraAnimation(this._map);\n }\n }\n\n mergeHandlerResult(mergedHandlerResult: HandlerResult, eventsInProgress: Object, handlerResult: HandlerResult, name: string, e?: InputEvent) {\n if (!handlerResult) return;\n\n extend(mergedHandlerResult, handlerResult);\n\n const eventData = {handlerName: name, originalEvent: handlerResult.originalEvent || e};\n\n // track which handler changed which camera property\n if (handlerResult.zoomDelta !== undefined) {\n eventsInProgress.zoom = eventData;\n }\n if (handlerResult.panDelta !== undefined) {\n eventsInProgress.drag = eventData;\n }\n if (handlerResult.pitchDelta !== undefined) {\n eventsInProgress.pitch = eventData;\n }\n if (handlerResult.bearingDelta !== undefined) {\n eventsInProgress.rotate = eventData;\n }\n }\n\n _applyChanges() {\n const combined = {};\n const combinedEventsInProgress = {};\n const combinedDeactivatedHandlers = {};\n\n for (const [change, eventsInProgress, deactivatedHandlers] of this._changes) {\n\n if (change.panDelta) combined.panDelta = (combined.panDelta || new Point(0, 0))._add(change.panDelta);\n if (change.zoomDelta) combined.zoomDelta = (combined.zoomDelta || 0) + change.zoomDelta;\n if (change.bearingDelta) combined.bearingDelta = (combined.bearingDelta || 0) + change.bearingDelta;\n if (change.pitchDelta) combined.pitchDelta = (combined.pitchDelta || 0) + change.pitchDelta;\n if (change.around !== undefined) combined.around = change.around;\n if (change.aroundCoord !== undefined) combined.aroundCoord = change.aroundCoord;\n if (change.pinchAround !== undefined) combined.pinchAround = change.pinchAround;\n if (change.noInertia) combined.noInertia = change.noInertia;\n\n extend(combinedEventsInProgress, eventsInProgress);\n extend(combinedDeactivatedHandlers, deactivatedHandlers);\n }\n\n this._updateMapTransform(combined, combinedEventsInProgress, combinedDeactivatedHandlers);\n this._changes = [];\n }\n\n _updateMapTransform(combinedResult: any, combinedEventsInProgress: Object, deactivatedHandlers: Object) {\n\n const map = this._map;\n const tr = map.transform;\n\n const eventStarted = (type: string) => {\n const newEvent = combinedEventsInProgress[type];\n return newEvent && !this._eventsInProgress[type];\n };\n\n const eventEnded = (type: string) => {\n const event = this._eventsInProgress[type];\n return event && !this._handlersById[event.handlerName].isActive();\n };\n\n const toVec3 = (p: MercatorCoordinate): Vec3 => [p.x, p.y, p.z];\n\n if (eventEnded(\"drag\") && !hasChange(combinedResult)) {\n const preZoom = tr.zoom;\n tr.cameraElevationReference = \"sea\";\n tr.recenterOnTerrain();\n tr.cameraElevationReference = \"ground\";\n // Map zoom might change during the pan operation due to terrain elevation.\n if (preZoom !== tr.zoom) this._map._update(true);\n }\n\n // Catches double click and double tap zooms when camera is constrained over terrain\n if (tr._isCameraConstrained) map._stop(true);\n\n if (!hasChange(combinedResult)) {\n this._fireEvents(combinedEventsInProgress, deactivatedHandlers, true);\n return;\n }\n\n let {panDelta, zoomDelta, bearingDelta, pitchDelta, around, aroundCoord, pinchAround} = combinedResult;\n\n if (tr._isCameraConstrained) {\n // Catches wheel zoom events when camera is constrained over terrain\n if (zoomDelta > 0) zoomDelta = 0;\n tr._isCameraConstrained = false;\n }\n\n if (pinchAround !== undefined) {\n around = pinchAround;\n }\n\n if ((zoomDelta || eventStarted(\"drag\")) && around) {\n this._dragOrigin = toVec3(tr.pointCoordinate3D(around));\n // Construct the tracking ellipsoid every time user changes the zoom or drag origin.\n // Direction of the ray will define size of the shape and hence defining the available range of movement\n this._trackingEllipsoid.setup(tr._camera.position, this._dragOrigin);\n }\n\n // All movement of the camera is done relative to the sea level\n tr.cameraElevationReference = \"sea\";\n\n // stop any ongoing camera animations (easeTo, flyTo)\n map._stop(true);\n\n around = around || map.transform.centerPoint;\n if (bearingDelta) tr.bearing += bearingDelta;\n if (pitchDelta) tr.pitch += pitchDelta;\n tr._updateCameraState();\n\n // Compute Mercator 3D camera offset based on screenspace panDelta\n const panVec = [0, 0, 0];\n if (panDelta) {\n if (tr.projection.name === 'mercator') {\n assert(this._dragOrigin, '_dragOrigin should have been setup with a previous dragstart');\n const startPoint = this._trackingEllipsoid.projectRay(tr.screenPointToMercatorRay(around).dir);\n const endPoint = this._trackingEllipsoid.projectRay(tr.screenPointToMercatorRay(around.sub(panDelta)).dir);\n panVec[0] = endPoint[0] - startPoint[0];\n panVec[1] = endPoint[1] - startPoint[1];\n\n } else {\n const startPoint = tr.pointCoordinate(around);\n if (tr.projection.name === 'globe') {\n // Compute pan vector directly in pixel coordinates for the globe.\n // Rotate the globe a bit faster when dragging near poles to compensate\n // different pixel-per-meter ratios (ie. pixel-to-physical-rotation is lower)\n panDelta = panDelta.rotate(-tr.angle);\n const scale = tr._pixelsPerMercatorPixel / tr.worldSize;\n panVec[0] = -panDelta.x * mercatorScale(latFromMercatorY(startPoint.y)) * scale;\n panVec[1] = -panDelta.y * mercatorScale(tr.center.lat) * scale;\n\n } else {\n const endPoint = tr.pointCoordinate(around.sub(panDelta));\n\n if (startPoint && endPoint) {\n panVec[0] = endPoint.x - startPoint.x;\n panVec[1] = endPoint.y - startPoint.y;\n }\n }\n }\n }\n\n const originalZoom = tr.zoom;\n // Compute Mercator 3D camera offset based on screenspace requested ZoomDelta\n const zoomVec = [0, 0, 0];\n if (zoomDelta) {\n // Zoom value has to be computed relative to a secondary map plane that is created from the terrain position below the cursor.\n // This way the zoom interpolation can be kept linear and independent of the (possible) terrain elevation\n const pickedPosition: Vec3 = aroundCoord ? toVec3(aroundCoord) : toVec3(tr.pointCoordinate3D(around));\n\n const aroundRay = {dir: vec3.normalize([], vec3.sub([], pickedPosition, tr._camera.position))};\n if (aroundRay.dir[2] < 0) {\n // Special handling is required if the ray created from the cursor is heading up.\n // This scenario is possible if user is trying to zoom towards a feature like a hill or a mountain.\n // Convert zoomDelta to a movement vector as if the camera would be orbiting around the picked point\n const movement = tr.zoomDeltaToMovement(pickedPosition, zoomDelta);\n vec3.scale(zoomVec, aroundRay.dir, movement);\n }\n }\n\n // Mutate camera state via CameraAPI\n const translation = vec3.add(panVec, panVec, zoomVec);\n tr._translateCameraConstrained(translation);\n\n if (zoomDelta && Math.abs(tr.zoom - originalZoom) > 0.0001) {\n tr.recenterOnTerrain();\n }\n\n tr.cameraElevationReference = \"ground\";\n\n this._map._update();\n if (!combinedResult.noInertia) this._inertia.record(combinedResult);\n this._fireEvents(combinedEventsInProgress, deactivatedHandlers, true);\n }\n\n _fireEvents(newEventsInProgress: { [string]: Object }, deactivatedHandlers: Object, allowEndAnimation: boolean) {\n\n const wasMoving = isMoving(this._eventsInProgress);\n const nowMoving = isMoving(newEventsInProgress);\n\n const startEvents = {};\n\n for (const eventName in newEventsInProgress) {\n const {originalEvent} = newEventsInProgress[eventName];\n if (!this._eventsInProgress[eventName]) {\n startEvents[`${eventName}start`] = originalEvent;\n }\n this._eventsInProgress[eventName] = newEventsInProgress[eventName];\n }\n\n // fire start events only after this._eventsInProgress has been updated\n if (!wasMoving && nowMoving) {\n this._fireEvent('movestart', nowMoving.originalEvent);\n }\n\n for (const name in startEvents) {\n this._fireEvent(name, startEvents[name]);\n }\n\n if (nowMoving) {\n this._fireEvent('move', nowMoving.originalEvent);\n }\n\n for (const eventName in newEventsInProgress) {\n const {originalEvent} = newEventsInProgress[eventName];\n this._fireEvent(eventName, originalEvent);\n }\n\n const endEvents = {};\n\n let originalEndEvent;\n for (const eventName in this._eventsInProgress) {\n const {handlerName, originalEvent} = this._eventsInProgress[eventName];\n if (!this._handlersById[handlerName].isActive()) {\n delete this._eventsInProgress[eventName];\n originalEndEvent = deactivatedHandlers[handlerName] || originalEvent;\n endEvents[`${eventName}end`] = originalEndEvent;\n }\n }\n\n for (const name in endEvents) {\n this._fireEvent(name, endEvents[name]);\n }\n\n const stillMoving = isMoving(this._eventsInProgress);\n if (allowEndAnimation && (wasMoving || nowMoving) && !stillMoving) {\n this._updatingCamera = true;\n const inertialEase = this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions);\n\n const shouldSnapToNorth = (bearing: number) => bearing !== 0 && -this._bearingSnap < bearing && bearing < this._bearingSnap;\n\n if (inertialEase) {\n if (shouldSnapToNorth(inertialEase.bearing || this._map.getBearing())) {\n inertialEase.bearing = 0;\n }\n this._map.easeTo(inertialEase, {originalEvent: originalEndEvent});\n } else {\n this._map.fire(new Event('moveend', {originalEvent: originalEndEvent}));\n if (shouldSnapToNorth(this._map.getBearing())) {\n this._map.resetNorth();\n }\n }\n this._updatingCamera = false;\n }\n\n }\n\n _fireEvent(type: string, e: any) {\n this._map.fire(new Event(type, e ? {originalEvent: e} : {}));\n }\n\n _requestFrame(): number {\n this._map.triggerRepaint();\n return this._map._renderTaskQueue.add(timeStamp => {\n this._frameId = undefined;\n this.handleEvent(new RenderFrameEvent('renderFrame', {timeStamp}));\n this._applyChanges();\n });\n }\n\n _triggerRenderFrame() {\n if (this._frameId === undefined) {\n this._frameId = this._requestFrame();\n }\n }\n}\n\nexport default HandlerManager;\n","// @flow\n\nimport {\n bindAll,\n extend,\n warnOnce,\n clamp,\n wrap,\n ease as defaultEasing,\n pick,\n degToRad\n} from '../util/util.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport browser from '../util/browser.js';\nimport LngLat, {earthRadius} from '../geo/lng_lat.js';\nimport LngLatBounds from '../geo/lng_lat_bounds.js';\nimport Point from '@mapbox/point-geometry';\nimport {Event, Evented} from '../util/evented.js';\nimport assert from 'assert';\nimport {Debug} from '../util/debug.js';\nimport MercatorCoordinate, {\n mercatorZfromAltitude,\n mercatorXfromLng,\n mercatorYfromLat,\n latFromMercatorY,\n lngFromMercatorX\n} from '../geo/mercator_coordinate.js';\nimport {\n latLngToECEF,\n ecefToLatLng,\n GLOBE_RADIUS,\n GLOBE_ZOOM_THRESHOLD_MAX,\n GLOBE_ZOOM_THRESHOLD_MIN\n} from '../geo/projection/globe_util.js';\nimport {vec3, vec4, mat4} from 'gl-matrix';\nimport type {FreeCameraOptions} from './free_camera.js';\nimport type Transform from '../geo/transform.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {LngLatBoundsLike} from '../geo/lng_lat_bounds.js';\nimport type {ElevationQueryOptions} from '../terrain/elevation.js';\nimport type {TaskID} from '../util/task_queue.js';\nimport type {Callback} from '../types/callback.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport {Aabb} from '../util/primitives.js';\nimport type {PaddingOptions} from '../geo/edge_insets.js';\nimport type {MapEvent} from './events.js';\n\n/**\n * A helper type: converts all Object type values to non-maybe types.\n */\ntype Required = $ObjMap(v: V) => $NonMaybeType>;\n\n/**\n * Options common to {@link Map#jumpTo}, {@link Map#easeTo}, and {@link Map#flyTo}, controlling the desired location,\n * zoom, bearing, and pitch of the camera. All properties are optional, and when a property is omitted, the current\n * camera value for that property will remain unchanged.\n *\n * @typedef {Object} CameraOptions\n * @property {LngLatLike} center The location to place at the screen center.\n * @property {number} zoom The desired zoom level.\n * @property {number} bearing The desired bearing in degrees. The bearing is the compass direction that\n * is \"up\". For example, `bearing: 90` orients the map so that east is up.\n * @property {number} pitch The desired pitch in degrees. The pitch is the angle towards the horizon\n * measured in degrees with a range between 0 and 85 degrees. For example, pitch: 0 provides the appearance\n * of looking straight down at the map, while pitch: 60 tilts the user's perspective towards the horizon.\n * Increasing the pitch value is often used to display 3D objects.\n * @property {LngLatLike} around The location serving as the origin for a change in `zoom`, `pitch` and/or `bearing`.\n * This location will remain at the same screen position following the transform.\n * This is useful for drawing attention to a location that is not in the screen center.\n * `center` is ignored if `around` is included.\n * @property {PaddingOptions} padding Dimensions in pixels applied on each side of the viewport for shifting the vanishing point.\n * @example\n * // set the map's initial perspective with CameraOptions\n * const map = new mapboxgl.Map({\n * container: 'map',\n * style: 'mapbox://styles/mapbox/streets-v11',\n * center: [-73.5804, 45.53483],\n * pitch: 60,\n * bearing: -60,\n * zoom: 10\n * });\n * @see [Example: Set pitch and bearing](https://docs.mapbox.com/mapbox-gl-js/example/set-perspective/)\n * @see [Example: Jump to a series of locations](https://docs.mapbox.com/mapbox-gl-js/example/jump-to/)\n * @see [Example: Fly to a location](https://docs.mapbox.com/mapbox-gl-js/example/flyto/)\n * @see [Example: Display buildings in 3D](https://docs.mapbox.com/mapbox-gl-js/example/3d-buildings/)\n */\nexport type CameraOptions = {\n center?: LngLatLike,\n zoom?: number,\n bearing?: number,\n pitch?: number,\n around?: LngLatLike,\n padding?: PaddingOptions\n};\n\nexport type FullCameraOptions = {\n maxZoom: number,\n offset: PointLike,\n padding: Required\n} & CameraOptions\n\n/**\n * Options common to map movement methods that involve animation, such as {@link Map#panBy} and\n * {@link Map#easeTo}, controlling the duration and easing function of the animation. All properties\n * are optional.\n *\n * @typedef {Object} AnimationOptions\n * @property {number} duration The animation's duration, measured in milliseconds.\n * @property {Function} easing A function taking a time in the range 0..1 and returning a number where 0 is\n * the initial state and 1 is the final state.\n * @property {PointLike} offset The target center's offset relative to real map container center at the end of animation.\n * @property {boolean} animate If `false`, no animation will occur.\n * @property {boolean} essential If `true`, then the animation is considered essential and will not be affected by\n * [`prefers-reduced-motion`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion).\n * @property {boolean} preloadOnly If `true`, it will trigger tiles loading across the animation path, but no animation will occur.\n * @property {number} curve The zooming \"curve\" that will occur along the\n * flight path. A high value maximizes zooming for an exaggerated animation, while a low\n * value minimizes zooming for an effect closer to {@link Map#easeTo}. 1.42 is the average\n * value selected by participants in the user study discussed in\n * [van Wijk (2003)](https://www.win.tue.nl/~vanwijk/zoompan.pdf). A value of\n * `Math.pow(6, 0.25)` would be equivalent to the root mean squared average velocity. A\n * value of 1 would produce a circular motion. If `minZoom` is specified, this option will be ignored.\n * @property {number} minZoom The zero-based zoom level at the peak of the flight path. If\n * this option is specified, `curve` will be ignored.\n * @property {number} speed The average speed of the animation defined in relation to\n * `curve`. A speed of 1.2 means that the map appears to move along the flight path\n * by 1.2 times `curve` screenfuls every second. A _screenful_ is the map's visible span.\n * It does not correspond to a fixed physical distance, but varies by zoom level.\n * @property {number} screenSpeed The average speed of the animation measured in screenfuls\n * per second, assuming a linear timing curve. If `speed` is specified, this option is ignored.\n * @property {number} maxDuration The animation's maximum duration, measured in milliseconds.\n * If duration exceeds maximum duration, it resets to 0.\n * @see [Example: Slowly fly to a location](https://docs.mapbox.com/mapbox-gl-js/example/flyto-options/)\n * @see [Example: Customize camera animations](https://docs.mapbox.com/mapbox-gl-js/example/camera-animation/)\n * @see [Example: Navigate the map with game-like controls](https://docs.mapbox.com/mapbox-gl-js/example/game-controls/)\n*/\nexport type AnimationOptions = {\n duration?: number,\n easing?: (_: number) => number,\n offset?: PointLike,\n animate?: boolean,\n essential?: boolean,\n preloadOnly?: boolean\n};\n\nexport type EasingOptions = CameraOptions & AnimationOptions;\n\nexport type ElevationBoxRaycast = {\n minLngLat: LngLat,\n maxLngLat: LngLat,\n minAltitude: number,\n maxAltitude: number\n};\n\nconst freeCameraNotSupportedWarning = 'map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.';\n\n/**\n * Options for setting padding on calls to methods such as {@link Map#fitBounds}, {@link Map#fitScreenCoordinates}, and {@link Map#setPadding}. Adjust these options to set the amount of padding in pixels added to the edges of the canvas. Set a uniform padding on all edges or individual values for each edge. All properties of this object must be\n * non-negative integers.\n *\n * @typedef {Object} PaddingOptions\n * @property {number} top Padding in pixels from the top of the map canvas.\n * @property {number} bottom Padding in pixels from the bottom of the map canvas.\n * @property {number} left Padding in pixels from the left of the map canvas.\n * @property {number} right Padding in pixels from the right of the map canvas.\n *\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * map.fitBounds(bbox, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n *\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * map.fitBounds(bbox, {\n * padding: 20\n * });\n * @see [Example: Fit to the bounds of a LineString](https://docs.mapbox.com/mapbox-gl-js/example/zoomto-linestring/)\n * @see [Example: Fit a map to a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/fitbounds/)\n */\n\nclass Camera extends Evented {\n transform: Transform;\n _moving: boolean;\n _zooming: boolean;\n _rotating: boolean;\n _pitching: boolean;\n _padding: boolean;\n\n _bearingSnap: number;\n _easeStart: number;\n _easeOptions: {duration: number, easing: (_: number) => number};\n _easeId: string | void;\n _respectPrefersReducedMotion: boolean;\n\n _onEaseFrame: ?(_: number) => Transform | void;\n _onEaseEnd: ?(easeId?: string) => void;\n _easeFrameId: ?TaskID;\n\n +_requestRenderFrame: (() => void) => TaskID;\n +_cancelRenderFrame: (_: TaskID) => void;\n\n +_preloadTiles: (transform: Transform | Array, callback?: Callback) => any;\n\n constructor(transform: Transform, options: {bearingSnap: number, respectPrefersReducedMotion: ?boolean}) {\n super();\n this._moving = false;\n this._zooming = false;\n this.transform = transform;\n this._bearingSnap = options.bearingSnap;\n this._respectPrefersReducedMotion = options.respectPrefersReducedMotion !== false;\n\n bindAll(['_renderFrameCallback'], this);\n\n //addAssertions(this);\n }\n\n /** @section {Camera}\n * @method\n * @instance\n * @memberof Map */\n\n /**\n * Returns the map's geographical centerpoint.\n *\n * @memberof Map#\n * @returns {LngLat} The map's geographical centerpoint.\n * @example\n * // Return a LngLat object such as {lng: 0, lat: 0}.\n * const center = map.getCenter();\n * // Access longitude and latitude values directly.\n * const {lng, lat} = map.getCenter();\n * @see [Tutorial: Use Mapbox GL JS in a React app](https://docs.mapbox.com/help/tutorials/use-mapbox-gl-js-with-react/#store-the-new-coordinates)\n */\n getCenter(): LngLat { return new LngLat(this.transform.center.lng, this.transform.center.lat); }\n\n /**\n * Sets the map's geographical centerpoint. Equivalent to `jumpTo({center: center})`.\n *\n * @memberof Map#\n * @param {LngLatLike} center The centerpoint to set.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setCenter([-74, 38]);\n */\n setCenter(center: LngLatLike, eventData?: Object): this {\n return this.jumpTo({center}, eventData);\n }\n\n /**\n * Pans the map by the specified offset.\n *\n * @memberof Map#\n * @param {PointLike} offset The `x` and `y` coordinates by which to pan the map.\n * @param {AnimationOptions | null} options An options object describing the destination and animation of the transition. We do not recommend using `options.offset` since this value will override the value of the `offset` parameter.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} `this` Returns itself to allow for method chaining.\n * @example\n * map.panBy([-74, 38]);\n * @example\n * // panBy with an animation of 5 seconds.\n * map.panBy([-74, 38], {duration: 5000});\n * @see [Example: Navigate the map with game-like controls](https://www.mapbox.com/mapbox-gl-js/example/game-controls/)\n */\n panBy(offset: PointLike, options?: AnimationOptions, eventData?: Object): this {\n offset = Point.convert(offset).mult(-1);\n return this.panTo(this.transform.center, extend({offset}, options), eventData);\n }\n\n /**\n * Pans the map to the specified location with an animated transition.\n *\n * @memberof Map#\n * @param {LngLatLike} lnglat The location to pan the map to.\n * @param {AnimationOptions | null} options Options describing the destination and animation of the transition.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.panTo([-74, 38]);\n * @example\n * // Specify that the panTo animation should last 5000 milliseconds.\n * map.panTo([-74, 38], {duration: 5000});\n * @see [Example: Update a feature in realtime](https://docs.mapbox.com/mapbox-gl-js/example/live-update-feature/)\n */\n panTo(lnglat: LngLatLike, options?: AnimationOptions, eventData?: Object): this {\n return this.easeTo(extend({\n center: lnglat\n }, options), eventData);\n }\n\n /**\n * Returns the map's current zoom level.\n *\n * @memberof Map#\n * @returns {number} The map's current zoom level.\n * @example\n * map.getZoom();\n */\n getZoom(): number { return this.transform.zoom; }\n\n /**\n * Sets the map's zoom level. Equivalent to `jumpTo({zoom: zoom})`.\n *\n * @memberof Map#\n * @param {number} zoom The zoom level to set (0-20).\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Zoom to the zoom level 5 without an animated transition\n * map.setZoom(5);\n */\n setZoom(zoom: number, eventData?: Object): this {\n this.jumpTo({zoom}, eventData);\n return this;\n }\n\n /**\n * Zooms the map to the specified zoom level, with an animated transition.\n *\n * @memberof Map#\n * @param {number} zoom The zoom level to transition to.\n * @param {AnimationOptions | null} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Zoom to the zoom level 5 without an animated transition\n * map.zoomTo(5);\n * // Zoom to the zoom level 8 with an animated transition\n * map.zoomTo(8, {\n * duration: 2000,\n * offset: [100, 50]\n * });\n */\n zoomTo(zoom: number, options: ? AnimationOptions, eventData?: Object): this {\n return this.easeTo(extend({\n zoom\n }, options), eventData);\n }\n\n /**\n * Increases the map's zoom level by 1.\n *\n * @memberof Map#\n * @param {AnimationOptions | null} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // zoom the map in one level with a custom animation duration\n * map.zoomIn({duration: 1000});\n */\n zoomIn(options?: AnimationOptions, eventData?: Object): this {\n this.zoomTo(this.getZoom() + 1, options, eventData);\n return this;\n }\n\n /**\n * Decreases the map's zoom level by 1.\n *\n * @memberof Map#\n * @param {AnimationOptions | null} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // zoom the map out one level with a custom animation offset\n * map.zoomOut({offset: [80, 60]});\n */\n zoomOut(options?: AnimationOptions, eventData?: Object): this {\n this.zoomTo(this.getZoom() - 1, options, eventData);\n return this;\n }\n\n /**\n * Returns the map's current bearing. The bearing is the compass direction that is \"up\"; for example, a bearing\n * of 90° orients the map so that east is up.\n *\n * @memberof Map#\n * @returns {number} The map's current bearing.\n * @example\n * const bearing = map.getBearing();\n * @see [Example: Navigate the map with game-like controls](https://www.mapbox.com/mapbox-gl-js/example/game-controls/)\n */\n getBearing(): number {\n return this.transform.bearing;\n }\n\n /**\n * Sets the map's bearing (rotation). The bearing is the compass direction that is \"up\"; for example, a bearing\n * of 90° orients the map so that east is up.\n *\n * Equivalent to `jumpTo({bearing: bearing})`.\n *\n * @memberof Map#\n * @param {number} bearing The desired bearing.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Rotate the map to 90 degrees.\n * map.setBearing(90);\n */\n setBearing(bearing: number, eventData?: Object): this {\n this.jumpTo({bearing}, eventData);\n return this;\n }\n\n /**\n * Returns the current padding applied around the map viewport.\n *\n * @memberof Map#\n * @returns {PaddingOptions} The current padding around the map viewport.\n * @example\n * const padding = map.getPadding();\n */\n getPadding(): PaddingOptions { return this.transform.padding; }\n\n /**\n * Sets the padding in pixels around the viewport.\n *\n * Equivalent to `jumpTo({padding: padding})`.\n *\n * @memberof Map#\n * @param {PaddingOptions} padding The desired padding. Format: {left: number, right: number, top: number, bottom: number}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Sets a left padding of 300px, and a top padding of 50px\n * map.setPadding({left: 300, top: 50});\n */\n setPadding(padding: PaddingOptions, eventData?: Object): this {\n this.jumpTo({padding}, eventData);\n return this;\n }\n\n /**\n * Rotates the map to the specified bearing, with an animated transition. The bearing is the compass direction\n * that is \\\"up\\\"; for example, a bearing of 90° orients the map so that east is up.\n *\n * @memberof Map#\n * @param {number} bearing The desired bearing.\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.rotateTo(30);\n * @example\n * // rotateTo with an animation of 2 seconds.\n * map.rotateTo(30, {duration: 2000});\n */\n rotateTo(bearing: number, options?: EasingOptions, eventData?: Object): this {\n return this.easeTo(extend({\n bearing\n }, options), eventData);\n }\n\n /**\n * Rotates the map so that north is up (0° bearing), with an animated transition.\n *\n * @memberof Map#\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // resetNorth with an animation of 2 seconds.\n * map.resetNorth({duration: 2000});\n */\n resetNorth(options?: EasingOptions, eventData?: Object): this {\n this.rotateTo(0, extend({duration: 1000}, options), eventData);\n return this;\n }\n\n /**\n * Rotates and pitches the map so that north is up (0° bearing) and pitch is 0°, with an animated transition.\n *\n * @memberof Map#\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // resetNorthPitch with an animation of 2 seconds.\n * map.resetNorthPitch({duration: 2000});\n */\n resetNorthPitch(options?: EasingOptions, eventData?: Object): this {\n this.easeTo(extend({\n bearing: 0,\n pitch: 0,\n duration: 1000\n }, options), eventData);\n return this;\n }\n\n /**\n * Snaps the map so that north is up (0° bearing), if the current bearing is\n * close enough to it (within the `bearingSnap` threshold).\n *\n * @memberof Map#\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // snapToNorth with an animation of 2 seconds.\n * map.snapToNorth({duration: 2000});\n */\n snapToNorth(options?: EasingOptions, eventData?: Object): this {\n if (Math.abs(this.getBearing()) < this._bearingSnap) {\n return this.resetNorth(options, eventData);\n }\n return this;\n }\n\n /**\n * Returns the map's current [pitch](https://docs.mapbox.com/help/glossary/camera/) (tilt).\n *\n * @memberof Map#\n * @returns {number} The map's current pitch, measured in degrees away from the plane of the screen.\n * @example\n * const pitch = map.getPitch();\n */\n getPitch(): number { return this.transform.pitch; }\n\n /**\n * Sets the map's [pitch](https://docs.mapbox.com/help/glossary/camera/) (tilt). Equivalent to `jumpTo({pitch: pitch})`.\n *\n * @memberof Map#\n * @param {number} pitch The pitch to set, measured in degrees away from the plane of the screen (0-60).\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:pitchstart\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // setPitch with an animation of 2 seconds.\n * map.setPitch(80, {duration: 2000});\n */\n setPitch(pitch: number, eventData?: Object): this {\n this.jumpTo({pitch}, eventData);\n return this;\n }\n\n /**\n * Returns a {@link CameraOptions} object for the highest zoom level\n * up to and including `Map#getMaxZoom()` that fits the bounds\n * in the viewport at the specified bearing.\n *\n * @memberof Map#\n * @param {LngLatBoundsLike} bounds Calculate the center for these bounds in the viewport and use\n * the highest zoom level up to and including `Map#getMaxZoom()` that fits\n * in the viewport. LngLatBounds represent a box that is always axis-aligned with bearing 0.\n * @param {CameraOptions | null} options Options object.\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {number} [options.bearing=0] Desired map bearing at end of animation, in degrees.\n * @param {number} [options.pitch=0] Desired map pitch at end of animation, in degrees.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the camera would transition to the specified bounds.\n * @returns {CameraOptions | void} If map is able to fit to provided bounds, returns `CameraOptions` with\n * `center`, `zoom`, and `bearing`. If map is unable to fit, method will warn and return undefined.\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * const newCameraTransform = map.cameraForBounds(bbox, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n */\n cameraForBounds(bounds: LngLatBoundsLike, options?: CameraOptions): ?EasingOptions {\n bounds = LngLatBounds.convert(bounds);\n const bearing = (options && options.bearing) || 0;\n const pitch = (options && options.pitch) || 0;\n const lnglat0 = bounds.getNorthWest();\n const lnglat1 = bounds.getSouthEast();\n return this._cameraForBounds(this.transform, lnglat0, lnglat1, bearing, pitch, options);\n }\n\n _extendCameraOptions(options?: CameraOptions): FullCameraOptions {\n const defaultPadding = {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0\n };\n options = extend({\n padding: defaultPadding,\n offset: [0, 0],\n maxZoom: this.transform.maxZoom\n }, options);\n\n if (typeof options.padding === 'number') {\n const p = options.padding;\n options.padding = {\n top: p,\n bottom: p,\n right: p,\n left: p\n };\n }\n options.padding = extend(defaultPadding, options.padding);\n return options;\n }\n\n _minimumAABBFrustumDistance(tr: Transform, aabb: Aabb): number {\n const aabbW = aabb.max[0] - aabb.min[0];\n const aabbH = aabb.max[1] - aabb.min[1];\n const aabbAspectRatio = aabbW / aabbH;\n const selectXAxis = aabbAspectRatio > tr.aspect;\n\n const minimumDistance = selectXAxis ?\n aabbW / (2 * Math.tan(tr.fovX * 0.5) * tr.aspect) :\n aabbH / (2 * Math.tan(tr.fovY * 0.5) * tr.aspect);\n\n return minimumDistance;\n }\n\n _cameraForBoundsOnGlobe(transform: Transform, p0: LngLatLike, p1: LngLatLike, bearing: number, pitch: number, options?: CameraOptions): ?EasingOptions {\n const tr = transform.clone();\n const eOptions = this._extendCameraOptions(options);\n\n tr.bearing = bearing;\n tr.pitch = pitch;\n\n const coord0 = LngLat.convert(p0);\n const coord1 = LngLat.convert(p1);\n\n const midLat = (coord0.lat + coord1.lat) * 0.5;\n const midLng = (coord0.lng + coord1.lng) * 0.5;\n\n const origin = latLngToECEF(midLat, midLng);\n\n const zAxis = vec3.normalize([], origin);\n const xAxis = vec3.normalize([], vec3.cross([], zAxis, [0, 1, 0]));\n const yAxis = vec3.cross([], xAxis, zAxis);\n\n const aabbOrientation = [\n xAxis[0], xAxis[1], xAxis[2], 0,\n yAxis[0], yAxis[1], yAxis[2], 0,\n zAxis[0], zAxis[1], zAxis[2], 0,\n 0, 0, 0, 1\n ];\n\n const ecefCoords = [\n origin,\n\n latLngToECEF(coord0.lat, coord0.lng),\n latLngToECEF(coord1.lat, coord0.lng),\n latLngToECEF(coord1.lat, coord1.lng),\n latLngToECEF(coord0.lat, coord1.lng),\n\n latLngToECEF(midLat, coord0.lng),\n latLngToECEF(midLat, coord1.lng),\n latLngToECEF(coord0.lat, midLng),\n latLngToECEF(coord1.lat, midLng),\n ];\n\n let aabb = Aabb.fromPoints(ecefCoords.map(p => [vec3.dot(xAxis, p), vec3.dot(yAxis, p), vec3.dot(zAxis, p)]));\n\n const center = vec3.transformMat4([], aabb.center, aabbOrientation);\n\n if (vec3.squaredLength(center) === 0) {\n vec3.set(center, 0, 0, 1);\n }\n\n vec3.normalize(center, center);\n vec3.scale(center, center, GLOBE_RADIUS);\n tr.center = ecefToLatLng(center);\n\n const worldToCamera = tr.getWorldToCameraMatrix();\n const cameraToWorld = mat4.invert(new Float64Array(16), worldToCamera);\n\n aabb = Aabb.applyTransform(aabb, mat4.multiply([], worldToCamera, aabbOrientation));\n\n vec3.transformMat4(center, center, worldToCamera);\n\n const aabbHalfExtentZ = (aabb.max[2] - aabb.min[2]) * 0.5;\n const frustumDistance = this._minimumAABBFrustumDistance(tr, aabb);\n\n const offsetZ = vec3.scale([], [0, 0, 1], aabbHalfExtentZ);\n const aabbClosestPoint = vec3.add(offsetZ, center, offsetZ);\n const offsetDistance = frustumDistance + (tr.pitch === 0 ? 0 : vec3.distance(center, aabbClosestPoint));\n\n const globeCenter = tr.globeCenterInViewSpace;\n const normal = vec3.sub([], center, [globeCenter[0], globeCenter[1], globeCenter[2]]);\n vec3.normalize(normal, normal);\n vec3.scale(normal, normal, offsetDistance);\n\n const cameraPosition = vec3.add([], center, normal);\n\n vec3.transformMat4(cameraPosition, cameraPosition, cameraToWorld);\n\n const meterPerECEF = earthRadius / GLOBE_RADIUS;\n const altitudeECEF = vec3.length(cameraPosition);\n const altitudeMeter = altitudeECEF * meterPerECEF - earthRadius;\n const mercatorZ = mercatorZfromAltitude(Math.max(altitudeMeter, Number.EPSILON), 0);\n\n const zoom = Math.min(tr.zoomFromMercatorZAdjusted(mercatorZ), eOptions.maxZoom);\n\n const halfZoomTransition = (GLOBE_ZOOM_THRESHOLD_MIN + GLOBE_ZOOM_THRESHOLD_MAX) * 0.5;\n if (zoom > halfZoomTransition) {\n tr.setProjection({name: 'mercator'});\n tr.zoom = zoom;\n return this._cameraForBounds(tr, p0, p1, bearing, pitch, options);\n }\n\n return {center: tr.center, zoom, bearing, pitch};\n }\n\n /** @section {Querying features} */\n\n /**\n * Queries the currently loaded data for elevation at a geographical location. The elevation is returned in `meters` relative to mean sea-level.\n * Returns `null` if `terrain` is disabled or if terrain data for the location hasn't been loaded yet.\n *\n * In order to guarantee that the terrain data is loaded ensure that the geographical location is visible and wait for the `idle` event to occur.\n *\n * @memberof Map#\n * @param {LngLatLike} lnglat The geographical location at which to query.\n * @param {ElevationQueryOptions} [options] Options object.\n * @param {boolean} [options.exaggerated=true] When `true` returns the terrain elevation with the value of `exaggeration` from the style already applied.\n * When `false`, returns the raw value of the underlying data without styling applied.\n * @returns {number | null} The elevation in meters.\n * @example\n * const coordinate = [-122.420679, 37.772537];\n * const elevation = map.queryTerrainElevation(coordinate);\n * @see [Example: Query terrain elevation](https://docs.mapbox.com/mapbox-gl-js/example/query-terrain-elevation/)\n */\n queryTerrainElevation(lnglat: LngLatLike, options: ?ElevationQueryOptions): ?number {\n const elevation = this.transform.elevation;\n if (elevation) {\n options = extend({}, {exaggerated: true}, options);\n return elevation.getAtPoint(MercatorCoordinate.fromLngLat(lnglat), null, options.exaggerated);\n }\n return null;\n }\n\n /**\n * Calculate the center of these two points in the viewport and use\n * the highest zoom level up to and including `Map#getMaxZoom()` that fits\n * the points in the viewport at the specified bearing.\n * @memberof Map#\n * @param {LngLatLike} p0 First point\n * @param {LngLatLike} p1 Second point\n * @param {number} bearing Desired map bearing at end of animation, in degrees\n * @param {number} pitch Desired map pitch at end of animation, in degrees\n * @param {CameraOptions | null} options\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the camera would transition to the specified bounds.\n * @returns {CameraOptions | void} If map is able to fit to provided bounds, returns `CameraOptions` with\n * `center`, `zoom`, and `bearing`. If map is unable to fit, method will warn and return undefined.\n * @private\n * @example\n * var p0 = [-79, 43];\n * var p1 = [-73, 45];\n * var bearing = 90;\n * var newCameraTransform = map._cameraForBounds(p0, p1, bearing, pitch, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n */\n _cameraForBounds(transform: Transform, p0: LngLatLike, p1: LngLatLike, bearing: number, pitch: number, options?: CameraOptions): ?EasingOptions {\n if (transform.projection.name === 'globe') {\n return this._cameraForBoundsOnGlobe(transform, p0, p1, bearing, pitch, options);\n }\n\n const tr = transform.clone();\n const eOptions = this._extendCameraOptions(options);\n const edgePadding = tr.padding;\n\n tr.bearing = bearing;\n tr.pitch = pitch;\n\n const coord0 = LngLat.convert(p0);\n const coord1 = LngLat.convert(p1);\n const coord2 = new LngLat(coord0.lng, coord1.lat);\n const coord3 = new LngLat(coord1.lng, coord0.lat);\n\n const p0world = tr.project(coord0);\n const p1world = tr.project(coord1);\n\n const z0 = this.queryTerrainElevation(coord0);\n const z1 = this.queryTerrainElevation(coord1);\n const z2 = this.queryTerrainElevation(coord2);\n const z3 = this.queryTerrainElevation(coord3);\n\n const worldCoords = [\n [p0world.x, p0world.y, Math.min(z0 || 0, z1 || 0, z2 || 0, z3 || 0)],\n [p1world.x, p1world.y, Math.max(z0 || 0, z1 || 0, z2 || 0, z3 || 0)]\n ];\n\n let aabb = Aabb.fromPoints(worldCoords);\n\n const worldToCamera = tr.getWorldToCameraMatrix();\n const cameraToWorld = mat4.invert(new Float64Array(16), worldToCamera);\n\n aabb = Aabb.applyTransform(aabb, worldToCamera);\n\n const size = vec3.sub([], aabb.max, aabb.min);\n\n const screenPadL = edgePadding.left || 0;\n const screenPadR = edgePadding.right || 0;\n const screenPadB = edgePadding.bottom || 0;\n const screenPadT = edgePadding.top || 0;\n\n const {left: padL, right: padR, top: padT, bottom: padB} = eOptions.padding;\n\n const halfScreenPadX = (screenPadL + screenPadR) * 0.5;\n const halfScreenPadY = (screenPadT + screenPadB) * 0.5;\n\n const scaleX = (tr.width - (screenPadL + screenPadR + padL + padR)) / size[0];\n const scaleY = (tr.height - (screenPadB + screenPadT + padB + padT)) / size[1];\n\n const zoomRef = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), eOptions.maxZoom);\n\n const scaleRatio = tr.scale / tr.zoomScale(zoomRef);\n\n aabb = new Aabb(\n [aabb.min[0] - (padL + halfScreenPadX) * scaleRatio, aabb.min[1] - (padB + halfScreenPadY) * scaleRatio, aabb.min[2]],\n [aabb.max[0] + (padR + halfScreenPadX) * scaleRatio, aabb.max[1] + (padT + halfScreenPadY) * scaleRatio, aabb.max[2]]);\n\n const aabbHalfExtentZ = size[2] * 0.5;\n const frustumDistance = this._minimumAABBFrustumDistance(tr, aabb);\n\n const normalZ = [0, 0, 1, 0];\n\n vec4.transformMat4(normalZ, normalZ, worldToCamera);\n vec4.normalize(normalZ, normalZ);\n\n const offset = vec3.scale([], normalZ, frustumDistance + aabbHalfExtentZ);\n const cameraPosition = vec3.add([], aabb.center, offset);\n\n const centerOffset = (typeof eOptions.offset.x === 'number' && typeof eOptions.offset.y === 'number') ?\n new Point(eOptions.offset.x, eOptions.offset.y) :\n Point.convert(eOptions.offset);\n\n const rotatedOffset = centerOffset.rotate(-degToRad(bearing));\n\n aabb.center[0] -= rotatedOffset.x * scaleRatio;\n aabb.center[1] += rotatedOffset.y * scaleRatio;\n\n vec3.transformMat4(aabb.center, aabb.center, cameraToWorld);\n vec3.transformMat4(cameraPosition, cameraPosition, cameraToWorld);\n\n const mercator = [aabb.center[0], aabb.center[1], cameraPosition[2] * tr.pixelsPerMeter];\n vec3.scale(mercator, mercator, 1.0 / tr.worldSize);\n\n const lng = lngFromMercatorX(mercator[0]);\n const lat = latFromMercatorY(mercator[1]);\n\n const zoom = Math.min(tr._zoomFromMercatorZ(mercator[2]), eOptions.maxZoom);\n const center = new LngLat(lng, lat);\n\n const halfZoomTransition = (GLOBE_ZOOM_THRESHOLD_MIN + GLOBE_ZOOM_THRESHOLD_MAX) * 0.5;\n\n if (tr.mercatorFromTransition && zoom < halfZoomTransition) {\n tr.setProjection({name: 'globe'});\n tr.zoom = zoom;\n return this._cameraForBounds(tr, p0, p1, bearing, pitch, options);\n }\n\n return {center, zoom, bearing, pitch};\n }\n\n /**\n * Pans and zooms the map to contain its visible area within the specified geographical bounds.\n * If a padding is set on the map, the bounds are fit to the inset.\n *\n * @memberof Map#\n * @param {LngLatBoundsLike} bounds Center these bounds in the viewport and use the highest\n * zoom level up to and including `Map#getMaxZoom()` that fits them in the viewport.\n * @param {Object} [options] Options supports all properties from {@link AnimationOptions} and {@link CameraOptions} in addition to the fields below.\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {number} [options.pitch=0] Desired map pitch at end of animation, in degrees.\n * @param {number} [options.bearing=0] Desired map bearing at end of animation, in degrees.\n * @param {boolean} [options.linear=false] If `true`, the map transitions using\n * {@link Map#easeTo}. If `false`, the map transitions using {@link Map#flyTo}. See\n * those functions and {@link AnimationOptions} for information about options available.\n * @param {Function} [options.easing] An easing function for the animated transition. See {@link AnimationOptions}.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the map view transitions to the specified bounds.\n * @param {Object} [eventData] Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * map.fitBounds(bbox, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n * @see [Example: Fit a map to a bounding box](https://www.mapbox.com/mapbox-gl-js/example/fitbounds/)\n */\n fitBounds(bounds: LngLatBoundsLike, options?: EasingOptions, eventData?: Object): this {\n const cameraPlacement = this.cameraForBounds(bounds, options);\n return this._fitInternal(cameraPlacement, options, eventData);\n }\n\n /**\n * Pans, rotates and zooms the map to to fit the box made by points p0 and p1\n * once the map is rotated to the specified bearing. To zoom without rotating,\n * pass in the current map bearing.\n *\n * @memberof Map#\n * @param {PointLike} p0 First point on screen, in pixel coordinates.\n * @param {PointLike} p1 Second point on screen, in pixel coordinates.\n * @param {number} bearing Desired map bearing at end of animation, in degrees.\n * @param {EasingOptions | null} options Options object.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {boolean} [options.linear=false] If `true`, the map transitions using\n * {@link Map#easeTo}. If `false`, the map transitions using {@link Map#flyTo}. See\n * those functions and {@link AnimationOptions} for information about options available.\n * @param {number} [options.pitch=0] Desired map pitch at end of animation, in degrees.\n * @param {Function} [options.easing] An easing function for the animated transition. See {@link AnimationOptions}.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the map view transitions to the specified bounds.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * const p0 = [220, 400];\n * const p1 = [500, 900];\n * map.fitScreenCoordinates(p0, p1, map.getBearing(), {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n * @see Used by {@link BoxZoomHandler}\n */\n fitScreenCoordinates(p0: PointLike, p1: PointLike, bearing: number, options?: EasingOptions, eventData?: Object): this {\n const screen0 = Point.convert(p0);\n const screen1 = Point.convert(p1);\n\n const min = new Point(Math.min(screen0.x, screen1.x), Math.min(screen0.y, screen1.y));\n const max = new Point(Math.max(screen0.x, screen1.x), Math.max(screen0.y, screen1.y));\n\n if (this.transform.projection.name === 'mercator' && this.transform.anyCornerOffEdge(screen0, screen1)) {\n return this;\n }\n\n const lnglat0 = this.transform.pointLocation3D(min);\n const lnglat1 = this.transform.pointLocation3D(max);\n const lnglat2 = this.transform.pointLocation3D(new Point(min.x, max.y));\n const lnglat3 = this.transform.pointLocation3D(new Point(max.x, min.y));\n\n const p0coord = [\n Math.min(lnglat0.lng, lnglat1.lng, lnglat2.lng, lnglat3.lng),\n Math.min(lnglat0.lat, lnglat1.lat, lnglat2.lat, lnglat3.lat),\n ];\n const p1coord = [\n Math.max(lnglat0.lng, lnglat1.lng, lnglat2.lng, lnglat3.lng),\n Math.max(lnglat0.lat, lnglat1.lat, lnglat2.lat, lnglat3.lat),\n ];\n\n const pitch = options && options.pitch ? options.pitch : this.getPitch();\n\n const cameraPlacement = this._cameraForBounds(this.transform, p0coord, p1coord, bearing, pitch, options);\n return this._fitInternal(cameraPlacement, options, eventData);\n }\n\n _fitInternal(calculatedOptions?: ?EasingOptions, options?: EasingOptions, eventData?: Object): this {\n // cameraForBounds warns + returns undefined if unable to fit:\n if (!calculatedOptions) return this;\n\n options = extend(calculatedOptions, options);\n // Explicitly remove the padding field because, calculatedOptions already accounts for padding by setting zoom and center accordingly.\n delete options.padding;\n\n return options.linear ?\n this.easeTo(options, eventData) :\n this.flyTo(options, eventData);\n }\n\n /**\n * Changes any combination of center, zoom, bearing, and pitch, without\n * an animated transition. The map will retain its current values for any\n * details not specified in `options`.\n *\n * @memberof Map#\n * @param {CameraOptions} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:rotate\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // jump to coordinates at current zoom\n * map.jumpTo({center: [0, 0]});\n * // jump with zoom, pitch, and bearing options\n * map.jumpTo({\n * center: [0, 0],\n * zoom: 8,\n * pitch: 45,\n * bearing: 90\n * });\n * @see [Example: Jump to a series of locations](https://docs.mapbox.com/mapbox-gl-js/example/jump-to/)\n * @see [Example: Update a feature in realtime](https://docs.mapbox.com/mapbox-gl-js/example/live-update-feature/)\n */\n jumpTo(options: CameraOptions & {preloadOnly?: $PropertyType}, eventData?: Object): this {\n this.stop();\n\n const tr = options.preloadOnly ? this.transform.clone() : this.transform;\n let zoomChanged = false,\n bearingChanged = false,\n pitchChanged = false;\n\n if ('zoom' in options && tr.zoom !== +options.zoom) {\n zoomChanged = true;\n tr.zoom = +options.zoom;\n }\n\n if (options.center !== undefined) {\n tr.center = LngLat.convert(options.center);\n }\n\n if ('bearing' in options && tr.bearing !== +options.bearing) {\n bearingChanged = true;\n tr.bearing = +options.bearing;\n }\n\n if ('pitch' in options && tr.pitch !== +options.pitch) {\n pitchChanged = true;\n tr.pitch = +options.pitch;\n }\n\n if (options.padding != null && !tr.isPaddingEqual(options.padding)) {\n // $FlowFixMe[incompatible-type] - Flow can't infer that padding is not null here\n tr.padding = options.padding;\n }\n\n if (options.preloadOnly) {\n this._preloadTiles(tr);\n return this;\n }\n\n this.fire(new Event('movestart', eventData))\n .fire(new Event('move', eventData));\n\n if (zoomChanged) {\n this.fire(new Event('zoomstart', eventData))\n .fire(new Event('zoom', eventData))\n .fire(new Event('zoomend', eventData));\n }\n\n if (bearingChanged) {\n this.fire(new Event('rotatestart', eventData))\n .fire(new Event('rotate', eventData))\n .fire(new Event('rotateend', eventData));\n }\n\n if (pitchChanged) {\n this.fire(new Event('pitchstart', eventData))\n .fire(new Event('pitch', eventData))\n .fire(new Event('pitchend', eventData));\n }\n\n return this.fire(new Event('moveend', eventData));\n }\n\n /**\n * Returns position and orientation of the camera entity.\n *\n * This method is not supported for projections other than mercator.\n *\n * @memberof Map#\n * @returns {FreeCameraOptions} The camera state.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n *\n * map.setFreeCameraOptions(camera);\n */\n getFreeCameraOptions(): FreeCameraOptions {\n if (!this.transform.projection.supportsFreeCamera) {\n warnOnce(freeCameraNotSupportedWarning);\n }\n return this.transform.getFreeCameraOptions();\n }\n\n /**\n * `FreeCameraOptions` provides more direct access to the underlying camera entity.\n * For backwards compatibility the state set using this API must be representable with\n * `CameraOptions` as well. Parameters are clamped into a valid range or discarded as invalid\n * if the conversion to the pitch and bearing presentation is ambiguous. For example orientation\n * can be invalid if it leads to the camera being upside down, the quaternion has zero length,\n * or the pitch is over the maximum pitch limit.\n *\n * This method is not supported for projections other than mercator.\n *\n * @memberof Map#\n * @param {FreeCameraOptions} options `FreeCameraOptions` object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:rotate\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n *\n * map.setFreeCameraOptions(camera);\n */\n setFreeCameraOptions(options: FreeCameraOptions, eventData?: Object): this {\n const tr = this.transform;\n\n if (!tr.projection.supportsFreeCamera) {\n warnOnce(freeCameraNotSupportedWarning);\n return this;\n }\n\n this.stop();\n\n const prevZoom = tr.zoom;\n const prevPitch = tr.pitch;\n const prevBearing = tr.bearing;\n\n tr.setFreeCameraOptions(options);\n\n const zoomChanged = prevZoom !== tr.zoom;\n const pitchChanged = prevPitch !== tr.pitch;\n const bearingChanged = prevBearing !== tr.bearing;\n\n this.fire(new Event('movestart', eventData))\n .fire(new Event('move', eventData));\n\n if (zoomChanged) {\n this.fire(new Event('zoomstart', eventData))\n .fire(new Event('zoom', eventData))\n .fire(new Event('zoomend', eventData));\n }\n\n if (bearingChanged) {\n this.fire(new Event('rotatestart', eventData))\n .fire(new Event('rotate', eventData))\n .fire(new Event('rotateend', eventData));\n }\n\n if (pitchChanged) {\n this.fire(new Event('pitchstart', eventData))\n .fire(new Event('pitch', eventData))\n .fire(new Event('pitchend', eventData));\n }\n\n this.fire(new Event('moveend', eventData));\n return this;\n }\n\n /**\n * Changes any combination of `center`, `zoom`, `bearing`, `pitch`, and `padding` with an animated transition\n * between old and new values. The map will retain its current values for any\n * details not specified in `options`.\n *\n * Note: The transition will happen instantly if the user has enabled\n * the `reduced motion` accessibility feature enabled in their operating system,\n * unless `options` includes `essential: true`.\n *\n * @memberof Map#\n * @param {EasingOptions} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:rotate\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} `this` Returns itself to allow for method chaining.\n * @example\n * // Ease with default options to null island for 5 seconds.\n * map.easeTo({center: [0, 0], zoom: 9, duration: 5000});\n * @example\n * // Using easeTo options.\n * map.easeTo({\n * center: [0, 0],\n * zoom: 9,\n * speed: 0.2,\n * curve: 1,\n * duration: 5000,\n * easing(t) {\n * return t;\n * }\n * });\n * @see [Example: Navigate the map with game-like controls](https://www.mapbox.com/mapbox-gl-js/example/game-controls/)\n */\n easeTo(options: EasingOptions & {easeId?: string}, eventData?: Object): this {\n this._stop(false, options.easeId);\n\n options = extend({\n offset: [0, 0],\n duration: 500,\n easing: defaultEasing\n }, options);\n\n if (options.animate === false || this._prefersReducedMotion(options)) options.duration = 0;\n\n const tr = this.transform,\n startZoom = this.getZoom(),\n startBearing = this.getBearing(),\n startPitch = this.getPitch(),\n startPadding = this.getPadding(),\n\n zoom = 'zoom' in options ? +options.zoom : startZoom,\n bearing = 'bearing' in options ? this._normalizeBearing(options.bearing, startBearing) : startBearing,\n pitch = 'pitch' in options ? +options.pitch : startPitch,\n padding = 'padding' in options ? options.padding : tr.padding;\n\n const offsetAsPoint = Point.convert(options.offset);\n\n let pointAtOffset;\n let from;\n let delta;\n\n if (tr.projection.name === 'globe') {\n // Pixel coordinates will be applied directly to translate the globe\n const centerCoord = MercatorCoordinate.fromLngLat(tr.center);\n\n const rotatedOffset = offsetAsPoint.rotate(-tr.angle);\n centerCoord.x += rotatedOffset.x / tr.worldSize;\n centerCoord.y += rotatedOffset.y / tr.worldSize;\n\n const locationAtOffset = centerCoord.toLngLat();\n const center = LngLat.convert(options.center || locationAtOffset);\n this._normalizeCenter(center);\n\n pointAtOffset = tr.centerPoint.add(rotatedOffset);\n from = new Point(centerCoord.x, centerCoord.y).mult(tr.worldSize);\n delta = new Point(mercatorXfromLng(center.lng), mercatorYfromLat(center.lat)).mult(tr.worldSize).sub(from);\n } else {\n pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n const locationAtOffset = tr.pointLocation(pointAtOffset);\n const center = LngLat.convert(options.center || locationAtOffset);\n this._normalizeCenter(center);\n\n from = tr.project(locationAtOffset);\n delta = tr.project(center).sub(from);\n }\n const finalScale = tr.zoomScale(zoom - startZoom);\n\n let around, aroundPoint;\n\n if (options.around) {\n around = LngLat.convert(options.around);\n aroundPoint = tr.locationPoint(around);\n }\n\n const zoomChanged = this._zooming || (zoom !== startZoom);\n const bearingChanged = this._rotating || (startBearing !== bearing);\n const pitchChanged = this._pitching || (pitch !== startPitch);\n const paddingChanged = !tr.isPaddingEqual(padding);\n\n const frame = (tr: Transform) => (k: number) => {\n if (zoomChanged) {\n tr.zoom = interpolate(startZoom, zoom, k);\n }\n if (bearingChanged) {\n tr.bearing = interpolate(startBearing, bearing, k);\n }\n if (pitchChanged) {\n tr.pitch = interpolate(startPitch, pitch, k);\n }\n if (paddingChanged) {\n tr.interpolatePadding(startPadding, padding, k);\n // When padding is being applied, Transform#centerPoint is changing continuously,\n // thus we need to recalculate offsetPoint every fra,e\n pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n }\n\n if (around) {\n tr.setLocationAtPoint(around, aroundPoint);\n } else {\n const scale = tr.zoomScale(tr.zoom - startZoom);\n const base = zoom > startZoom ?\n Math.min(2, finalScale) :\n Math.max(0.5, finalScale);\n const speedup = Math.pow(base, 1 - k);\n const newCenter = tr.unproject(from.add(delta.mult(k * speedup)).mult(scale));\n tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);\n }\n\n if (!options.preloadOnly) {\n this._fireMoveEvents(eventData);\n }\n\n return tr;\n };\n\n if (options.preloadOnly) {\n const predictedTransforms = this._emulate(frame, options.duration, tr);\n this._preloadTiles(predictedTransforms);\n return this;\n }\n\n const currently = {\n moving: this._moving,\n zooming: this._zooming,\n rotating: this._rotating,\n pitching: this._pitching\n };\n\n this._zooming = zoomChanged;\n this._rotating = bearingChanged;\n this._pitching = pitchChanged;\n this._padding = paddingChanged;\n\n this._easeId = options.easeId;\n this._prepareEase(eventData, options.noMoveStart, currently);\n\n this._ease(frame(tr), (interruptingEaseId?: string) => {\n tr.recenterOnTerrain();\n this._afterEase(eventData, interruptingEaseId);\n }, options);\n\n return this;\n }\n\n _prepareEase(eventData?: Object, noMoveStart: boolean, currently: Object = {}) {\n this._moving = true;\n this.transform.cameraElevationReference = \"sea\";\n\n if (!noMoveStart && !currently.moving) {\n this.fire(new Event('movestart', eventData));\n }\n if (this._zooming && !currently.zooming) {\n this.fire(new Event('zoomstart', eventData));\n }\n if (this._rotating && !currently.rotating) {\n this.fire(new Event('rotatestart', eventData));\n }\n if (this._pitching && !currently.pitching) {\n this.fire(new Event('pitchstart', eventData));\n }\n }\n\n _fireMoveEvents(eventData?: Object) {\n this.fire(new Event('move', eventData));\n if (this._zooming) {\n this.fire(new Event('zoom', eventData));\n }\n if (this._rotating) {\n this.fire(new Event('rotate', eventData));\n }\n if (this._pitching) {\n this.fire(new Event('pitch', eventData));\n }\n }\n\n _afterEase(eventData?: Object, easeId?: string) {\n // if this easing is being stopped to start another easing with\n // the same id then don't fire any events to avoid extra start/stop events\n if (this._easeId && easeId && this._easeId === easeId) {\n return;\n }\n this._easeId = undefined;\n this.transform.cameraElevationReference = \"ground\";\n\n const wasZooming = this._zooming;\n const wasRotating = this._rotating;\n const wasPitching = this._pitching;\n this._moving = false;\n this._zooming = false;\n this._rotating = false;\n this._pitching = false;\n this._padding = false;\n\n if (wasZooming) {\n this.fire(new Event('zoomend', eventData));\n }\n if (wasRotating) {\n this.fire(new Event('rotateend', eventData));\n }\n if (wasPitching) {\n this.fire(new Event('pitchend', eventData));\n }\n this.fire(new Event('moveend', eventData));\n }\n\n /**\n * Changes any combination of center, zoom, bearing, and pitch, animating the transition along a curve that\n * evokes flight. The animation seamlessly incorporates zooming and panning to help\n * the user maintain their bearings even after traversing a great distance.\n *\n * If a user has the `reduced motion` accessibility feature enabled in their\n * operating system, the animation will be skipped and this will behave\n * equivalently to `jumpTo`, unless 'options' includes `essential: true`.\n *\n * @memberof Map#\n * @param {Object} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions}, {@link AnimationOptions},\n * and the following additional options.\n * @param {number} [options.curve=1.42] The zooming \"curve\" that will occur along the\n * flight path. A high value maximizes zooming for an exaggerated animation, while a low\n * value minimizes zooming for an effect closer to {@link Map#easeTo}. 1.42 is the average\n * value selected by participants in the user study discussed in\n * [van Wijk (2003)](https://www.win.tue.nl/~vanwijk/zoompan.pdf). A value of\n * `Math.pow(6, 0.25)` would be equivalent to the root mean squared average velocity. A\n * value of 1 would produce a circular motion. If `options.minZoom` is specified, this option will be ignored.\n * @param {number} [options.minZoom] The zero-based zoom level at the peak of the flight path. If\n * this option is specified, `options.curve` will be ignored.\n * @param {number} [options.speed=1.2] The average speed of the animation defined in relation to\n * `options.curve`. A speed of 1.2 means that the map appears to move along the flight path\n * by 1.2 times `options.curve` screenfuls every second. A _screenful_ is the map's visible span.\n * It does not correspond to a fixed physical distance, but varies by zoom level.\n * @param {number} [options.screenSpeed] The average speed of the animation measured in screenfuls\n * per second, assuming a linear timing curve. If `options.speed` is specified, this option is ignored.\n * @param {number} [options.maxDuration] The animation's maximum duration, measured in milliseconds.\n * If duration exceeds maximum duration, it resets to 0.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:rotate\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // fly with default options to null island\n * map.flyTo({center: [0, 0], zoom: 9});\n * // using flyTo options\n * map.flyTo({\n * center: [0, 0],\n * zoom: 9,\n * speed: 0.2,\n * curve: 1,\n * easing(t) {\n * return t;\n * }\n * });\n * @see [Example: Fly to a location](https://www.mapbox.com/mapbox-gl-js/example/flyto/)\n * @see [Example: Slowly fly to a location](https://www.mapbox.com/mapbox-gl-js/example/flyto-options/)\n * @see [Example: Fly to a location based on scroll position](https://www.mapbox.com/mapbox-gl-js/example/scroll-fly-to/)\n */\n flyTo(options: EasingOptions, eventData?: Object): this {\n // Fall through to jumpTo if user has set prefers-reduced-motion\n if (this._prefersReducedMotion(options)) {\n const coercedOptions = pick(options, ['center', 'zoom', 'bearing', 'pitch', 'around']);\n return this.jumpTo(coercedOptions, eventData);\n }\n\n // This method implements an “optimal path” animation, as detailed in:\n //\n // Van Wijk, Jarke J.; Nuij, Wim A. A. “Smooth and efficient zooming and panning.” INFOVIS\n // ’03. pp. 15–22. .\n //\n // Where applicable, local variable documentation begins with the associated variable or\n // function in van Wijk (2003).\n\n this.stop();\n\n options = extend({\n offset: [0, 0],\n speed: 1.2,\n curve: 1.42,\n easing: defaultEasing\n }, options);\n\n const tr = this.transform,\n startZoom = this.getZoom(),\n startBearing = this.getBearing(),\n startPitch = this.getPitch(),\n startPadding = this.getPadding();\n\n const zoom = 'zoom' in options ? clamp(+options.zoom, tr.minZoom, tr.maxZoom) : startZoom;\n const bearing = 'bearing' in options ? this._normalizeBearing(options.bearing, startBearing) : startBearing;\n const pitch = 'pitch' in options ? +options.pitch : startPitch;\n const padding = 'padding' in options ? options.padding : tr.padding;\n\n const scale = tr.zoomScale(zoom - startZoom);\n const offsetAsPoint = Point.convert(options.offset);\n let pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n const locationAtOffset = tr.pointLocation(pointAtOffset);\n const center = LngLat.convert(options.center || locationAtOffset);\n this._normalizeCenter(center);\n\n const from = tr.project(locationAtOffset);\n const delta = tr.project(center).sub(from);\n\n let rho = options.curve;\n\n // w₀: Initial visible span, measured in pixels at the initial scale.\n const w0 = Math.max(tr.width, tr.height),\n // w₁: Final visible span, measured in pixels with respect to the initial scale.\n w1 = w0 / scale,\n // Length of the flight path as projected onto the ground plane, measured in pixels from\n // the world image origin at the initial scale.\n u1 = delta.mag();\n\n if ('minZoom' in options) {\n const minZoom = clamp(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);\n // wm: Maximum visible span, measured in pixels with respect to the initial\n // scale.\n const wMax = w0 / tr.zoomScale(minZoom - startZoom);\n rho = Math.sqrt(wMax / u1 * 2);\n }\n\n // ρ²\n const rho2 = rho * rho;\n\n /**\n * rᵢ: Returns the zoom-out factor at one end of the animation.\n *\n * @param i 0 for the ascent or 1 for the descent.\n * @private\n */\n function r(i: number) {\n const b = (w1 * w1 - w0 * w0 + (i ? -1 : 1) * rho2 * rho2 * u1 * u1) / (2 * (i ? w1 : w0) * rho2 * u1);\n return Math.log(Math.sqrt(b * b + 1) - b);\n }\n\n function sinh(n: number) { return (Math.exp(n) - Math.exp(-n)) / 2; }\n function cosh(n: number) { return (Math.exp(n) + Math.exp(-n)) / 2; }\n function tanh(n: number) { return sinh(n) / cosh(n); }\n\n // r₀: Zoom-out factor during ascent.\n const r0 = r(0);\n\n // w(s): Returns the visible span on the ground, measured in pixels with respect to the\n // initial scale. Assumes an angular field of view of 2 arctan ½ ≈ 53°.\n let w: (_: number) => number = function (s) {\n return (cosh(r0) / cosh(r0 + rho * s));\n };\n\n // u(s): Returns the distance along the flight path as projected onto the ground plane,\n // measured in pixels from the world image origin at the initial scale.\n let u: (_: number) => number = function (s) {\n return w0 * ((cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2) / u1;\n };\n\n // S: Total length of the flight path, measured in ρ-screenfuls.\n let S = (r(1) - r0) / rho;\n\n // When u₀ = u₁, the optimal path doesn’t require both ascent and descent.\n if (Math.abs(u1) < 0.000001 || !isFinite(S)) {\n // Perform a more or less instantaneous transition if the path is too short.\n if (Math.abs(w0 - w1) < 0.000001) return this.easeTo(options, eventData);\n\n const k = w1 < w0 ? -1 : 1;\n S = Math.abs(Math.log(w1 / w0)) / rho;\n\n u = function() { return 0; };\n w = function(s) { return Math.exp(k * rho * s); };\n }\n\n if ('duration' in options) {\n options.duration = +options.duration;\n } else {\n const V = 'screenSpeed' in options ? +options.screenSpeed / rho : +options.speed;\n options.duration = 1000 * S / V;\n }\n\n if (options.maxDuration && options.duration > options.maxDuration) {\n options.duration = 0;\n }\n\n const zoomChanged = true;\n const bearingChanged = (startBearing !== bearing);\n const pitchChanged = (pitch !== startPitch);\n const paddingChanged = !tr.isPaddingEqual(padding);\n\n const frame = (tr: Transform) => (k: number) => {\n // s: The distance traveled along the flight path, measured in ρ-screenfuls.\n const s = k * S;\n const scale = 1 / w(s);\n tr.zoom = k === 1 ? zoom : startZoom + tr.scaleZoom(scale);\n\n if (bearingChanged) {\n tr.bearing = interpolate(startBearing, bearing, k);\n }\n if (pitchChanged) {\n tr.pitch = interpolate(startPitch, pitch, k);\n }\n if (paddingChanged) {\n tr.interpolatePadding(startPadding, padding, k);\n // When padding is being applied, Transform#centerPoint is changing continuously,\n // thus we need to recalculate offsetPoint every frame\n pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n }\n\n const newCenter = k === 1 ? center : tr.unproject(from.add(delta.mult(u(s))).mult(scale));\n tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);\n tr._updateCameraOnTerrain();\n\n if (!options.preloadOnly) {\n this._fireMoveEvents(eventData);\n }\n\n return tr;\n };\n\n if (options.preloadOnly) {\n const predictedTransforms = this._emulate(frame, options.duration, tr);\n this._preloadTiles(predictedTransforms);\n return this;\n }\n\n this._zooming = zoomChanged;\n this._rotating = bearingChanged;\n this._pitching = pitchChanged;\n this._padding = paddingChanged;\n\n this._prepareEase(eventData, false);\n this._ease(frame(tr), () => this._afterEase(eventData), options);\n\n return this;\n }\n\n isEasing(): boolean {\n return !!this._easeFrameId;\n }\n\n /**\n * Stops any animated transition underway.\n *\n * @memberof Map#\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.stop();\n */\n stop(): this {\n return this._stop();\n }\n\n _stop(allowGestures?: boolean, easeId?: string): this {\n if (this._easeFrameId) {\n this._cancelRenderFrame(this._easeFrameId);\n this._easeFrameId = undefined;\n this._onEaseFrame = undefined;\n }\n\n if (this._onEaseEnd) {\n // The _onEaseEnd function might emit events which trigger new\n // animation, which sets a new _onEaseEnd. Ensure we don't delete\n // it unintentionally.\n const onEaseEnd = this._onEaseEnd;\n this._onEaseEnd = undefined;\n onEaseEnd.call(this, easeId);\n }\n if (!allowGestures) {\n const handlers = (this: any).handlers;\n if (handlers) handlers.stop(false);\n }\n return this;\n }\n\n _ease(frame: (_: number) => Transform | void,\n finish: () => void,\n options: {animate: boolean, duration: number, easing: (_: number) => number}) {\n if (options.animate === false || options.duration === 0) {\n frame(1);\n finish();\n } else {\n this._easeStart = browser.now();\n this._easeOptions = options;\n this._onEaseFrame = frame;\n this._onEaseEnd = finish;\n // $FlowFixMe[method-unbinding]\n this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback);\n }\n }\n\n // Callback for map._requestRenderFrame\n _renderFrameCallback() {\n const t = Math.min((browser.now() - this._easeStart) / this._easeOptions.duration, 1);\n const frame = this._onEaseFrame;\n if (frame) frame(this._easeOptions.easing(t));\n if (t < 1) {\n // $FlowFixMe[method-unbinding]\n this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback);\n } else {\n this.stop();\n }\n }\n\n // convert bearing so that it's numerically close to the current one so that it interpolates properly\n _normalizeBearing(bearing: number, currentBearing: number): number {\n bearing = wrap(bearing, -180, 180);\n const diff = Math.abs(bearing - currentBearing);\n if (Math.abs(bearing - 360 - currentBearing) < diff) bearing -= 360;\n if (Math.abs(bearing + 360 - currentBearing) < diff) bearing += 360;\n return bearing;\n }\n\n // If a path crossing the antimeridian would be shorter, extend the final coordinate so that\n // interpolating between the two endpoints will cross it.\n _normalizeCenter(center: LngLat) {\n const tr = this.transform;\n if (!tr.renderWorldCopies || tr.maxBounds) return;\n\n const delta = center.lng - tr.center.lng;\n center.lng +=\n delta > 180 ? -360 :\n delta < -180 ? 360 : 0;\n }\n\n _prefersReducedMotion(options: ?AnimationOptions): boolean {\n const essential = options && options.essential;\n const prefersReducedMotion = this._respectPrefersReducedMotion && browser.prefersReducedMotion;\n return prefersReducedMotion && !essential;\n }\n\n // emulates frame function for some transform\n _emulate(frame: Function, duration: number, initialTransform: Transform): Array {\n const frameRate = 15;\n const numFrames = Math.ceil(duration * frameRate / 1000);\n\n const transforms = [];\n const emulateFrame = frame(initialTransform.clone());\n for (let i = 0; i <= numFrames; i++) {\n const transform = emulateFrame(i / numFrames);\n transforms.push(transform.clone());\n }\n\n return transforms;\n }\n}\n\n// In debug builds, check that camera change events are fired in the correct order.\n// - ___start events needs to be fired before ___ and ___end events\n// - another ___start event can't be fired before a ___end event has been fired for the previous one\nfunction addAssertions(camera: Camera) { //eslint-disable-line\n Debug.run(() => {\n const inProgress = {};\n\n ['drag', 'zoom', 'rotate', 'pitch', 'move'].forEach(name => {\n inProgress[name] = false;\n\n camera.on(((`${name}start`: any): MapEvent), () => {\n assert(!inProgress[name], `\"${name}start\" fired twice without a \"${name}end\"`);\n inProgress[name] = true;\n assert(inProgress.move);\n });\n\n camera.on(name, () => {\n assert(inProgress[name]);\n assert(inProgress.move);\n });\n\n camera.on(((`${name}end`: any): MapEvent), () => {\n assert(inProgress.move);\n assert(inProgress[name]);\n inProgress[name] = false;\n });\n });\n\n // Canary used to test whether this function is stripped in prod build\n canary = 'canary debug run'; //eslint-disable-line\n });\n}\n\nlet canary; //eslint-disable-line\n\nexport default Camera;\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {bindAll} from '../../util/util.js';\nimport config from '../../util/config.js';\nimport {getHashString} from '../hash.js';\n\nimport type Map, {ControlPosition} from '../map.js';\n\ntype Options = {\n compact?: boolean,\n customAttribution?: string | Array\n};\n\n/**\n * An `AttributionControl` control presents the map's [attribution information](https://docs.mapbox.com/help/how-mapbox-works/attribution/).\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {boolean} [options.compact] If `true`, force a compact attribution that shows the full attribution on mouse hover. If `false`, force the full attribution control. The default is a responsive attribution that collapses when the map is less than 640 pixels wide. **Attribution should not be collapsed if it can comfortably fit on the map. `compact` should only be used to modify default attribution when map size makes it impossible to fit [default attribution](https://docs.mapbox.com/help/how-mapbox-works/attribution/) and when the automatic compact resizing for default settings are not sufficient**.\n * @param {string | Array} [options.customAttribution] String or strings to show in addition to any other attributions. You can also set a custom attribution when initializing your map with {@link https://docs.mapbox.com/mapbox-gl-js/api/map/#map-parameters the customAttribution option}.\n * @example\n * const map = new mapboxgl.Map({attributionControl: false})\n * .addControl(new mapboxgl.AttributionControl({\n * customAttribution: 'Map design by me'\n * }));\n */\nclass AttributionControl {\n options: Options;\n _map: Map;\n _container: HTMLElement;\n _innerContainer: HTMLElement;\n _compactButton: HTMLButtonElement;\n _editLink: ?HTMLAnchorElement;\n _attribHTML: string;\n styleId: string;\n styleOwner: string;\n\n constructor(options: Options = {}) {\n this.options = options;\n\n bindAll([\n '_toggleAttribution',\n '_updateEditLink',\n '_updateData',\n '_updateCompact'\n ], this);\n }\n\n getDefaultPosition(): ControlPosition {\n return 'bottom-right';\n }\n\n onAdd(map: Map): HTMLElement {\n const compact = this.options && this.options.compact;\n\n this._map = map;\n this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-attrib');\n this._compactButton = DOM.create('button', 'mapboxgl-ctrl-attrib-button', this._container);\n DOM.create('span', `mapboxgl-ctrl-icon`, this._compactButton).setAttribute('aria-hidden', 'true');\n this._compactButton.type = 'button';\n // $FlowFixMe[method-unbinding]\n this._compactButton.addEventListener('click', this._toggleAttribution);\n this._setElementTitle(this._compactButton, 'ToggleAttribution');\n this._innerContainer = DOM.create('div', 'mapboxgl-ctrl-attrib-inner', this._container);\n this._innerContainer.setAttribute('role', 'list');\n\n if (compact) {\n this._container.classList.add('mapboxgl-compact');\n }\n\n this._updateAttributions();\n this._updateEditLink();\n\n // $FlowFixMe[method-unbinding]\n this._map.on('styledata', this._updateData);\n // $FlowFixMe[method-unbinding]\n this._map.on('sourcedata', this._updateData);\n // $FlowFixMe[method-unbinding]\n this._map.on('moveend', this._updateEditLink);\n\n if (compact === undefined) {\n // $FlowFixMe[method-unbinding]\n this._map.on('resize', this._updateCompact);\n this._updateCompact();\n }\n\n return this._container;\n }\n\n onRemove() {\n this._container.remove();\n\n // $FlowFixMe[method-unbinding]\n this._map.off('styledata', this._updateData);\n // $FlowFixMe[method-unbinding]\n this._map.off('sourcedata', this._updateData);\n // $FlowFixMe[method-unbinding]\n this._map.off('moveend', this._updateEditLink);\n // $FlowFixMe[method-unbinding]\n this._map.off('resize', this._updateCompact);\n\n this._map = (undefined: any);\n this._attribHTML = (undefined: any);\n }\n\n _setElementTitle(element: HTMLElement, title: string) {\n const str = this._map._getUIString(`AttributionControl.${title}`);\n element.setAttribute('aria-label', str);\n element.removeAttribute('title');\n if (element.firstElementChild) element.firstElementChild.setAttribute('title', str);\n }\n\n _toggleAttribution() {\n if (this._container.classList.contains('mapboxgl-compact-show')) {\n this._container.classList.remove('mapboxgl-compact-show');\n this._compactButton.setAttribute('aria-expanded', 'false');\n } else {\n this._container.classList.add('mapboxgl-compact-show');\n this._compactButton.setAttribute('aria-expanded', 'true');\n }\n }\n\n _updateEditLink() {\n let editLink = this._editLink;\n if (!editLink) {\n editLink = this._editLink = (this._container.querySelector('.mapbox-improve-map'): any);\n }\n\n const params = [\n {key: 'owner', value: this.styleOwner},\n {key: 'id', value: this.styleId},\n {key: 'access_token', value: this._map._requestManager._customAccessToken || config.ACCESS_TOKEN}\n ];\n\n if (editLink) {\n const paramString = params.reduce((acc, next, i) => {\n if (next.value) {\n acc += `${next.key}=${next.value}${i < params.length - 1 ? '&' : ''}`;\n }\n return acc;\n }, `?`);\n editLink.href = `${config.FEEDBACK_URL}/${paramString}#${getHashString(this._map, true)}`;\n editLink.rel = 'noopener nofollow';\n this._setElementTitle(editLink, 'MapFeedback');\n }\n }\n\n _updateData(e: any) {\n if (e && (e.sourceDataType === 'metadata' || e.sourceDataType === 'visibility' || e.dataType === 'style')) {\n this._updateAttributions();\n this._updateEditLink();\n }\n }\n\n _updateAttributions() {\n if (!this._map.style) return;\n let attributions: Array = [];\n\n if (this._map.style.stylesheet) {\n const stylesheet: any = this._map.style.stylesheet;\n this.styleOwner = stylesheet.owner;\n this.styleId = stylesheet.id;\n }\n\n const sourceCaches = this._map.style._sourceCaches;\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n if (sourceCache.used) {\n const source = sourceCache.getSource();\n if (source.attribution && attributions.indexOf(source.attribution) < 0) {\n // $FlowFixMe[incompatible-call] - Flow can't infer that attribution is a string\n attributions.push(source.attribution);\n }\n }\n }\n\n // remove any entries that are substrings of another entry.\n // first sort by length so that substrings come first\n attributions.sort((a, b) => a.length - b.length);\n attributions = attributions.filter((attrib, i) => {\n for (let j = i + 1; j < attributions.length; j++) {\n if (attributions[j].indexOf(attrib) >= 0) { return false; }\n }\n return true;\n });\n\n if (this.options.customAttribution) {\n if (Array.isArray(this.options.customAttribution)) {\n attributions = [...this.options.customAttribution, ...attributions];\n } else {\n attributions.unshift(this.options.customAttribution);\n }\n }\n\n // check if attribution string is different to minimize DOM changes\n const attribHTML = attributions.join(' | ');\n if (attribHTML === this._attribHTML) return;\n\n this._attribHTML = attribHTML;\n\n if (attributions.length) {\n this._innerContainer.innerHTML = attribHTML;\n this._container.classList.remove('mapboxgl-attrib-empty');\n } else {\n this._container.classList.add('mapboxgl-attrib-empty');\n }\n // remove old DOM node from _editLink\n this._editLink = null;\n }\n\n _updateCompact() {\n if (this._map.getCanvasContainer().offsetWidth <= 640) {\n this._container.classList.add('mapboxgl-compact');\n } else {\n this._container.classList.remove('mapboxgl-compact', 'mapboxgl-compact-show');\n }\n }\n\n}\n\nexport default AttributionControl;\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {bindAll} from '../../util/util.js';\n\nimport type Map, {ControlPosition} from '../map.js';\n\n/**\n * A `LogoControl` is a control that adds the Mapbox watermark\n * to the map as required by the [terms of service](https://www.mapbox.com/tos/) for Mapbox\n * vector tiles and core styles.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @private\n**/\n\nclass LogoControl {\n _map: Map;\n _container: HTMLElement;\n\n constructor() {\n bindAll(['_updateLogo', '_updateCompact'], this);\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n this._container = DOM.create('div', 'mapboxgl-ctrl');\n const anchor = DOM.create('a', 'mapboxgl-ctrl-logo');\n anchor.target = \"_blank\";\n anchor.rel = \"noopener nofollow\";\n anchor.href = \"https://www.mapbox.com/\";\n anchor.setAttribute(\"aria-label\", this._map._getUIString('LogoControl.Title'));\n anchor.setAttribute(\"rel\", \"noopener nofollow\");\n this._container.appendChild(anchor);\n this._container.style.display = 'none';\n\n // $FlowFixMe[method-unbinding]\n this._map.on('sourcedata', this._updateLogo);\n this._updateLogo();\n\n // $FlowFixMe[method-unbinding]\n this._map.on('resize', this._updateCompact);\n this._updateCompact();\n\n return this._container;\n }\n\n onRemove() {\n this._container.remove();\n // $FlowFixMe[method-unbinding]\n this._map.off('sourcedata', this._updateLogo);\n // $FlowFixMe[method-unbinding]\n this._map.off('resize', this._updateCompact);\n }\n\n getDefaultPosition(): ControlPosition {\n return 'bottom-left';\n }\n\n _updateLogo(e: any) {\n if (!e || e.sourceDataType === 'metadata') {\n this._container.style.display = this._logoRequired() ? 'block' : 'none';\n }\n }\n\n _logoRequired(): boolean {\n if (!this._map.style) return true;\n const sourceCaches = this._map.style._sourceCaches;\n if (Object.entries(sourceCaches).length === 0) return true;\n for (const id in sourceCaches) {\n const source = sourceCaches[id].getSource();\n if (source.hasOwnProperty('mapbox_logo') && !source.mapbox_logo) {\n return false;\n }\n }\n\n return true;\n }\n\n _updateCompact() {\n const containerChildren = this._container.children;\n if (containerChildren.length) {\n const anchor = containerChildren[0];\n if (this._map.getCanvasContainer().offsetWidth < 250) {\n anchor.classList.add('mapboxgl-compact');\n } else {\n anchor.classList.remove('mapboxgl-compact');\n }\n }\n }\n\n}\n\nexport default LogoControl;\n","// @flow strict\nimport assert from 'assert';\n\nexport type TaskID = number; // can't mark opaque due to https://github.com/flowtype/flow-remove-types/pull/61\ntype Task = {\n callback: (timeStamp: number) => void;\n id: TaskID;\n cancelled: boolean;\n};\n\nclass TaskQueue {\n _queue: Array;\n _id: TaskID;\n _cleared: boolean;\n _currentlyRunning: Array | false;\n\n constructor() {\n this._queue = [];\n this._id = 0;\n this._cleared = false;\n this._currentlyRunning = false;\n }\n\n add(callback: (timeStamp: number) => void): TaskID {\n const id = ++this._id;\n const queue = this._queue;\n queue.push({callback, id, cancelled: false});\n return id;\n }\n\n remove(id: TaskID) {\n const running = this._currentlyRunning;\n const queue = running ? this._queue.concat(running) : this._queue;\n for (const task of queue) {\n if (task.id === id) {\n task.cancelled = true;\n return;\n }\n }\n }\n\n run(timeStamp: number = 0) {\n assert(!this._currentlyRunning);\n const queue = this._currentlyRunning = this._queue;\n\n // Tasks queued by callbacks in the current queue should be executed\n // on the next run, not the current run.\n this._queue = [];\n\n for (const task of queue) {\n if (task.cancelled) continue;\n task.callback(timeStamp);\n if (this._cleared) break;\n }\n\n this._cleared = false;\n this._currentlyRunning = false;\n }\n\n clear() {\n if (this._currentlyRunning) {\n this._cleared = true;\n }\n this._queue = [];\n }\n}\n\nexport default TaskQueue;\n","// @flow\n\nimport LngLat from '../geo/lng_lat.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type Transform from '../geo/transform.js';\n\n/**\n * Given a LngLat, prior projected position, and a transform, return a new LngLat shifted\n * n × 360° east or west for some n ≥ 0 such that:\n *\n * * the projected location of the result is on screen, if possible, and secondarily:\n * * the difference between the projected location of the result and the prior position\n * is minimized.\n *\n * The object is to preserve perceived object constancy for Popups and Markers as much as\n * possible; they should avoid shifting large distances across the screen, even when the\n * map center changes by ±360° due to automatic wrapping, and when about to go off screen,\n * should wrap just enough to avoid doing so.\n *\n * @private\n */\nexport default function(lngLat: LngLat, priorPos: ?Point, transform: Transform): LngLat {\n lngLat = new LngLat(lngLat.lng, lngLat.lat);\n\n // First, try shifting one world in either direction, and see if either is closer to the\n // prior position. Don't shift away if it new position is further from center.\n // This preserves object constancy when the map center is auto-wrapped during animations,\n // but don't allow it to run away on horizon (points towards horizon get closer and closer).\n if (priorPos) {\n const left = new LngLat(lngLat.lng - 360, lngLat.lat);\n const right = new LngLat(lngLat.lng + 360, lngLat.lat);\n // Unless offscreen, keep the marker within same wrap distance to center. This is to prevent\n // running it to infinity `lng` near horizon when bearing is ~90°.\n const withinWrap = Math.ceil(Math.abs(lngLat.lng - transform.center.lng) / 360) * 360;\n const delta = transform.locationPoint(lngLat).distSqr(priorPos);\n const offscreen = priorPos.x < 0 || priorPos.y < 0 || priorPos.x > transform.width || priorPos.y > transform.height;\n if (transform.locationPoint(left).distSqr(priorPos) < delta && (offscreen || Math.abs(left.lng - transform.center.lng) < withinWrap)) {\n lngLat = left;\n } else if (transform.locationPoint(right).distSqr(priorPos) < delta && (offscreen || Math.abs(right.lng - transform.center.lng) < withinWrap)) {\n lngLat = right;\n }\n }\n\n // Second, wrap toward the center until the new position is on screen, or we can't get\n // any closer.\n while (Math.abs(lngLat.lng - transform.center.lng) > 180) {\n const pos = transform.locationPoint(lngLat);\n if (pos.x >= 0 && pos.y >= 0 && pos.x <= transform.width && pos.y <= transform.height) {\n break;\n }\n if (lngLat.lng > transform.center.lng) {\n lngLat.lng -= 360;\n } else {\n lngLat.lng += 360;\n }\n }\n\n return lngLat;\n}\n","// @flow\n\nexport type Anchor =\n | 'center'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport const anchorTranslate: {[_: Anchor]: string} = {\n 'center': 'translate(-50%,-50%)',\n 'top': 'translate(-50%,0)',\n 'top-left': 'translate(0,0)',\n 'top-right': 'translate(-100%,0)',\n 'bottom': 'translate(-50%,-100%)',\n 'bottom-left': 'translate(0,-100%)',\n 'bottom-right': 'translate(-100%,-100%)',\n 'left': 'translate(0,-50%)',\n 'right': 'translate(-100%,-50%)'\n};\n","// @flow\n\nimport * as DOM from '../util/dom.js';\nimport window from '../util/window.js';\nimport LngLat from '../geo/lng_lat.js';\nimport Point from '@mapbox/point-geometry';\nimport smartWrap from '../util/smart_wrap.js';\nimport {bindAll, extend, radToDeg, smoothstep} from '../util/util.js';\nimport {type Anchor, anchorTranslate} from './anchor.js';\nimport {Event, Evented} from '../util/evented.js';\nimport type Map from './map.js';\nimport type Popup from './popup.js';\nimport type {LngLatLike} from \"../geo/lng_lat.js\";\nimport type {MapMouseEvent, MapTouchEvent} from './events.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport {globeTiltAtLngLat, globeCenterToScreenPoint, isLngLatBehindGlobe, GLOBE_ZOOM_THRESHOLD_MAX} from '../geo/projection/globe_util.js';\nimport assert from 'assert';\n\ntype Options = {\n element?: HTMLElement,\n offset?: PointLike,\n anchor?: Anchor,\n color?: string,\n scale?: number,\n draggable?: boolean,\n clickTolerance?: number,\n rotation?: number,\n rotationAlignment?: string,\n pitchAlignment?: string,\n occludedOpacity?: number\n};\n\n/**\n * Creates a marker component.\n *\n * @param {Object} [options]\n * @param {HTMLElement} [options.element] DOM element to use as a marker. The default is a light blue, droplet-shaped SVG marker.\n * @param {string} [options.anchor='center'] A string indicating the part of the Marker that should be positioned closest to the coordinate set via {@link Marker#setLngLat}.\n * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`.\n * @param {PointLike} [options.offset] The offset in pixels as a {@link PointLike} object to apply relative to the element's center. Negatives indicate left and up.\n * @param {string} [options.color='#3FB1CE'] The color to use for the default marker if `options.element` is not provided. The default is light blue.\n * @param {number} [options.scale=1] The scale to use for the default marker if `options.element` is not provided. The default scale corresponds to a height of `41px` and a width of `27px`.\n * @param {boolean} [options.draggable=false] A boolean indicating whether or not a marker is able to be dragged to a new position on the map.\n * @param {number} [options.clickTolerance=0] The max number of pixels a user can shift the mouse pointer during a click on the marker for it to be considered a valid click (as opposed to a marker drag). The default is to inherit map's `clickTolerance`.\n * @param {number} [options.rotation=0] The rotation angle of the marker in degrees, relative to its respective `rotationAlignment` setting. A positive value will rotate the marker clockwise.\n * @param {string} [options.pitchAlignment='auto'] `'map'` aligns the `Marker` to the plane of the map. `'viewport'` aligns the `Marker` to the plane of the viewport. `'auto'` automatically matches the value of `rotationAlignment`.\n * @param {string} [options.rotationAlignment='auto'] The alignment of the marker's rotation.`'map'` is aligned with the map plane, consistent with the cardinal directions as the map rotates. `'viewport'` is screenspace-aligned. `'horizon'` is aligned according to the nearest horizon, on non-globe projections it is equivalent to `'viewport'`. `'auto'` is equivalent to `'viewport'`.\n * @param {number} [options.occludedOpacity=0.2] The opacity of a marker that's occluded by 3D terrain.\n * @example\n * // Create a new marker.\n * const marker = new mapboxgl.Marker()\n * .setLngLat([30.5, 50.5])\n * .addTo(map);\n * @example\n * // Set marker options.\n * const marker = new mapboxgl.Marker({\n * color: \"#FFFFFF\",\n * draggable: true\n * }).setLngLat([30.5, 50.5])\n * .addTo(map);\n * @see [Example: Add custom icons with Markers](https://www.mapbox.com/mapbox-gl-js/example/custom-marker-icons/)\n * @see [Example: Create a draggable Marker](https://www.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n */\nexport default class Marker extends Evented {\n _map: ?Map;\n _anchor: Anchor;\n _offset: Point;\n _element: HTMLElement;\n _popup: ?Popup;\n _lngLat: LngLat;\n _pos: ?Point;\n _color: string;\n _scale: number;\n _defaultMarker: boolean;\n _draggable: boolean;\n _clickTolerance: number;\n _isDragging: boolean;\n _state: 'inactive' | 'pending' | 'active'; // used for handling drag events\n _positionDelta: ?Point;\n _pointerdownPos: ?Point;\n _rotation: number;\n _pitchAlignment: string;\n _rotationAlignment: string;\n _originalTabIndex: ?string; // original tabindex of _element\n _fadeTimer: ?TimeoutID;\n _updateFrameId: number;\n _updateMoving: () => void;\n _occludedOpacity: number;\n\n constructor(options?: Options, legacyOptions?: Options) {\n super();\n // For backward compatibility -- the constructor used to accept the element as a\n // required first argument, before it was made optional.\n if (options instanceof window.HTMLElement || legacyOptions) {\n options = extend({element: options}, legacyOptions);\n }\n\n bindAll([\n '_update',\n '_onMove',\n '_onUp',\n '_addDragHandler',\n '_onMapClick',\n '_onKeyPress',\n '_clearFadeTimer'\n ], this);\n\n this._anchor = (options && options.anchor) || 'center';\n this._color = (options && options.color) || '#3FB1CE';\n this._scale = (options && options.scale) || 1;\n this._draggable = (options && options.draggable) || false;\n this._clickTolerance = (options && options.clickTolerance) || 0;\n this._isDragging = false;\n this._state = 'inactive';\n this._rotation = (options && options.rotation) || 0;\n this._rotationAlignment = (options && options.rotationAlignment) || 'auto';\n this._pitchAlignment = (options && options.pitchAlignment && options.pitchAlignment) || 'auto';\n this._updateMoving = () => this._update(true);\n this._occludedOpacity = (options && options.occludedOpacity) || 0.2;\n\n if (!options || !options.element) {\n this._defaultMarker = true;\n this._element = DOM.create('div');\n\n // create default map marker SVG\n\n const DEFAULT_HEIGHT = 41;\n const DEFAULT_WIDTH = 27;\n\n const svg = DOM.createSVG('svg', {\n display: 'block',\n height: `${DEFAULT_HEIGHT * this._scale}px`,\n width: `${DEFAULT_WIDTH * this._scale}px`,\n viewBox: `0 0 ${DEFAULT_WIDTH} ${DEFAULT_HEIGHT}`\n }, this._element);\n\n const gradient = DOM.createSVG('radialGradient', {id: 'shadowGradient'}, DOM.createSVG('defs', {}, svg));\n DOM.createSVG('stop', {offset: '10%', 'stop-opacity': 0.4}, gradient);\n DOM.createSVG('stop', {offset: '100%', 'stop-opacity': 0.05}, gradient);\n DOM.createSVG('ellipse', {cx: 13.5, cy: 34.8, rx: 10.5, ry: 5.25, fill: 'url(#shadowGradient)'}, svg); // shadow\n\n DOM.createSVG('path', { // marker shape\n fill: this._color,\n d: 'M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z'\n }, svg);\n DOM.createSVG('path', { // border\n opacity: 0.25,\n d: 'M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z'\n }, svg);\n\n DOM.createSVG('circle', {fill: 'white', cx: 13.5, cy: 13.5, r: 5.5}, svg); // circle\n\n // if no element and no offset option given apply an offset for the default marker\n // the -14 as the y value of the default marker offset was determined as follows\n //\n // the marker tip is at the center of the shadow ellipse from the default svg\n // the y value of the center of the shadow ellipse relative to the svg top left is 34.8\n // offset to the svg center \"height (41 / 2)\" gives 34.8 - (41 / 2) and rounded for an integer pixel offset gives 14\n // negative is used to move the marker up from the center so the tip is at the Marker lngLat\n this._offset = Point.convert((options && options.offset) || [0, -14]);\n } else {\n this._element = options.element;\n this._offset = Point.convert((options && options.offset) || [0, 0]);\n }\n\n if (!this._element.hasAttribute('aria-label')) this._element.setAttribute('aria-label', 'Map marker');\n this._element.classList.add('mapboxgl-marker');\n this._element.addEventListener('dragstart', (e: DragEvent) => {\n e.preventDefault();\n });\n this._element.addEventListener('mousedown', (e: MouseEvent) => {\n // prevent focusing on click\n e.preventDefault();\n });\n const classList = this._element.classList;\n for (const key in anchorTranslate) {\n classList.remove(`mapboxgl-marker-anchor-${key}`);\n }\n classList.add(`mapboxgl-marker-anchor-${this._anchor}`);\n\n this._popup = null;\n }\n\n /**\n * Attaches the `Marker` to a `Map` object.\n *\n * @param {Map} map The Mapbox GL JS map to add the marker to.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([30.5, 50.5])\n * .addTo(map); // add the marker to the map\n */\n addTo(map: Map): this {\n if (map === this._map) {\n return this;\n }\n this.remove();\n this._map = map;\n map.getCanvasContainer().appendChild(this._element);\n map.on('move', this._updateMoving);\n // $FlowFixMe[method-unbinding]\n map.on('moveend', this._update);\n // $FlowFixMe[method-unbinding]\n map.on('remove', this._clearFadeTimer);\n map._addMarker(this);\n this.setDraggable(this._draggable);\n this._update();\n\n // If we attached the `click` listener to the marker element, the popup\n // would close once the event propogated to `map` due to the\n // `Popup#_onClickClose` listener.\n // $FlowFixMe[method-unbinding]\n map.on('click', this._onMapClick);\n\n return this;\n }\n\n /**\n * Removes the marker from a map.\n *\n * @example\n * const marker = new mapboxgl.Marker().addTo(map);\n * marker.remove();\n * @returns {Marker} Returns itself to allow for method chaining.\n */\n remove(): this {\n const map = this._map;\n if (map) {\n // $FlowFixMe[method-unbinding]\n map.off('click', this._onMapClick);\n map.off('move', this._updateMoving);\n // $FlowFixMe[method-unbinding]\n map.off('moveend', this._update);\n // $FlowFixMe[method-unbinding]\n map.off('mousedown', this._addDragHandler);\n // $FlowFixMe[method-unbinding]\n map.off('touchstart', this._addDragHandler);\n // $FlowFixMe[method-unbinding]\n map.off('mouseup', this._onUp);\n // $FlowFixMe[method-unbinding]\n map.off('touchend', this._onUp);\n // $FlowFixMe[method-unbinding]\n map.off('mousemove', this._onMove);\n // $FlowFixMe[method-unbinding]\n map.off('touchmove', this._onMove);\n // $FlowFixMe[method-unbinding]\n map.off('remove', this._clearFadeTimer);\n map._removeMarker(this);\n this._map = undefined;\n }\n this._clearFadeTimer();\n this._element.remove();\n if (this._popup) this._popup.remove();\n return this;\n }\n\n /**\n * Get the marker's geographical location.\n *\n * The longitude of the result may differ by a multiple of 360 degrees from the longitude previously\n * set by `setLngLat` because `Marker` wraps the anchor longitude across copies of the world to keep\n * the marker on screen.\n *\n * @returns {LngLat} A {@link LngLat} describing the marker's location.\n * @example\n * // Store the marker's longitude and latitude coordinates in a variable\n * const lngLat = marker.getLngLat();\n * // Print the marker's longitude and latitude values in the console\n * console.log(`Longitude: ${lngLat.lng}, Latitude: ${lngLat.lat}`);\n * @see [Example: Create a draggable Marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n */\n getLngLat(): LngLat {\n return this._lngLat;\n }\n\n /**\n * Set the marker's geographical position and move it.\n *\n * @param {LngLat} lnglat A {@link LngLat} describing where the marker should be located.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * // Create a new marker, set the longitude and latitude, and add it to the map.\n * new mapboxgl.Marker()\n * .setLngLat([-65.017, -16.457])\n * .addTo(map);\n * @see [Example: Add custom icons with Markers](https://docs.mapbox.com/mapbox-gl-js/example/custom-marker-icons/)\n * @see [Example: Create a draggable Marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n * @see [Example: Add a marker using a place name](https://docs.mapbox.com/mapbox-gl-js/example/marker-from-geocode/)\n */\n setLngLat(lnglat: LngLatLike): this {\n this._lngLat = LngLat.convert(lnglat);\n this._pos = null;\n if (this._popup) this._popup.setLngLat(this._lngLat);\n this._update(true);\n return this;\n }\n\n /**\n * Returns the `Marker`'s HTML element.\n *\n * @returns {HTMLElement} Returns the marker element.\n * @example\n * const element = marker.getElement();\n */\n getElement(): HTMLElement {\n return this._element;\n }\n\n /**\n * Binds a {@link Popup} to the {@link Marker}.\n *\n * @param {Popup | null} popup An instance of the {@link Popup} class. If undefined or null, any popup\n * set on this {@link Marker} instance is unset.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([0, 0])\n * .setPopup(new mapboxgl.Popup().setHTML(\"

Hello World!

\")) // add popup\n * .addTo(map);\n * @see [Example: Attach a popup to a marker instance](https://docs.mapbox.com/mapbox-gl-js/example/set-popup/)\n */\n setPopup(popup: ?Popup): this {\n if (this._popup) {\n this._popup.remove();\n this._popup = null;\n this._element.removeAttribute('role');\n // $FlowFixMe[method-unbinding]\n this._element.removeEventListener('keypress', this._onKeyPress);\n\n if (!this._originalTabIndex) {\n this._element.removeAttribute('tabindex');\n }\n }\n\n if (popup) {\n if (!('offset' in popup.options)) {\n const markerHeight = 41 - (5.8 / 2);\n const markerRadius = 13.5;\n const linearOffset = Math.sqrt(Math.pow(markerRadius, 2) / 2);\n popup.options.offset = this._defaultMarker ? {\n 'top': [0, 0],\n 'top-left': [0, 0],\n 'top-right': [0, 0],\n 'bottom': [0, -markerHeight],\n 'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n 'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n 'left': [markerRadius, (markerHeight - markerRadius) * -1],\n 'right': [-markerRadius, (markerHeight - markerRadius) * -1]\n } : this._offset;\n }\n this._popup = popup;\n popup._marker = this;\n if (this._lngLat) this._popup.setLngLat(this._lngLat);\n\n this._element.setAttribute('role', 'button');\n this._originalTabIndex = this._element.getAttribute('tabindex');\n if (!this._originalTabIndex) {\n this._element.setAttribute('tabindex', '0');\n }\n // $FlowFixMe[method-unbinding]\n this._element.addEventListener('keypress', this._onKeyPress);\n this._element.setAttribute('aria-expanded', 'false');\n }\n\n return this;\n }\n\n _onKeyPress(e: KeyboardEvent) {\n const code = e.code;\n const legacyCode = e.charCode || e.keyCode;\n\n if (\n (code === 'Space') || (code === 'Enter') ||\n (legacyCode === 32) || (legacyCode === 13) // space or enter\n ) {\n this.togglePopup();\n }\n }\n\n _onMapClick(e: MapMouseEvent) {\n const targetElement = e.originalEvent.target;\n const element = this._element;\n\n if (this._popup && (targetElement === element || element.contains((targetElement: any)))) {\n this.togglePopup();\n }\n }\n\n /**\n * Returns the {@link Popup} instance that is bound to the {@link Marker}.\n *\n * @returns {Popup} Returns the popup.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([0, 0])\n * .setPopup(new mapboxgl.Popup().setHTML(\"

Hello World!

\"))\n * .addTo(map);\n *\n * console.log(marker.getPopup()); // return the popup instance\n */\n getPopup(): ?Popup {\n return this._popup;\n }\n\n /**\n * Opens or closes the {@link Popup} instance that is bound to the {@link Marker}, depending on the current state of the {@link Popup}.\n *\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([0, 0])\n * .setPopup(new mapboxgl.Popup().setHTML(\"

Hello World!

\"))\n * .addTo(map);\n *\n * marker.togglePopup(); // toggle popup open or closed\n */\n togglePopup(): this {\n const popup = this._popup;\n if (!popup) {\n return this;\n } else if (popup.isOpen()) {\n popup.remove();\n this._element.setAttribute('aria-expanded', 'false');\n } else if (this._map) {\n popup.addTo(this._map);\n this._element.setAttribute('aria-expanded', 'true');\n }\n return this;\n }\n\n _behindTerrain(): boolean {\n const map = this._map;\n const pos = this._pos;\n if (!map || !pos) return false;\n const unprojected = map.unproject(pos);\n const camera = map.getFreeCameraOptions();\n if (!camera.position) return false;\n const cameraLngLat = camera.position.toLngLat();\n const toClosestSurface = cameraLngLat.distanceTo(unprojected);\n const toMarker = cameraLngLat.distanceTo(this._lngLat);\n return toClosestSurface < toMarker * 0.9;\n\n }\n\n _evaluateOpacity() {\n const map = this._map;\n if (!map) return;\n\n const pos = this._pos;\n\n if (!pos || pos.x < 0 || pos.x > map.transform.width || pos.y < 0 || pos.y > map.transform.height) {\n this._clearFadeTimer();\n return;\n }\n const mapLocation = map.unproject(pos);\n let opacity;\n if (map._showingGlobe() && isLngLatBehindGlobe(map.transform, this._lngLat)) {\n opacity = 0;\n } else {\n opacity = 1 - map._queryFogOpacity(mapLocation);\n if (map.transform._terrainEnabled() && map.getTerrain() && this._behindTerrain()) {\n opacity *= this._occludedOpacity;\n }\n }\n\n this._element.style.opacity = `${opacity}`;\n this._element.style.pointerEvents = opacity > 0 ? 'auto' : 'none';\n if (this._popup) {\n this._popup._setOpacity(opacity);\n }\n\n this._fadeTimer = null;\n }\n\n _clearFadeTimer() {\n if (this._fadeTimer) {\n clearTimeout(this._fadeTimer);\n this._fadeTimer = null;\n }\n }\n\n _updateDOM() {\n const pos = this._pos;\n const map = this._map;\n if (!pos || !map) { return; }\n\n const offset = this._offset.mult(this._scale);\n\n this._element.style.transform = `\n translate(${pos.x}px,${pos.y}px)\n ${anchorTranslate[this._anchor]}\n ${this._calculateXYTransform()} ${this._calculateZTransform()}\n translate(${offset.x}px,${offset.y}px)\n `;\n }\n\n _calculateXYTransform(): string {\n const pos = this._pos;\n const map = this._map;\n const alignment = this.getPitchAlignment();\n\n // `viewport', 'auto' and invalid arugments do no pitch transformation.\n if (!map || !pos || alignment !== 'map') {\n return ``;\n }\n // 'map' alignment on a flat map\n if (!map._showingGlobe()) {\n const pitch = map.getPitch();\n return pitch ? `rotateX(${pitch}deg)` : '';\n }\n // 'map' alignment on globe\n const tilt = radToDeg(globeTiltAtLngLat(map.transform, this._lngLat));\n const posFromCenter = pos.sub(globeCenterToScreenPoint(map.transform));\n const manhattanDistance = (Math.abs(posFromCenter.x) + Math.abs(posFromCenter.y));\n if (manhattanDistance === 0) { return ''; }\n\n const tiltOverDist = tilt / manhattanDistance;\n const yTilt = posFromCenter.x * tiltOverDist;\n const xTilt = -posFromCenter.y * tiltOverDist;\n return `rotateX(${xTilt}deg) rotateY(${yTilt}deg)`;\n\n }\n\n _calculateZTransform(): string {\n\n const pos = this._pos;\n const map = this._map;\n if (!map || !pos) { return ''; }\n\n let rotation = 0;\n const alignment = this.getRotationAlignment();\n if (alignment === 'map') {\n if (map._showingGlobe()) {\n const north = map.project(new LngLat(this._lngLat.lng, this._lngLat.lat + .001));\n const south = map.project(new LngLat(this._lngLat.lng, this._lngLat.lat - .001));\n const diff = south.sub(north);\n rotation = radToDeg(Math.atan2(diff.y, diff.x)) - 90;\n } else {\n rotation = -map.getBearing();\n }\n } else if (alignment === 'horizon') {\n const ALIGN_TO_HORIZON_BELOW_ZOOM = 4;\n const ALIGN_TO_SCREEN_ABOVE_ZOOM = 6;\n assert(ALIGN_TO_SCREEN_ABOVE_ZOOM <= GLOBE_ZOOM_THRESHOLD_MAX, 'Horizon-oriented marker transition should be complete when globe switches to Mercator');\n assert(ALIGN_TO_HORIZON_BELOW_ZOOM <= ALIGN_TO_SCREEN_ABOVE_ZOOM);\n\n const smooth = smoothstep(ALIGN_TO_HORIZON_BELOW_ZOOM, ALIGN_TO_SCREEN_ABOVE_ZOOM, map.getZoom());\n\n const centerPoint = globeCenterToScreenPoint(map.transform);\n centerPoint.y += smooth * map.transform.height;\n const rel = pos.sub(centerPoint);\n const angle = radToDeg(Math.atan2(rel.y, rel.x));\n const up = angle > 90 ? angle - 270 : angle + 90;\n rotation = up * (1 - smooth);\n }\n\n rotation += this._rotation;\n return rotation ? `rotateZ(${rotation}deg)` : '';\n }\n\n _update(delaySnap?: boolean) {\n window.cancelAnimationFrame(this._updateFrameId);\n const map = this._map;\n if (!map) return;\n\n if (map.transform.renderWorldCopies) {\n this._lngLat = smartWrap(this._lngLat, this._pos, map.transform);\n }\n\n this._pos = map.project(this._lngLat);\n\n // because rounding the coordinates at every `move` event causes stuttered zooming\n // we only round them when _update is called with `moveend` or when its called with\n // no arguments (when the Marker is initialized or Marker#setLngLat is invoked).\n if (delaySnap === true) {\n this._updateFrameId = window.requestAnimationFrame(() => {\n if (this._element && this._pos && this._anchor) {\n this._pos = this._pos.round();\n this._updateDOM();\n }\n });\n } else {\n this._pos = this._pos.round();\n }\n\n map._requestDomTask(() => {\n if (!this._map) return;\n\n if (this._element && this._pos && this._anchor) {\n this._updateDOM();\n }\n\n if ((map._showingGlobe() || map.getTerrain() || map.getFog()) && !this._fadeTimer) {\n // $FlowFixMe[method-unbinding]\n this._fadeTimer = setTimeout(this._evaluateOpacity.bind(this), 60);\n }\n });\n }\n\n /**\n * Get the marker's offset.\n *\n * @returns {Point} The marker's screen coordinates in pixels.\n * @example\n * const offset = marker.getOffset();\n */\n getOffset(): Point {\n return this._offset;\n }\n\n /**\n * Sets the offset of the marker.\n *\n * @param {PointLike} offset The offset in pixels as a {@link PointLike} object to apply relative to the element's center. Negatives indicate left and up.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setOffset([0, 1]);\n */\n setOffset(offset: PointLike): this {\n this._offset = Point.convert(offset);\n this._update();\n return this;\n }\n\n _onMove(e: MapMouseEvent | MapTouchEvent) {\n const map = this._map;\n if (!map) return;\n\n const startPos = this._pointerdownPos;\n const posDelta = this._positionDelta;\n if (!startPos || !posDelta) return;\n\n if (!this._isDragging) {\n const clickTolerance = this._clickTolerance || map._clickTolerance;\n if (e.point.dist(startPos) < clickTolerance) return;\n this._isDragging = true;\n }\n\n this._pos = e.point.sub(posDelta);\n this._lngLat = map.unproject(this._pos);\n this.setLngLat(this._lngLat);\n // suppress click event so that popups don't toggle on drag\n this._element.style.pointerEvents = 'none';\n\n // make sure dragstart only fires on the first move event after mousedown.\n // this can't be on mousedown because that event doesn't necessarily\n // imply that a drag is about to happen.\n if (this._state === 'pending') {\n this._state = 'active';\n\n /**\n * Fired when dragging starts.\n *\n * @event dragstart\n * @memberof Marker\n * @instance\n * @type {Object}\n * @property {Marker} marker The object that is being dragged.\n */\n this.fire(new Event('dragstart'));\n }\n\n /**\n * Fired while dragging.\n *\n * @event drag\n * @memberof Marker\n * @instance\n * @type {Object}\n * @property {Marker} marker The object that is being dragged.\n */\n this.fire(new Event('drag'));\n }\n\n _onUp() {\n // revert to normal pointer event handling\n this._element.style.pointerEvents = 'auto';\n this._positionDelta = null;\n this._pointerdownPos = null;\n this._isDragging = false;\n\n const map = this._map;\n if (map) {\n // $FlowFixMe[method-unbinding]\n map.off('mousemove', this._onMove);\n // $FlowFixMe[method-unbinding]\n map.off('touchmove', this._onMove);\n }\n\n // only fire dragend if it was preceded by at least one drag event\n if (this._state === 'active') {\n /**\n * Fired when the marker is finished being dragged.\n *\n * @event dragend\n * @memberof Marker\n * @instance\n * @type {Object}\n * @property {Marker} marker The object that was dragged.\n */\n this.fire(new Event('dragend'));\n }\n\n this._state = 'inactive';\n }\n\n _addDragHandler(e: MapMouseEvent | MapTouchEvent) {\n const map = this._map;\n const pos = this._pos;\n if (!map || !pos) return;\n\n if (this._element.contains((e.originalEvent.target: any))) {\n e.preventDefault();\n\n // We need to calculate the pixel distance between the click point\n // and the marker position, with the offset accounted for. Then we\n // can subtract this distance from the mousemove event's position\n // to calculate the new marker position.\n // If we don't do this, the marker 'jumps' to the click position\n // creating a jarring UX effect.\n this._positionDelta = e.point.sub(pos);\n this._pointerdownPos = e.point;\n\n this._state = 'pending';\n // $FlowFixMe[method-unbinding]\n map.on('mousemove', this._onMove);\n // $FlowFixMe[method-unbinding]\n map.on('touchmove', this._onMove);\n // $FlowFixMe[method-unbinding]\n map.once('mouseup', this._onUp);\n // $FlowFixMe[method-unbinding]\n map.once('touchend', this._onUp);\n }\n }\n\n /**\n * Sets the `draggable` property and functionality of the marker.\n *\n * @param {boolean} [shouldBeDraggable=false] Turns drag functionality on/off.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setDraggable(true);\n */\n setDraggable(shouldBeDraggable: boolean): this {\n this._draggable = !!shouldBeDraggable; // convert possible undefined value to false\n\n // handle case where map may not exist yet\n // for example, when setDraggable is called before addTo\n const map = this._map;\n if (map) {\n if (shouldBeDraggable) {\n // $FlowFixMe[method-unbinding]\n map.on('mousedown', this._addDragHandler);\n // $FlowFixMe[method-unbinding]\n map.on('touchstart', this._addDragHandler);\n } else {\n // $FlowFixMe[method-unbinding]\n map.off('mousedown', this._addDragHandler);\n // $FlowFixMe[method-unbinding]\n map.off('touchstart', this._addDragHandler);\n }\n }\n\n return this;\n }\n\n /**\n * Returns true if the marker can be dragged.\n *\n * @returns {boolean} True if the marker is draggable.\n * @example\n * const isMarkerDraggable = marker.isDraggable();\n */\n isDraggable(): boolean {\n return this._draggable;\n }\n\n /**\n * Sets the `rotation` property of the marker.\n *\n * @param {number} [rotation=0] The rotation angle of the marker (clockwise, in degrees), relative to its respective {@link Marker#setRotationAlignment} setting.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setRotation(45);\n */\n setRotation(rotation: number): this {\n this._rotation = rotation || 0;\n this._update();\n return this;\n }\n\n /**\n * Returns the current rotation angle of the marker (in degrees).\n *\n * @returns {number} The current rotation angle of the marker.\n * @example\n * const rotation = marker.getRotation();\n */\n getRotation(): number {\n return this._rotation;\n }\n\n /**\n * Sets the `rotationAlignment` property of the marker.\n *\n * @param {string} [alignment='auto'] Sets the `rotationAlignment` property of the marker.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setRotationAlignment('viewport');\n */\n setRotationAlignment(alignment: string): this {\n this._rotationAlignment = alignment || 'auto';\n this._update();\n return this;\n }\n\n /**\n * Returns the current `rotationAlignment` property of the marker.\n *\n * @returns {string} The current rotational alignment of the marker.\n * @example\n * const alignment = marker.getRotationAlignment();\n */\n getRotationAlignment(): string {\n if (this._rotationAlignment === 'auto')\n return 'viewport';\n if (this._rotationAlignment === 'horizon' && this._map && !this._map._showingGlobe())\n return 'viewport';\n return this._rotationAlignment;\n }\n\n /**\n * Sets the `pitchAlignment` property of the marker.\n *\n * @param {string} [alignment] Sets the `pitchAlignment` property of the marker. If alignment is 'auto', it will automatically match `rotationAlignment`.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setPitchAlignment('map');\n */\n setPitchAlignment(alignment: string): this {\n this._pitchAlignment = alignment || 'auto';\n this._update();\n return this;\n }\n\n /**\n * Returns the current `pitchAlignment` behavior of the marker.\n *\n * @returns {string} The current pitch alignment of the marker.\n * @example\n * const alignment = marker.getPitchAlignment();\n */\n getPitchAlignment(): string {\n if (this._pitchAlignment === 'auto') {\n return this.getRotationAlignment();\n }\n return this._pitchAlignment;\n }\n\n /**\n * Sets the `occludedOpacity` property of the marker.\n * This opacity is used on the marker when the marker is occluded by terrain.\n *\n * @param {number} [opacity=0.2] Sets the `occludedOpacity` property of the marker.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setOccludedOpacity(0.3);\n */\n setOccludedOpacity(opacity: number): this {\n this._occludedOpacity = opacity || 0.2;\n this._update();\n return this;\n }\n\n /**\n * Returns the current `occludedOpacity` of the marker.\n *\n * @returns {number} The opacity of a terrain occluded marker.\n * @example\n * const opacity = marker.getOccludedOpacity();\n */\n getOccludedOpacity(): number {\n return this._occludedOpacity;\n }\n}\n","// @flow\n\nimport {extend, bindAll} from '../util/util.js';\nimport {Event, Evented} from '../util/evented.js';\nimport {MapMouseEvent} from '../ui/events.js';\nimport * as DOM from '../util/dom.js';\nimport LngLat from '../geo/lng_lat.js';\nimport Point from '@mapbox/point-geometry';\nimport window from '../util/window.js';\nimport smartWrap from '../util/smart_wrap.js';\nimport {type Anchor, anchorTranslate} from './anchor.js';\nimport {isLngLatBehindGlobe} from '../geo/projection/globe_util.js';\n\nimport type Map from './map.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type Marker from './marker.js';\n\nconst defaultOptions = {\n closeButton: true,\n closeOnClick: true,\n focusAfterOpen: true,\n className: '',\n maxWidth: \"240px\"\n};\n\nexport type Offset = number | PointLike | {[_: Anchor]: PointLike};\n\nexport type PopupOptions = {\n closeButton?: boolean,\n closeOnClick?: boolean,\n closeOnMove?: boolean,\n focusAfterOpen?: boolean,\n anchor?: Anchor,\n offset?: Offset,\n className?: string,\n maxWidth?: string\n};\n\nconst focusQuerySelector = [\n \"a[href]\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n].join(\", \");\n\n/**\n * A popup component.\n *\n * @param {Object} [options]\n * @param {boolean} [options.closeButton=true] If `true`, a close button will appear in the\n * top right corner of the popup.\n * @param {boolean} [options.closeOnClick=true] If `true`, the popup will close when the\n * map is clicked.\n * @param {boolean} [options.closeOnMove=false] If `true`, the popup will close when the\n * map moves.\n * @param {boolean} [options.focusAfterOpen=true] If `true`, the popup will try to focus the\n * first focusable element inside the popup.\n * @param {string} [options.anchor] - A string indicating the part of the popup that should\n * be positioned closest to the coordinate, set via {@link Popup#setLngLat}.\n * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`,\n * `'top-right'`, `'bottom-left'`, and `'bottom-right'`. If unset, the anchor will be\n * dynamically set to ensure the popup falls within the map container with a preference\n * for `'bottom'`.\n * @param {number | PointLike | Object} [options.offset] -\n * A pixel offset applied to the popup's location specified as:\n * - a single number specifying a distance from the popup's location\n * - a {@link PointLike} specifying a constant offset\n * - an object of {@link Point}s specifing an offset for each anchor position.\n *\n * Negative offsets indicate left and up.\n * @param {string} [options.className] Space-separated CSS class names to add to popup container.\n * @param {string} [options.maxWidth='240px'] -\n * A string that sets the CSS property of the popup's maximum width (for example, `'300px'`).\n * To ensure the popup resizes to fit its content, set this property to `'none'`.\n * See the MDN documentation for the list of [available values](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width).\n * @example\n * const markerHeight = 50;\n * const markerRadius = 10;\n * const linearOffset = 25;\n * const popupOffsets = {\n * 'top': [0, 0],\n * 'top-left': [0, 0],\n * 'top-right': [0, 0],\n * 'bottom': [0, -markerHeight],\n * 'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n * 'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n * 'left': [markerRadius, (markerHeight - markerRadius) * -1],\n * 'right': [-markerRadius, (markerHeight - markerRadius) * -1]\n * };\n * const popup = new mapboxgl.Popup({offset: popupOffsets, className: 'my-class'})\n * .setLngLat(e.lngLat)\n * .setHTML(\"

Hello World!

\")\n * .setMaxWidth(\"300px\")\n * .addTo(map);\n * @see [Example: Display a popup](https://www.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Display a popup on click](https://www.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Attach a popup to a marker instance](https://www.mapbox.com/mapbox-gl-js/example/set-popup/)\n */\nexport default class Popup extends Evented {\n _map: ?Map;\n options: PopupOptions;\n _content: ?HTMLElement;\n _container: ?HTMLElement;\n _closeButton: ?HTMLElement;\n _tip: ?HTMLElement;\n _lngLat: LngLat;\n _trackPointer: boolean;\n _pos: ?Point;\n _anchor: Anchor;\n _classList: Set;\n _marker: ?Marker;\n\n constructor(options: PopupOptions) {\n super();\n this.options = extend(Object.create(defaultOptions), options);\n bindAll(['_update', '_onClose', 'remove', '_onMouseEvent'], this);\n this._classList = new Set(options && options.className ?\n options.className.trim().split(/\\s+/) : []);\n }\n\n /**\n * Adds the popup to a map.\n *\n * @param {Map} map The Mapbox GL JS map to add the popup to.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * new mapboxgl.Popup()\n * .setLngLat([0, 0])\n * .setHTML(\"

Null Island

\")\n * .addTo(map);\n * @see [Example: Display a popup](https://docs.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Display a popup on hover](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Show polygon information on click](https://docs.mapbox.com/mapbox-gl-js/example/polygon-popup-on-click/)\n */\n addTo(map: Map): this {\n if (this._map) this.remove();\n\n this._map = map;\n if (this.options.closeOnClick) {\n // $FlowFixMe[method-unbinding]\n map.on('preclick', this._onClose);\n }\n\n if (this.options.closeOnMove) {\n // $FlowFixMe[method-unbinding]\n map.on('move', this._onClose);\n }\n\n // $FlowFixMe[method-unbinding]\n map.on('remove', this.remove);\n this._update();\n map._addPopup(this);\n this._focusFirstElement();\n\n if (this._trackPointer) {\n // $FlowFixMe[method-unbinding]\n map.on('mousemove', this._onMouseEvent);\n // $FlowFixMe[method-unbinding]\n map.on('mouseup', this._onMouseEvent);\n map._canvasContainer.classList.add('mapboxgl-track-pointer');\n } else {\n // $FlowFixMe[method-unbinding]\n map.on('move', this._update);\n }\n\n /**\n * Fired when the popup is opened manually or programatically.\n *\n * @event open\n * @memberof Popup\n * @instance\n * @type {Object}\n * @property {Popup} popup Object that was opened.\n *\n * @example\n * // Create a popup\n * const popup = new mapboxgl.Popup();\n * // Set an event listener that will fire\n * // any time the popup is opened\n * popup.on('open', () => {\n * console.log('popup was opened');\n * });\n *\n */\n this.fire(new Event('open'));\n\n return this;\n }\n\n /**\n * Checks if a popup is open.\n *\n * @returns {boolean} `true` if the popup is open, `false` if it is closed.\n * @example\n * const isPopupOpen = popup.isOpen();\n */\n isOpen(): boolean {\n return !!this._map;\n }\n\n /**\n * Removes the popup from the map it has been added to.\n *\n * @example\n * const popup = new mapboxgl.Popup().addTo(map);\n * popup.remove();\n * @returns {Popup} Returns itself to allow for method chaining.\n */\n remove(): this {\n if (this._content) {\n this._content.remove();\n }\n\n if (this._container) {\n this._container.remove();\n this._container = undefined;\n }\n\n const map = this._map;\n if (map) {\n // $FlowFixMe[method-unbinding]\n map.off('move', this._update);\n // $FlowFixMe[method-unbinding]\n map.off('move', this._onClose);\n // $FlowFixMe[method-unbinding]\n map.off('preclick', this._onClose);\n // $FlowFixMe[method-unbinding]\n map.off('click', this._onClose);\n // $FlowFixMe[method-unbinding]\n map.off('remove', this.remove);\n // $FlowFixMe[method-unbinding]\n map.off('mousemove', this._onMouseEvent);\n // $FlowFixMe[method-unbinding]\n map.off('mouseup', this._onMouseEvent);\n // $FlowFixMe[method-unbinding]\n map.off('drag', this._onMouseEvent);\n if (map._canvasContainer) {\n map._canvasContainer.classList.remove('mapboxgl-track-pointer');\n }\n map._removePopup(this);\n this._map = undefined;\n }\n\n /**\n * Fired when the popup is closed manually or programatically.\n *\n * @event close\n * @memberof Popup\n * @instance\n * @type {Object}\n * @property {Popup} popup Object that was closed.\n *\n * @example\n * // Create a popup\n * const popup = new mapboxgl.Popup();\n * // Set an event listener that will fire\n * // any time the popup is closed\n * popup.on('close', () => {\n * console.log('popup was closed');\n * });\n *\n */\n this.fire(new Event('close'));\n\n return this;\n }\n\n /**\n * Returns the geographical location of the popup's anchor.\n *\n * The longitude of the result may differ by a multiple of 360 degrees from the longitude previously\n * set by `setLngLat` because `Popup` wraps the anchor longitude across copies of the world to keep\n * the popup on screen.\n *\n * @returns {LngLat} The geographical location of the popup's anchor.\n * @example\n * const lngLat = popup.getLngLat();\n */\n getLngLat(): LngLat {\n return this._lngLat;\n }\n\n /**\n * Sets the geographical location of the popup's anchor, and moves the popup to it. Replaces trackPointer() behavior.\n *\n * @param {LngLatLike} lnglat The geographical location to set as the popup's anchor.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * popup.setLngLat([-122.4194, 37.7749]);\n */\n setLngLat(lnglat: LngLatLike): this {\n this._lngLat = LngLat.convert(lnglat);\n this._pos = null;\n\n this._trackPointer = false;\n\n this._update();\n\n const map = this._map;\n if (map) {\n // $FlowFixMe[method-unbinding]\n map.on('move', this._update);\n // $FlowFixMe[method-unbinding]\n map.off('mousemove', this._onMouseEvent);\n map._canvasContainer.classList.remove('mapboxgl-track-pointer');\n }\n\n return this;\n }\n\n /**\n * Tracks the popup anchor to the cursor position on screens with a pointer device (it will be hidden on touchscreens). Replaces the `setLngLat` behavior.\n * For most use cases, set `closeOnClick` and `closeButton` to `false`.\n *\n * @example\n * const popup = new mapboxgl.Popup({closeOnClick: false, closeButton: false})\n * .setHTML(\"

Hello World!

\")\n * .trackPointer()\n * .addTo(map);\n * @returns {Popup} Returns itself to allow for method chaining.\n */\n trackPointer(): this {\n this._trackPointer = true;\n this._pos = null;\n this._update();\n const map = this._map;\n if (map) {\n // $FlowFixMe[method-unbinding]\n map.off('move', this._update);\n // $FlowFixMe[method-unbinding]\n map.on('mousemove', this._onMouseEvent);\n // $FlowFixMe[method-unbinding]\n map.on('drag', this._onMouseEvent);\n map._canvasContainer.classList.add('mapboxgl-track-pointer');\n }\n\n return this;\n\n }\n\n /**\n * Returns the `Popup`'s HTML element.\n *\n * @example\n * // Change the `Popup` element's font size\n * const popup = new mapboxgl.Popup()\n * .setLngLat([-96, 37.8])\n * .setHTML(\"

Hello World!

\")\n * .addTo(map);\n * const popupElem = popup.getElement();\n * popupElem.style.fontSize = \"25px\";\n * @returns {HTMLElement} Returns container element.\n */\n getElement(): ?HTMLElement {\n return this._container;\n }\n\n /**\n * Sets the popup's content to a string of text.\n *\n * This function creates a [Text](https://developer.mozilla.org/en-US/docs/Web/API/Text) node in the DOM,\n * so it cannot insert raw HTML. Use this method for security against XSS\n * if the popup content is user-provided.\n *\n * @param {string} text Textual content for the popup.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * const popup = new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setText('Hello, world!')\n * .addTo(map);\n */\n setText(text: string): this {\n return this.setDOMContent(window.document.createTextNode(text));\n }\n\n /**\n * Sets the popup's content to the HTML provided as a string.\n *\n * This method does not perform HTML filtering or sanitization, and must be\n * used only with trusted content. Consider {@link Popup#setText} if\n * the content is an untrusted text string.\n *\n * @param {string} html A string representing HTML content for the popup.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * const popup = new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setHTML(\"

Hello World!

\")\n * .addTo(map);\n * @see [Example: Display a popup](https://docs.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Display a popup on hover](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Attach a popup to a marker instance](https://docs.mapbox.com/mapbox-gl-js/example/set-popup/)\n */\n setHTML(html: string): this {\n const frag = window.document.createDocumentFragment();\n const temp = window.document.createElement('body');\n let child;\n temp.innerHTML = html;\n while (true) {\n child = temp.firstChild;\n if (!child) break;\n frag.appendChild(child);\n }\n\n return this.setDOMContent(frag);\n }\n\n /**\n * Returns the popup's maximum width.\n *\n * @returns {string} The maximum width of the popup.\n * @example\n * const maxWidth = popup.getMaxWidth();\n */\n getMaxWidth(): ?string {\n return this._container && this._container.style.maxWidth;\n }\n\n /**\n * Sets the popup's maximum width. This is setting the CSS property `max-width`.\n * Available values can be found here: https://developer.mozilla.org/en-US/docs/Web/CSS/max-width.\n *\n * @param {string} maxWidth A string representing the value for the maximum width.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * popup.setMaxWidth('50');\n */\n setMaxWidth(maxWidth: string): this {\n this.options.maxWidth = maxWidth;\n this._update();\n return this;\n }\n\n /**\n * Sets the popup's content to the element provided as a DOM node.\n *\n * @param {Element} htmlNode A DOM node to be used as content for the popup.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * // create an element with the popup content\n * const div = window.document.createElement('div');\n * div.innerHTML = 'Hello, world!';\n * const popup = new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setDOMContent(div)\n * .addTo(map);\n */\n setDOMContent(htmlNode: Node): this {\n let content = this._content;\n if (content) {\n // Clear out children first.\n while (content.hasChildNodes()) {\n if (content.firstChild) {\n content.removeChild(content.firstChild);\n }\n }\n } else {\n content = this._content = DOM.create('div', 'mapboxgl-popup-content', this._container || undefined);\n }\n\n // The close button should be the last tabbable element inside the popup for a good keyboard UX.\n content.appendChild(htmlNode);\n\n if (this.options.closeButton) {\n const button = this._closeButton = DOM.create('button', 'mapboxgl-popup-close-button', content);\n button.type = 'button';\n button.setAttribute('aria-label', 'Close popup');\n button.setAttribute('aria-hidden', 'true');\n button.innerHTML = '×';\n // $FlowFixMe[method-unbinding]\n button.addEventListener('click', this._onClose);\n }\n this._update();\n this._focusFirstElement();\n return this;\n }\n\n /**\n * Adds a CSS class to the popup container element.\n *\n * @param {string} className Non-empty string with CSS class name to add to popup container.\n * @returns {Popup} Returns itself to allow for method chaining.\n *\n * @example\n * const popup = new mapboxgl.Popup();\n * popup.addClassName('some-class');\n */\n addClassName(className: string): this {\n this._classList.add(className);\n this._updateClassList();\n return this;\n }\n\n /**\n * Removes a CSS class from the popup container element.\n *\n * @param {string} className Non-empty string with CSS class name to remove from popup container.\n *\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * const popup = new mapboxgl.Popup({className: 'some classes'});\n * popup.removeClassName('some');\n */\n removeClassName(className: string): this {\n this._classList.delete(className);\n this._updateClassList();\n return this;\n }\n\n /**\n * Sets the popup's offset.\n *\n * @param {number | PointLike | Object} offset Sets the popup's offset. The `Object` is of the following structure\n * {\n * 'center': ?PointLike,\n * 'top': ?PointLike,\n * 'bottom': ?PointLike,\n * 'left': ?PointLike,\n * 'right': ?PointLike,\n * 'top-left': ?PointLike,\n * 'top-right': ?PointLike,\n * 'bottom-left': ?PointLike,\n * 'bottom-right': ?PointLike\n * }.\n *\n * @returns {Popup} `this`.\n * @example\n * popup.setOffset(10);\n */\n setOffset (offset?: Offset): this {\n this.options.offset = offset;\n this._update();\n return this;\n }\n\n /**\n * Add or remove the given CSS class on the popup container, depending on whether the container currently has that class.\n *\n * @param {string} className Non-empty string with CSS class name to add/remove.\n *\n * @returns {boolean} If the class was removed return `false`. If the class was added, then return `true`.\n *\n * @example\n * const popup = new mapboxgl.Popup();\n * popup.toggleClassName('highlighted');\n */\n toggleClassName(className: string): boolean {\n let finalState: boolean;\n if (this._classList.delete(className)) {\n finalState = false;\n } else {\n this._classList.add(className);\n finalState = true;\n }\n this._updateClassList();\n return finalState;\n }\n\n _onMouseEvent(event: MapMouseEvent) {\n this._update(event.point);\n }\n\n _getAnchor(bottomY: number): Anchor {\n if (this.options.anchor) { return this.options.anchor; }\n\n const map = this._map;\n const container = this._container;\n const pos = this._pos;\n\n if (!map || !container || !pos) return 'bottom';\n\n const width = container.offsetWidth;\n const height = container.offsetHeight;\n\n const isTop = pos.y + bottomY < height;\n const isBottom = pos.y > map.transform.height - height;\n const isLeft = pos.x < width / 2;\n const isRight = pos.x > map.transform.width - width / 2;\n\n if (isTop) {\n if (isLeft) return 'top-left';\n if (isRight) return 'top-right';\n return 'top';\n }\n if (isBottom) {\n if (isLeft) return 'bottom-left';\n if (isRight) return 'bottom-right';\n }\n if (isLeft) return 'left';\n if (isRight) return 'right';\n\n return 'bottom';\n }\n\n _updateClassList() {\n const container = this._container;\n if (!container) return;\n\n const classes = [...this._classList];\n classes.push('mapboxgl-popup');\n if (this._anchor) {\n classes.push(`mapboxgl-popup-anchor-${this._anchor}`);\n }\n if (this._trackPointer) {\n classes.push('mapboxgl-popup-track-pointer');\n }\n container.className = classes.join(' ');\n }\n\n _update(cursor?: Point) {\n const hasPosition = this._lngLat || this._trackPointer;\n const map = this._map;\n const content = this._content;\n\n if (!map || !hasPosition || !content) { return; }\n\n let container = this._container;\n\n if (!container) {\n container = this._container = DOM.create('div', 'mapboxgl-popup', map.getContainer());\n this._tip = DOM.create('div', 'mapboxgl-popup-tip', container);\n container.appendChild(content);\n }\n\n if (this.options.maxWidth && container.style.maxWidth !== this.options.maxWidth) {\n container.style.maxWidth = this.options.maxWidth;\n }\n\n if (map.transform.renderWorldCopies && !this._trackPointer) {\n this._lngLat = smartWrap(this._lngLat, this._pos, map.transform);\n }\n\n if (!this._trackPointer || cursor) {\n const pos = this._pos = this._trackPointer && cursor ? cursor : map.project(this._lngLat);\n\n const offsetBottom = normalizeOffset(this.options.offset);\n const anchor = this._anchor = this._getAnchor(offsetBottom.y);\n const offset = normalizeOffset(this.options.offset, anchor);\n\n const offsetedPos = pos.add(offset).round();\n map._requestDomTask(() => {\n if (this._container && anchor) {\n this._container.style.transform = `${anchorTranslate[anchor]} translate(${offsetedPos.x}px,${offsetedPos.y}px)`;\n }\n });\n }\n\n if (!this._marker && map._showingGlobe()) {\n const opacity = isLngLatBehindGlobe(map.transform, this._lngLat) ? 0 : 1;\n this._setOpacity(opacity);\n }\n\n this._updateClassList();\n }\n\n _focusFirstElement() {\n if (!this.options.focusAfterOpen || !this._container) return;\n\n const firstFocusable = this._container.querySelector(focusQuerySelector);\n\n if (firstFocusable) firstFocusable.focus();\n }\n\n _onClose() {\n this.remove();\n }\n\n _setOpacity(opacity: number) {\n if (this._container) {\n this._container.style.opacity = `${opacity}`;\n }\n if (this._content) {\n this._content.style.pointerEvents = opacity ? 'auto' : 'none';\n }\n }\n}\n\n// returns a normalized offset for a given anchor\nfunction normalizeOffset(offset: Offset = new Point(0, 0), anchor: Anchor = 'bottom'): Point {\n if (typeof offset === 'number') {\n // input specifies a radius from which to calculate offsets at all positions\n const cornerOffset = Math.round(Math.sqrt(0.5 * Math.pow(offset, 2)));\n switch (anchor) {\n case 'top': return new Point(0, offset);\n case 'top-left': return new Point(cornerOffset, cornerOffset);\n case 'top-right': return new Point(-cornerOffset, cornerOffset);\n case 'bottom': return new Point(0, -offset);\n case 'bottom-left': return new Point(cornerOffset, -cornerOffset);\n case 'bottom-right': return new Point(-cornerOffset, -cornerOffset);\n case 'left': return new Point(offset, 0);\n case 'right': return new Point(-offset, 0);\n }\n return new Point(0, 0);\n }\n\n if (offset instanceof Point || Array.isArray(offset)) {\n // input specifies a single offset to be applied to all positions\n return Point.convert(offset);\n }\n\n // input specifies an offset per position\n // $FlowFixMe we know offset is an object at this point but Flow can't refine it for some reason\n return Point.convert(offset[anchor] || [0, 0]);\n}\n","// @flow\n\nimport {easeCubicInOut} from './util.js';\n\n/**\n * An object for maintaining just enough state to ease a variable.\n *\n * @private\n */\nclass EasedVariable {\n _start: number;\n _end: number;\n _startTime: number;\n _endTime: number;\n\n constructor(initialValue: number) {\n this.jumpTo(initialValue);\n }\n\n /**\n * Evaluate the current value, given a timestamp.\n *\n * @param timeStamp {number} Time at which to evaluate.\n *\n * @returns {number} Evaluated value.\n */\n getValue(timeStamp: number): number {\n if (timeStamp <= this._startTime) return this._start;\n if (timeStamp >= this._endTime) return this._end;\n\n const t = easeCubicInOut((timeStamp - this._startTime) / (this._endTime - this._startTime));\n return this._start * (1 - t) + this._end * t;\n }\n\n /**\n * Check if an ease is in progress.\n *\n * @param timeStamp {number} Current time stamp.\n *\n * @returns {boolean} Returns `true` if ease is in progress.\n */\n isEasing(timeStamp: number): boolean {\n return timeStamp >= this._startTime && timeStamp <= this._endTime;\n }\n\n /**\n * Set the value without easing and cancel any in progress ease.\n *\n * @param value {number} New value.\n */\n jumpTo(value: number) {\n this._startTime = -Infinity;\n this._endTime = -Infinity;\n\n this._start = value;\n this._end = value;\n }\n\n /**\n * Cancel any in-progress ease and begin a new ease.\n *\n * @param value {number} New value to which to ease.\n * @param timeStamp {number} Current time stamp.\n * @param duration {number} Ease duration, in same units as timeStamp.\n */\n easeTo(value: number, timeStamp: number, duration: number) {\n this._start = this.getValue(timeStamp);\n this._end = value;\n\n this._startTime = timeStamp;\n this._endTime = timeStamp + duration;\n }\n}\n\nexport default EasedVariable;\n","// @flow\n\nconst defaultLocale = {\n 'AttributionControl.ToggleAttribution': 'Toggle attribution',\n 'AttributionControl.MapFeedback': 'Map feedback',\n 'FullscreenControl.Enter': 'Enter fullscreen',\n 'FullscreenControl.Exit': 'Exit fullscreen',\n 'GeolocateControl.FindMyLocation': 'Find my location',\n 'GeolocateControl.LocationNotAvailable': 'Location not available',\n 'LogoControl.Title': 'Mapbox logo',\n 'Map.Title': 'Map',\n 'NavigationControl.ResetBearing': 'Reset bearing to north',\n 'NavigationControl.ZoomIn': 'Zoom in',\n 'NavigationControl.ZoomOut': 'Zoom out',\n 'ScrollZoomBlocker.CtrlMessage': 'Use ctrl + scroll to zoom the map',\n 'ScrollZoomBlocker.CmdMessage': 'Use ⌘ + scroll to zoom the map',\n 'TouchPanBlocker.Message': 'Use two fingers to move the map'\n};\n\nexport default defaultLocale;\n","// @flow\n\nimport {version} from '../../package.json';\nimport {asyncAll, extend, bindAll, warnOnce, uniqueId, isSafariWithAntialiasingBug} from '../util/util.js';\nimport browser from '../util/browser.js';\nimport window from '../util/window.js';\nimport * as DOM from '../util/dom.js';\nimport {getImage, getJSON, ResourceType} from '../util/ajax.js';\nimport {RequestManager, getMapSessionAPI, postPerformanceEvent, postMapLoadEvent, AUTH_ERR_MSG, storeAuthState, removeAuthState} from '../util/mapbox.js';\nimport Style from '../style/style.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport Painter from '../render/painter.js';\nimport Transform from '../geo/transform.js';\nimport Hash from './hash.js';\nimport HandlerManager from './handler_manager.js';\nimport Camera from './camera.js';\nimport LngLat from '../geo/lng_lat.js';\nimport LngLatBounds from '../geo/lng_lat_bounds.js';\nimport Point from '@mapbox/point-geometry';\nimport AttributionControl from './control/attribution_control.js';\nimport LogoControl from './control/logo_control.js';\nimport {supported} from '@mapbox/mapbox-gl-supported';\nimport {RGBAImage} from '../util/image.js';\nimport {Event, ErrorEvent} from '../util/evented.js';\nimport {MapMouseEvent} from './events.js';\nimport TaskQueue from '../util/task_queue.js';\nimport webpSupported from '../util/webp_supported.js';\nimport {PerformanceUtils} from '../util/performance.js';\nimport {PerformanceMarkers, LivePerformanceUtils} from '../util/live_performance.js';\nimport Marker from '../ui/marker.js';\nimport Popup from '../ui/popup.js';\nimport EasedVariable from '../util/eased_variable.js';\nimport SourceCache from '../source/source_cache.js';\nimport {GLOBE_ZOOM_THRESHOLD_MAX} from '../geo/projection/globe_util.js';\nimport {setCacheLimits} from '../util/tile_request_cache.js';\nimport {Debug} from '../util/debug.js';\n\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type {RequestTransformFunction} from '../util/mapbox.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {LngLatBoundsLike} from '../geo/lng_lat_bounds.js';\nimport type {StyleOptions, StyleSetterOptions} from '../style/style.js';\nimport type {MapEvent, MapDataEvent} from './events.js';\nimport type {CustomLayerInterface} from '../style/style_layer/custom_style_layer.js';\nimport type {StyleImageInterface, StyleImageMetadata} from '../style/style_image.js';\n\nimport type ScrollZoomHandler from './handler/scroll_zoom.js';\nimport type BoxZoomHandler from './handler/box_zoom.js';\nimport type {TouchPitchHandler} from './handler/touch_zoom_rotate.js';\nimport type DragRotateHandler from './handler/shim/drag_rotate.js';\nimport type DragPanHandler, {DragPanOptions} from './handler/shim/drag_pan.js';\nimport type KeyboardHandler from './handler/keyboard.js';\nimport type DoubleClickZoomHandler from './handler/shim/dblclick_zoom.js';\nimport type TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate.js';\nimport defaultLocale from './default_locale.js';\nimport type {TaskID} from '../util/task_queue.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {\n LayerSpecification,\n FilterSpecification,\n StyleSpecification,\n LightSpecification,\n TerrainSpecification,\n FogSpecification,\n SourceSpecification,\n ProjectionSpecification,\n PropertyValueSpecification,\n TransitionSpecification\n} from '../style-spec/types.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {Source} from '../source/source.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {QueryResult} from '../data/feature_index.js';\n\nexport type ControlPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n/* eslint-disable no-use-before-define */\ninterface IControl {\n +onAdd: (map: Map) => HTMLElement;\n +onRemove: (map: Map) => void;\n\n +getDefaultPosition?: () => ControlPosition;\n +_setLanguage?: (language: ?string | ?string[]) => void;\n}\n/* eslint-enable no-use-before-define */\n\nexport const AVERAGE_ELEVATION_SAMPLING_INTERVAL = 500; // ms\nexport const AVERAGE_ELEVATION_EASE_TIME = 300; // ms\nexport const AVERAGE_ELEVATION_EASE_THRESHOLD = 1; // meters\nexport const AVERAGE_ELEVATION_CHANGE_THRESHOLD = 1e-4; // meters\n\ntype MapOptions = {\n hash?: boolean | string,\n interactive?: boolean,\n container: HTMLElement | string,\n bearingSnap?: number,\n attributionControl?: boolean,\n customAttribution?: string | Array,\n logoPosition?: ControlPosition,\n failIfMajorPerformanceCaveat?: boolean,\n preserveDrawingBuffer?: boolean,\n antialias?: boolean,\n refreshExpiredTiles?: boolean,\n maxBounds?: LngLatBoundsLike,\n scrollZoom?: boolean,\n minZoom?: ?number,\n maxZoom?: ?number,\n minPitch?: ?number,\n maxPitch?: ?number,\n boxZoom?: boolean,\n dragRotate?: boolean,\n dragPan?: DragPanOptions,\n keyboard?: boolean,\n doubleClickZoom?: boolean,\n touchZoomRotate?: boolean,\n touchPitch?: boolean,\n cooperativeGestures?: boolean,\n trackResize?: boolean,\n center?: LngLatLike,\n zoom?: number,\n bearing?: number,\n pitch?: number,\n optimizeForTerrain?: boolean,\n renderWorldCopies?: boolean,\n minTileCacheSize?: number,\n maxTileCacheSize?: number,\n transformRequest?: RequestTransformFunction,\n accessToken: string,\n testMode: ?boolean,\n locale?: Object,\n projection?: ProjectionSpecification | string,\n language?: string,\n worldview?: string\n};\n\nconst defaultMinZoom = -2;\nconst defaultMaxZoom = 22;\n\n// the default values, but also the valid range\nconst defaultMinPitch = 0;\nconst defaultMaxPitch = 85;\n\nconst defaultOptions = {\n center: [0, 0],\n zoom: 0,\n bearing: 0,\n pitch: 0,\n\n minZoom: defaultMinZoom,\n maxZoom: defaultMaxZoom,\n\n minPitch: defaultMinPitch,\n maxPitch: defaultMaxPitch,\n\n interactive: true,\n scrollZoom: true,\n boxZoom: true,\n dragRotate: true,\n dragPan: true,\n keyboard: true,\n doubleClickZoom: true,\n touchZoomRotate: true,\n touchPitch: true,\n cooperativeGestures: false,\n performanceMetricsCollection: true,\n\n bearingSnap: 7,\n clickTolerance: 3,\n pitchWithRotate: true,\n\n hash: false,\n attributionControl: true,\n\n failIfMajorPerformanceCaveat: false,\n preserveDrawingBuffer: false,\n trackResize: true,\n optimizeForTerrain: true,\n renderWorldCopies: true,\n refreshExpiredTiles: true,\n minTileCacheSize: null,\n maxTileCacheSize: null,\n localIdeographFontFamily: 'sans-serif',\n localFontFamily: null,\n transformRequest: null,\n accessToken: null,\n fadeDuration: 300,\n respectPrefersReducedMotion: true,\n crossSourceCollisions: true\n};\n\n/**\n * The `Map` object represents the map on your page. It exposes methods\n * and properties that enable you to programmatically change the map,\n * and fires events as users interact with it.\n *\n * You create a `Map` by specifying a `container` and other options.\n * Then Mapbox GL JS initializes the map on the page and returns your `Map`\n * object.\n *\n * @extends Evented\n * @param {Object} options\n * @param {HTMLElement|string} options.container The HTML element in which Mapbox GL JS will render the map, or the element's string `id`. The specified element must have no children.\n * @param {number} [options.minZoom=0] The minimum zoom level of the map (0-24).\n * @param {number} [options.maxZoom=22] The maximum zoom level of the map (0-24).\n * @param {number} [options.minPitch=0] The minimum pitch of the map (0-85).\n * @param {number} [options.maxPitch=85] The maximum pitch of the map (0-85).\n * @param {Object | string} options.style The map's Mapbox style. This must be an a JSON object conforming to\n * the schema described in the [Mapbox Style Specification](https://mapbox.com/mapbox-gl-style-spec/), or a URL\n * to such JSON. Can accept a null value to allow adding a style manually.\n *\n * To load a style from the Mapbox API, you can use a URL of the form `mapbox://styles/:owner/:style`,\n * where `:owner` is your Mapbox account name and `:style` is the style ID. You can also use a\n * [Mapbox-owned style](https://docs.mapbox.com/api/maps/styles/#mapbox-styles):\n *\n * * `mapbox://styles/mapbox/streets-v11`\n * * `mapbox://styles/mapbox/outdoors-v11`\n * * `mapbox://styles/mapbox/light-v10`\n * * `mapbox://styles/mapbox/dark-v10`\n * * `mapbox://styles/mapbox/satellite-v9`\n * * `mapbox://styles/mapbox/satellite-streets-v11`\n * * `mapbox://styles/mapbox/navigation-day-v1`\n * * `mapbox://styles/mapbox/navigation-night-v1`.\n *\n * Tilesets hosted with Mapbox can be style-optimized if you append `?optimize=true` to the end of your style URL, like `mapbox://styles/mapbox/streets-v11?optimize=true`.\n * Learn more about style-optimized vector tiles in our [API documentation](https://www.mapbox.com/api-documentation/maps/#retrieve-tiles).\n *\n * @param {(boolean|string)} [options.hash=false] If `true`, the map's [position](https://docs.mapbox.com/help/glossary/camera) (zoom, center latitude, center longitude, bearing, and pitch) will be synced with the hash fragment of the page's URL.\n * For example, `http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60`.\n * An additional string may optionally be provided to indicate a parameter-styled hash,\n * for example http://path/to/my/page.html#map=2.59/39.26/53.07/-24.1/60&foo=bar, where `foo`\n * is a custom parameter and `bar` is an arbitrary hash distinct from the map hash.\n * @param {boolean} [options.interactive=true] If `false`, no mouse, touch, or keyboard listeners will be attached to the map, so it will not respond to interaction.\n * @param {number} [options.bearingSnap=7] The threshold, measured in degrees, that determines when the map's\n * bearing will snap to north. For example, with a `bearingSnap` of 7, if the user rotates\n * the map within 7 degrees of north, the map will automatically snap to exact north.\n * @param {boolean} [options.pitchWithRotate=true] If `false`, the map's pitch (tilt) control with \"drag to rotate\" interaction will be disabled.\n * @param {number} [options.clickTolerance=3] The max number of pixels a user can shift the mouse pointer during a click for it to be considered a valid click (as opposed to a mouse drag).\n * @param {boolean} [options.attributionControl=true] If `true`, an {@link AttributionControl} will be added to the map.\n * @param {string | Array} [options.customAttribution=null] String or strings to show in an {@link AttributionControl}. Only applicable if `options.attributionControl` is `true`.\n * @param {string} [options.logoPosition='bottom-left'] A string representing the position of the Mapbox wordmark on the map. Valid options are `top-left`,`top-right`, `bottom-left`, `bottom-right`.\n * @param {boolean} [options.failIfMajorPerformanceCaveat=false] If `true`, map creation will fail if the performance of Mapbox GL JS would be dramatically worse than expected (a software renderer would be used).\n * @param {boolean} [options.preserveDrawingBuffer=false] If `true`, the map's canvas can be exported to a PNG using `map.getCanvas().toDataURL()`. This is `false` by default as a performance optimization.\n * @param {boolean} [options.antialias=false] If `true`, the gl context will be created with [MSAA antialiasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing), which can be useful for antialiasing custom layers. This is `false` by default as a performance optimization.\n * @param {boolean} [options.useWebGL2=false] This is an experimental feature. If true and device's capabilities support it, WebGL 2 context will be created.\n * @param {boolean} [options.refreshExpiredTiles=true] If `false`, the map won't attempt to re-request tiles once they expire per their HTTP `cacheControl`/`expires` headers.\n * @param {LngLatBoundsLike} [options.maxBounds=null] If set, the map will be constrained to the given bounds.\n * @param {boolean|Object} [options.scrollZoom=true] If `true`, the \"scroll to zoom\" interaction is enabled. An `Object` value is passed as options to {@link ScrollZoomHandler#enable}.\n * @param {boolean} [options.boxZoom=true] If `true`, the \"box zoom\" interaction is enabled (see {@link BoxZoomHandler}).\n * @param {boolean} [options.dragRotate=true] If `true`, the \"drag to rotate\" interaction is enabled (see {@link DragRotateHandler}).\n * @param {boolean | Object} [options.dragPan=true] If `true`, the \"drag to pan\" interaction is enabled. An `Object` value is passed as options to {@link DragPanHandler#enable}.\n * @param {boolean} [options.keyboard=true] If `true`, keyboard shortcuts are enabled (see {@link KeyboardHandler}).\n * @param {boolean} [options.doubleClickZoom=true] If `true`, the \"double click to zoom\" interaction is enabled (see {@link DoubleClickZoomHandler}).\n * @param {boolean | Object} [options.touchZoomRotate=true] If `true`, the \"pinch to rotate and zoom\" interaction is enabled. An `Object` value is passed as options to {@link TouchZoomRotateHandler#enable}.\n * @param {boolean | Object} [options.touchPitch=true] If `true`, the \"drag to pitch\" interaction is enabled. An `Object` value is passed as options to {@link TouchPitchHandler}.\n * @param {boolean} [options.cooperativeGestures] If `true`, scroll zoom will require pressing the ctrl or ⌘ key while scrolling to zoom map, and touch pan will require using two fingers while panning to move the map. Touch pitch will require three fingers to activate if enabled.\n * @param {boolean} [options.trackResize=true] If `true`, the map will automatically resize when the browser window resizes.\n * @param {boolean} [options.performanceMetricsCollection=true] If `true`, mapbox-gl will collect and send performance metrics.\n * @param {LngLatLike} [options.center=[0, 0]] The initial geographical [centerpoint](https://docs.mapbox.com/help/glossary/camera#center) of the map. If `center` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `[0, 0]` Note: Mapbox GL uses longitude, latitude coordinate order (as opposed to latitude, longitude) to match GeoJSON.\n * @param {number} [options.zoom=0] The initial [zoom](https://docs.mapbox.com/help/glossary/camera#zoom) level of the map. If `zoom` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.\n * @param {number} [options.bearing=0] The initial [bearing](https://docs.mapbox.com/help/glossary/camera#bearing) (rotation) of the map, measured in degrees counter-clockwise from north. If `bearing` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.\n * @param {number} [options.pitch=0] The initial [pitch](https://docs.mapbox.com/help/glossary/camera#pitch) (tilt) of the map, measured in degrees away from the plane of the screen (0-85). If `pitch` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.\n * @param {LngLatBoundsLike} [options.bounds=null] The initial bounds of the map. If `bounds` is specified, it overrides `center` and `zoom` constructor options.\n * @param {Object} [options.fitBoundsOptions] A {@link Map#fitBounds} options object to use _only_ when fitting the initial `bounds` provided above.\n * @param {'auto' | string | string[]} [options.language=null] A string with a BCP 47 language tag, or an array of such strings representing the desired languages used for the map's labels and UI components. Languages can only be set on Mapbox vector tile sources.\n * By default, GL JS will not set a language so that the language of Mapbox tiles will be determined by the vector tile source's TileJSON.\n * Valid language strings must be a [BCP-47 language code](https://en.wikipedia.org/wiki/IETF_language_tag#List_of_subtags). Unsupported BCP-47 codes will not include any translations. Invalid codes will result in an recoverable error.\n * If a label has no translation for the selected language, it will display in the label's local language.\n * If option is set to `auto`, GL JS will select a user's preferred language as determined by the browser's [`window.navigator.language`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language) property.\n * If the `locale` property is not set separately, this language will also be used to localize the UI for supported languages.\n * @param {string} [options.worldview=null] Sets the map's worldview. A worldview determines the way that certain disputed boundaries\n * are rendered. By default, GL JS will not set a worldview so that the worldview of Mapbox tiles will be determined by the vector tile source's TileJSON.\n * Valid worldview strings must be an [ISO alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes). Unsupported\n * ISO alpha-2 codes will fall back to the TileJSON's default worldview. Invalid codes will result in a recoverable error.\n * @param {boolean} [options.optimizeForTerrain=true] With terrain on, if `true`, the map will render for performance priority, which may lead to layer reordering allowing to maximize performance (layers that are draped over terrain will be drawn first, including fill, line, background, hillshade and raster). Otherwise, if set to `false`, the map will always be drawn for layer order priority.\n * @param {boolean} [options.renderWorldCopies=true] If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\n * container, there will be blank space beyond 180 and -180 degrees longitude.\n * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\n * map and the other on the left edge of the map) at every zoom level.\n * @param {number} [options.minTileCacheSize=null] The minimum number of tiles stored in the tile cache for a given source. Larger viewports use more tiles and need larger caches. Larger viewports are more likely to be found on devices with more memory and on pages where the map is more important. If omitted, the cache will be dynamically sized based on the current viewport.\n * @param {number} [options.maxTileCacheSize=null] The maximum number of tiles stored in the tile cache for a given source. If omitted, the cache will be dynamically sized based on the current viewport.\n * @param {string} [options.localIdeographFontFamily='sans-serif'] Defines a CSS font-family for locally overriding generation of glyphs in the 'CJK Unified Ideographs', 'Hiragana', 'Katakana', 'Hangul Syllables' and 'CJK Symbols and Punctuation' ranges.\n * In these ranges, font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * Set to `false`, to enable font settings from the map's style for these glyph ranges. Note that [Mapbox Studio](https://studio.mapbox.com/) sets this value to `false` by default.\n * The purpose of this option is to avoid bandwidth-intensive glyph server requests. For an example of this option in use, see [Use locally generated ideographs](https://www.mapbox.com/mapbox-gl-js/example/local-ideographs).\n * @param {string} [options.localFontFamily=false] Defines a CSS\n * font-family for locally overriding generation of all glyphs. Font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * If set, this option overrides the setting in localIdeographFontFamily.\n * @param {RequestTransformFunction} [options.transformRequest=null] A callback run before the Map makes a request for an external URL. The callback can be used to modify the url, set headers, or set the credentials property for cross-origin requests.\n * Expected to return a {@link RequestParameters} object with a `url` property and optionally `headers` and `credentials` properties.\n * @param {boolean} [options.collectResourceTiming=false] If `true`, Resource Timing API information will be collected for requests made by GeoJSON and Vector Tile web workers (this information is normally inaccessible from the main Javascript thread). Information will be returned in a `resourceTiming` property of relevant `data` events.\n * @param {number} [options.fadeDuration=300] Controls the duration of the fade-in/fade-out animation for label collisions, in milliseconds. This setting affects all symbol layers. This setting does not affect the duration of runtime styling transitions or raster tile cross-fading.\n * @param {boolean} [options.respectPrefersReducedMotion=true] If set to `true`, the map will respect the user's `prefers-reduced-motion` browser setting and apply a reduced motion mode, minimizing animations and transitions. When set to `false`, the map will always ignore the `prefers-reduced-motion` settings, regardless of the user's preference, making all animations essential.\n * @param {boolean} [options.crossSourceCollisions=true] If `true`, symbols from multiple sources can collide with each other during collision detection. If `false`, collision detection is run separately for the symbols in each source.\n * @param {string} [options.accessToken=null] If specified, map will use this [token](https://docs.mapbox.com/help/glossary/access-token/) instead of the one defined in `mapboxgl.accessToken`.\n * @param {Object} [options.locale=null] A patch to apply to the default localization table for UI strings such as control tooltips. The `locale` object maps namespaced UI string IDs to translated strings in the target language;\n * see [`src/ui/default_locale.js`](https://github.com/mapbox/mapbox-gl-js/blob/main/src/ui/default_locale.js) for an example with all supported string IDs. The object may specify all UI strings (thereby adding support for a new translation) or only a subset of strings (thereby patching the default translation table).\n * @param {boolean} [options.testMode=false] Silences errors and warnings generated due to an invalid accessToken, useful when using the library to write unit tests.\n * @param {ProjectionSpecification} [options.projection='mercator'] The [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) the map should be rendered in.\n * Supported projections are:\n * * [Albers](https://en.wikipedia.org/wiki/Albers_projection) equal-area conic projection as `albers`\n * * [Equal Earth](https://en.wikipedia.org/wiki/Equal_Earth_projection) equal-area pseudocylindrical projection as `equalEarth`\n * * [Equirectangular](https://en.wikipedia.org/wiki/Equirectangular_projection) (Plate Carrée/WGS84) as `equirectangular`\n * * 3d Globe as `globe`\n * * [Lambert Conformal Conic](https://en.wikipedia.org/wiki/Lambert_conformal_conic_projection) as `lambertConformalConic`\n * * [Mercator](https://en.wikipedia.org/wiki/Mercator_projection) cylindrical map projection as `mercator`\n * * [Natural Earth](https://en.wikipedia.org/wiki/Natural_Earth_projection) pseudocylindrical map projection as `naturalEarth`\n * * [Winkel Tripel](https://en.wikipedia.org/wiki/Winkel_tripel_projection) azimuthal map projection as `winkelTripel`\n * Conic projections such as Albers and Lambert have configurable `center` and `parallels` properties that allow developers to define the region in which the projection has minimal distortion; see the example for how to configure these properties.\n * @example\n * const map = new mapboxgl.Map({\n * container: 'map', // container ID\n * center: [-122.420679, 37.772537], // starting position [lng, lat]\n * zoom: 13, // starting zoom\n * style: 'mapbox://styles/mapbox/streets-v11', // style URL or style object\n * hash: true, // sync `center`, `zoom`, `pitch`, and `bearing` with URL\n * // Use `transformRequest` to modify requests that begin with `http://myHost`.\n * transformRequest: (url, resourceType) => {\n * if (resourceType === 'Source' && url.startsWith('http://myHost')) {\n * return {\n * url: url.replace('http', 'https'),\n * headers: {'my-custom-header': true},\n * credentials: 'include' // Include cookies for cross-origin requests\n * };\n * }\n * }\n * });\n * @see [Example: Display a map on a webpage](https://docs.mapbox.com/mapbox-gl-js/example/simple-map/)\n * @see [Example: Display a map with a custom style](https://docs.mapbox.com/mapbox-gl-js/example/custom-style-id/)\n * @see [Example: Check if Mapbox GL JS is supported](https://docs.mapbox.com/mapbox-gl-js/example/check-for-support/)\n */\nclass Map extends Camera {\n style: Style;\n painter: Painter;\n handlers: ?HandlerManager;\n\n _container: HTMLElement;\n _missingCSSCanary: HTMLElement;\n _canvasContainer: HTMLElement;\n _controlContainer: HTMLElement;\n _controlPositions: {[_: string]: HTMLElement};\n _interactive: ?boolean;\n _showTileBoundaries: ?boolean;\n _showTerrainWireframe: ?boolean;\n _showQueryGeometry: ?boolean;\n _showCollisionBoxes: ?boolean;\n _showPadding: ?boolean;\n _showTileAABBs: ?boolean;\n _showOverdrawInspector: boolean;\n _repaint: ?boolean;\n _vertices: ?boolean;\n _canvas: HTMLCanvasElement;\n _minTileCacheSize: number;\n _maxTileCacheSize: number;\n _frame: ?Cancelable;\n _renderNextFrame: ?boolean;\n _styleDirty: ?boolean;\n _sourcesDirty: ?boolean;\n _placementDirty: ?boolean;\n _loaded: boolean;\n _fullyLoaded: boolean; // accounts for placement finishing as well\n _trackResize: boolean;\n _preserveDrawingBuffer: boolean;\n _failIfMajorPerformanceCaveat: boolean;\n _antialias: boolean;\n _useWebGL2: boolean;\n _refreshExpiredTiles: boolean;\n _hash: Hash;\n _delegatedListeners: any;\n _isInitialLoad: boolean;\n _shouldCheckAccess: boolean;\n _fadeDuration: number;\n _crossSourceCollisions: boolean;\n _collectResourceTiming: boolean;\n _optimizeForTerrain: boolean;\n _renderTaskQueue: TaskQueue;\n _domRenderTaskQueue: TaskQueue;\n _controls: Array;\n _markers: Array;\n _popups: Array;\n _logoControl: IControl;\n _mapId: number;\n _localIdeographFontFamily: string;\n _localFontFamily: string;\n _requestManager: RequestManager;\n _locale: Object;\n _removed: boolean;\n _speedIndexTiming: boolean;\n _clickTolerance: number;\n _cooperativeGestures: boolean;\n _silenceAuthErrors: boolean;\n _averageElevationLastSampledAt: number;\n _averageElevationExaggeration: number;\n _averageElevation: EasedVariable;\n _containerWidth: number;\n _containerHeight: number;\n _language: ?string | ?string[];\n _worldview: ?string;\n _interactionRange: [number, number];\n _visibilityHidden: number;\n _performanceMetricsCollection: boolean;\n\n // `_useExplicitProjection` indicates that a projection is set by a call to map.setProjection()\n _useExplicitProjection: boolean;\n\n /** @section {Interaction handlers} */\n\n /**\n * The map's {@link ScrollZoomHandler}, which implements zooming in and out with a scroll wheel or trackpad.\n * Find more details and examples using `scrollZoom` in the {@link ScrollZoomHandler} section.\n */\n scrollZoom: ScrollZoomHandler;\n\n /**\n * The map's {@link BoxZoomHandler}, which implements zooming using a drag gesture with the Shift key pressed.\n * Find more details and examples using `boxZoom` in the {@link BoxZoomHandler} section.\n */\n boxZoom: BoxZoomHandler;\n\n /**\n * The map's {@link DragRotateHandler}, which implements rotating the map while dragging with the right\n * mouse button or with the Control key pressed. Find more details and examples using `dragRotate`\n * in the {@link DragRotateHandler} section.\n */\n dragRotate: DragRotateHandler;\n\n /**\n * The map's {@link DragPanHandler}, which implements dragging the map with a mouse or touch gesture.\n * Find more details and examples using `dragPan` in the {@link DragPanHandler} section.\n */\n dragPan: DragPanHandler;\n\n /**\n * The map's {@link KeyboardHandler}, which allows the user to zoom, rotate, and pan the map using keyboard\n * shortcuts. Find more details and examples using `keyboard` in the {@link KeyboardHandler} section.\n */\n keyboard: KeyboardHandler;\n\n /**\n * The map's {@link DoubleClickZoomHandler}, which allows the user to zoom by double clicking.\n * Find more details and examples using `doubleClickZoom` in the {@link DoubleClickZoomHandler} section.\n */\n doubleClickZoom: DoubleClickZoomHandler;\n\n /**\n * The map's {@link TouchZoomRotateHandler}, which allows the user to zoom or rotate the map with touch gestures.\n * Find more details and examples using `touchZoomRotate` in the {@link TouchZoomRotateHandler} section.\n */\n touchZoomRotate: TouchZoomRotateHandler;\n\n /**\n * The map's {@link TouchPitchHandler}, which allows the user to pitch the map with touch gestures.\n * Find more details and examples using `touchPitch` in the {@link TouchPitchHandler} section.\n */\n touchPitch: TouchPitchHandler;\n\n constructor(options: MapOptions) {\n LivePerformanceUtils.mark(PerformanceMarkers.create);\n\n options = extend({}, defaultOptions, options);\n\n if (options.minZoom != null && options.maxZoom != null && options.minZoom > options.maxZoom) {\n throw new Error(`maxZoom must be greater than or equal to minZoom`);\n }\n\n if (options.minPitch != null && options.maxPitch != null && options.minPitch > options.maxPitch) {\n throw new Error(`maxPitch must be greater than or equal to minPitch`);\n }\n\n if (options.minPitch != null && options.minPitch < defaultMinPitch) {\n throw new Error(`minPitch must be greater than or equal to ${defaultMinPitch}`);\n }\n\n if (options.maxPitch != null && options.maxPitch > defaultMaxPitch) {\n throw new Error(`maxPitch must be less than or equal to ${defaultMaxPitch}`);\n }\n\n // disable antialias with OS/iOS 15.4 and 15.5 due to rendering bug\n if (options.antialias && isSafariWithAntialiasingBug(window)) {\n options.antialias = false;\n warnOnce('Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609');\n }\n\n const transform = new Transform(options.minZoom, options.maxZoom, options.minPitch, options.maxPitch, options.renderWorldCopies);\n super(transform, options);\n\n this._interactive = options.interactive;\n this._minTileCacheSize = options.minTileCacheSize;\n this._maxTileCacheSize = options.maxTileCacheSize;\n this._failIfMajorPerformanceCaveat = options.failIfMajorPerformanceCaveat;\n this._preserveDrawingBuffer = options.preserveDrawingBuffer;\n this._antialias = options.antialias;\n this._useWebGL2 = options.useWebGL2;\n this._trackResize = options.trackResize;\n this._bearingSnap = options.bearingSnap;\n this._refreshExpiredTiles = options.refreshExpiredTiles;\n this._fadeDuration = options.fadeDuration;\n this._isInitialLoad = true;\n this._crossSourceCollisions = options.crossSourceCollisions;\n this._collectResourceTiming = options.collectResourceTiming;\n this._optimizeForTerrain = options.optimizeForTerrain;\n this._language = this._parseLanguage(options.language);\n this._worldview = options.worldview;\n this._renderTaskQueue = new TaskQueue();\n this._domRenderTaskQueue = new TaskQueue();\n this._controls = [];\n this._markers = [];\n this._popups = [];\n this._mapId = uniqueId();\n this._locale = extend({}, defaultLocale, options.locale);\n this._clickTolerance = options.clickTolerance;\n this._cooperativeGestures = options.cooperativeGestures;\n this._performanceMetricsCollection = options.performanceMetricsCollection;\n this._containerWidth = 0;\n this._containerHeight = 0;\n\n this._averageElevationLastSampledAt = -Infinity;\n this._averageElevationExaggeration = 0;\n this._averageElevation = new EasedVariable(0);\n\n this._interactionRange = [+Infinity, -Infinity];\n this._visibilityHidden = 0;\n\n this._useExplicitProjection = false; // Fallback to stylesheet by default\n\n this._requestManager = new RequestManager(options.transformRequest, options.accessToken, options.testMode);\n this._silenceAuthErrors = !!options.testMode;\n\n if (typeof options.container === 'string') {\n this._container = window.document.getElementById(options.container);\n\n if (!this._container) {\n throw new Error(`Container '${options.container}' not found.`);\n }\n } else if (options.container instanceof window.HTMLElement) {\n this._container = options.container;\n } else {\n throw new Error(`Invalid type: 'container' must be a String or HTMLElement.`);\n }\n\n if (this._container.childNodes.length > 0) {\n warnOnce(`The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead.`);\n }\n\n if (options.maxBounds) {\n this.setMaxBounds(options.maxBounds);\n }\n\n bindAll([\n '_onWindowOnline',\n '_onWindowResize',\n '_onVisibilityChange',\n '_onMapScroll',\n '_contextLost',\n '_contextRestored'\n ], this);\n\n this._setupContainer();\n this._setupPainter();\n if (this.painter === undefined) {\n throw new Error(`Failed to initialize WebGL.`);\n }\n\n this.on('move', () => this._update(false));\n this.on('moveend', () => this._update(false));\n this.on('zoom', () => this._update(true));\n\n if (typeof window !== 'undefined') {\n // $FlowFixMe[method-unbinding]\n window.addEventListener('online', this._onWindowOnline, false);\n // $FlowFixMe[method-unbinding]\n window.addEventListener('resize', this._onWindowResize, false);\n // $FlowFixMe[method-unbinding]\n window.addEventListener('orientationchange', this._onWindowResize, false);\n // $FlowFixMe[method-unbinding]\n window.addEventListener('webkitfullscreenchange', this._onWindowResize, false);\n // $FlowFixMe[method-unbinding]\n window.addEventListener('visibilitychange', this._onVisibilityChange, false);\n }\n\n this.handlers = new HandlerManager(this, options);\n\n this._localFontFamily = options.localFontFamily;\n this._localIdeographFontFamily = options.localIdeographFontFamily;\n\n if (options.style) {\n this.setStyle(options.style, {localFontFamily: this._localFontFamily, localIdeographFontFamily: this._localIdeographFontFamily});\n }\n\n if (options.projection) {\n this.setProjection(options.projection);\n }\n\n const hashName = (typeof options.hash === 'string' && options.hash) || undefined;\n this._hash = options.hash && (new Hash(hashName)).addTo(this);\n // don't set position from options if set through hash\n if (!this._hash || !this._hash._onHashChange()) {\n this.jumpTo({\n center: options.center,\n zoom: options.zoom,\n bearing: options.bearing,\n pitch: options.pitch\n });\n\n if (options.bounds) {\n this.resize();\n this.fitBounds(options.bounds, extend({}, options.fitBoundsOptions, {duration: 0}));\n }\n }\n\n this.resize();\n\n if (options.attributionControl)\n // $FlowFixMe[method-unbinding]\n this.addControl(new AttributionControl({customAttribution: options.customAttribution}));\n\n // $FlowFixMe[method-unbinding]\n this._logoControl = new LogoControl();\n // $FlowFixMe[method-unbinding]\n this.addControl(this._logoControl, options.logoPosition);\n\n this.on('style.load', () => {\n if (this.transform.unmodified) {\n this.jumpTo((this.style.stylesheet: any));\n }\n });\n this.on('data', (event: MapDataEvent) => {\n this._update(event.dataType === 'style');\n this.fire(new Event(`${event.dataType}data`, event));\n });\n this.on('dataloading', (event: MapDataEvent) => {\n this.fire(new Event(`${event.dataType}dataloading`, event));\n });\n }\n\n /*\n * Returns a unique number for this map instance which is used for the MapLoadEvent\n * to make sure we only fire one event per instantiated map object.\n * @private\n * @returns {number}\n */\n _getMapId(): number {\n return this._mapId;\n }\n\n /** @section {Controls} */\n\n /**\n * Adds an {@link IControl} to the map, calling `control.onAdd(this)`.\n *\n * @param {IControl} control The {@link IControl} to add.\n * @param {string} [position] Position on the map to which the control will be added.\n * Valid values are `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`. Defaults to `'top-right'`.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Add zoom and rotation controls to the map.\n * map.addControl(new mapboxgl.NavigationControl());\n * @see [Example: Display map navigation controls](https://www.mapbox.com/mapbox-gl-js/example/navigation/)\n */\n addControl(control: IControl, position?: ControlPosition): this {\n if (position === undefined) {\n if (control.getDefaultPosition) {\n position = control.getDefaultPosition();\n } else {\n position = 'top-right';\n }\n }\n if (!control || !control.onAdd) {\n return this.fire(new ErrorEvent(new Error(\n 'Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.')));\n }\n const controlElement = control.onAdd(this);\n this._controls.push(control);\n\n const positionContainer = this._controlPositions[position];\n if (position.indexOf('bottom') !== -1) {\n positionContainer.insertBefore(controlElement, positionContainer.firstChild);\n } else {\n positionContainer.appendChild(controlElement);\n }\n return this;\n }\n\n /**\n * Removes the control from the map.\n *\n * @param {IControl} control The {@link IControl} to remove.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Define a new navigation control.\n * const navigation = new mapboxgl.NavigationControl();\n * // Add zoom and rotation controls to the map.\n * map.addControl(navigation);\n * // Remove zoom and rotation controls from the map.\n * map.removeControl(navigation);\n */\n removeControl(control: IControl): this {\n if (!control || !control.onRemove) {\n return this.fire(new ErrorEvent(new Error(\n 'Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.')));\n }\n const ci = this._controls.indexOf(control);\n if (ci > -1) this._controls.splice(ci, 1);\n control.onRemove(this);\n return this;\n }\n\n /**\n * Checks if a control is on the map.\n *\n * @param {IControl} control The {@link IControl} to check.\n * @returns {boolean} True if map contains control.\n * @example\n * // Define a new navigation control.\n * const navigation = new mapboxgl.NavigationControl();\n * // Add zoom and rotation controls to the map.\n * map.addControl(navigation);\n * // Check that the navigation control exists on the map.\n * const added = map.hasControl(navigation);\n * // added === true\n */\n hasControl(control: IControl): boolean {\n return this._controls.indexOf(control) > -1;\n }\n\n /**\n * Returns the map's containing HTML element.\n *\n * @returns {HTMLElement} The map's container.\n * @example\n * const container = map.getContainer();\n */\n getContainer(): HTMLElement {\n return this._container;\n }\n\n /**\n * Returns the HTML element containing the map's `` element.\n *\n * If you want to add non-GL overlays to the map, you should append them to this element.\n *\n * This is the element to which event bindings for map interactivity (such as panning and zooming) are\n * attached. It will receive bubbled events from child elements such as the ``, but not from\n * map controls.\n *\n * @returns {HTMLElement} The container of the map's ``.\n * @example\n * const canvasContainer = map.getCanvasContainer();\n * @see [Example: Create a draggable point](https://www.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Highlight features within a bounding box](https://www.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\n getCanvasContainer(): HTMLElement {\n return this._canvasContainer;\n }\n\n /**\n * Returns the map's `` element.\n *\n * @returns {HTMLCanvasElement} The map's `` element.\n * @example\n * const canvas = map.getCanvas();\n * @see [Example: Measure distances](https://www.mapbox.com/mapbox-gl-js/example/measure/)\n * @see [Example: Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Center the map on a clicked symbol](https://www.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n */\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n /** @section {Map constraints} */\n\n /**\n * Resizes the map according to the dimensions of its\n * `container` element.\n *\n * Checks if the map container size changed and updates the map if it has changed.\n * This method must be called after the map's `container` is resized programmatically\n * or when the map is shown after being initially hidden with CSS.\n *\n * @param {Object | null} eventData Additional properties to be passed to `movestart`, `move`, `resize`, and `moveend`\n * events that get triggered as a result of resize. This can be useful for differentiating the\n * source of an event (for example, user-initiated or programmatically-triggered events).\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Resize the map when the map container is shown\n * // after being initially hidden with CSS.\n * const mapDiv = document.getElementById('map');\n * if (mapDiv.style.visibility === true) map.resize();\n */\n resize(eventData?: Object): this {\n this._updateContainerDimensions();\n\n // do nothing if container remained the same size\n if (this._containerWidth === this.transform.width && this._containerHeight === this.transform.height) return this;\n\n this._resizeCanvas(this._containerWidth, this._containerHeight);\n\n this.transform.resize(this._containerWidth, this._containerHeight);\n this.painter.resize(Math.ceil(this._containerWidth), Math.ceil(this._containerHeight));\n\n const fireMoving = !this._moving;\n if (fireMoving) {\n this.fire(new Event('movestart', eventData))\n .fire(new Event('move', eventData));\n }\n\n this.fire(new Event('resize', eventData));\n\n if (fireMoving) this.fire(new Event('moveend', eventData));\n\n return this;\n }\n\n /**\n * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not\n * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.\n * If a padding is set on the map, the bounds returned are for the inset.\n * With globe projection, the smallest bounds encompassing the visible region\n * may not precisely represent the visible region due to the earth's curvature.\n *\n * @returns {LngLatBounds} The geographical bounds of the map as {@link LngLatBounds}.\n * @example\n * const bounds = map.getBounds();\n */\n getBounds(): LngLatBounds | null {\n return this.transform.getBounds();\n }\n\n /**\n * Returns the maximum geographical bounds the map is constrained to, or `null` if none set.\n *\n * @returns {Map} The map object.\n *\n * @example\n * const maxBounds = map.getMaxBounds();\n */\n getMaxBounds(): LngLatBounds | null {\n return this.transform.getMaxBounds() || null;\n }\n\n /**\n * Sets or clears the map's geographical bounds.\n *\n * Pan and zoom operations are constrained within these bounds.\n * If a pan or zoom is performed that would\n * display regions outside these bounds, the map will\n * instead display a position and zoom level\n * as close as possible to the operation's request while still\n * remaining within the bounds.\n *\n * For `mercator` projection, the viewport will be constrained to the bounds.\n * For other projections such as `globe`, only the map center will be constrained.\n *\n * @param {LngLatBoundsLike | null | undefined} bounds The maximum bounds to set. If `null` or `undefined` is provided, the function removes the map's maximum bounds.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Define bounds that conform to the `LngLatBoundsLike` object.\n * const bounds = [\n * [-74.04728, 40.68392], // [west, south]\n * [-73.91058, 40.87764] // [east, north]\n * ];\n * // Set the map's max bounds.\n * map.setMaxBounds(bounds);\n */\n setMaxBounds(bounds: LngLatBoundsLike): this {\n this.transform.setMaxBounds(LngLatBounds.convert(bounds));\n return this._update();\n }\n\n /**\n * Sets or clears the map's minimum zoom level.\n * If the map's current zoom level is lower than the new minimum,\n * the map will zoom to the new minimum.\n *\n * It is not always possible to zoom out and reach the set `minZoom`.\n * Other factors such as map height may restrict zooming. For example,\n * if the map is 512px tall it will not be possible to zoom below zoom 0\n * no matter what the `minZoom` is set to.\n *\n * @param {number | null | undefined} minZoom The minimum zoom level to set (-2 - 24).\n * If `null` or `undefined` is provided, the function removes the current minimum zoom and it will be reset to -2.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMinZoom(12.25);\n */\n setMinZoom(minZoom?: ?number): this {\n\n minZoom = minZoom === null || minZoom === undefined ? defaultMinZoom : minZoom;\n\n if (minZoom >= defaultMinZoom && minZoom <= this.transform.maxZoom) {\n this.transform.minZoom = minZoom;\n this._update();\n\n if (this.getZoom() < minZoom) {\n this.setZoom(minZoom);\n } else {\n this.fire(new Event('zoomstart'))\n .fire(new Event('zoom'))\n .fire(new Event('zoomend'));\n }\n\n return this;\n\n } else throw new Error(`minZoom must be between ${defaultMinZoom} and the current maxZoom, inclusive`);\n }\n\n /**\n * Returns the map's minimum allowable zoom level.\n *\n * @returns {number} Returns `minZoom`.\n * @example\n * const minZoom = map.getMinZoom();\n */\n getMinZoom(): number { return this.transform.minZoom; }\n\n /**\n * Sets or clears the map's maximum zoom level.\n * If the map's current zoom level is higher than the new maximum,\n * the map will zoom to the new maximum.\n *\n * @param {number | null | undefined} maxZoom The maximum zoom level to set.\n * If `null` or `undefined` is provided, the function removes the current maximum zoom (sets it to 22).\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMaxZoom(18.75);\n */\n setMaxZoom(maxZoom?: ?number): this {\n\n maxZoom = maxZoom === null || maxZoom === undefined ? defaultMaxZoom : maxZoom;\n\n if (maxZoom >= this.transform.minZoom) {\n this.transform.maxZoom = maxZoom;\n this._update();\n\n if (this.getZoom() > maxZoom) {\n this.setZoom(maxZoom);\n } else {\n this.fire(new Event('zoomstart'))\n .fire(new Event('zoom'))\n .fire(new Event('zoomend'));\n }\n\n return this;\n\n } else throw new Error(`maxZoom must be greater than the current minZoom`);\n }\n\n /**\n * Returns the map's maximum allowable zoom level.\n *\n * @returns {number} Returns `maxZoom`.\n * @example\n * const maxZoom = map.getMaxZoom();\n */\n getMaxZoom(): number { return this.transform.maxZoom; }\n\n /**\n * Sets or clears the map's minimum pitch.\n * If the map's current pitch is lower than the new minimum,\n * the map will pitch to the new minimum.\n *\n * @param {number | null | undefined} minPitch The minimum pitch to set (0-85). If `null` or `undefined` is provided, the function removes the current minimum pitch and resets it to 0.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMinPitch(5);\n */\n setMinPitch(minPitch?: ?number): this {\n\n minPitch = minPitch === null || minPitch === undefined ? defaultMinPitch : minPitch;\n\n if (minPitch < defaultMinPitch) {\n throw new Error(`minPitch must be greater than or equal to ${defaultMinPitch}`);\n }\n\n if (minPitch >= defaultMinPitch && minPitch <= this.transform.maxPitch) {\n this.transform.minPitch = minPitch;\n this._update();\n\n if (this.getPitch() < minPitch) {\n this.setPitch(minPitch);\n } else {\n this.fire(new Event('pitchstart'))\n .fire(new Event('pitch'))\n .fire(new Event('pitchend'));\n }\n\n return this;\n\n } else throw new Error(`minPitch must be between ${defaultMinPitch} and the current maxPitch, inclusive`);\n }\n\n /**\n * Returns the map's minimum allowable pitch.\n *\n * @returns {number} Returns `minPitch`.\n * @example\n * const minPitch = map.getMinPitch();\n */\n getMinPitch(): number { return this.transform.minPitch; }\n\n /**\n * Sets or clears the map's maximum pitch.\n * If the map's current pitch is higher than the new maximum,\n * the map will pitch to the new maximum.\n *\n * @param {number | null | undefined} maxPitch The maximum pitch to set.\n * If `null` or `undefined` is provided, the function removes the current maximum pitch (sets it to 85).\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMaxPitch(70);\n */\n setMaxPitch(maxPitch?: ?number): this {\n\n maxPitch = maxPitch === null || maxPitch === undefined ? defaultMaxPitch : maxPitch;\n\n if (maxPitch > defaultMaxPitch) {\n throw new Error(`maxPitch must be less than or equal to ${defaultMaxPitch}`);\n }\n\n if (maxPitch >= this.transform.minPitch) {\n this.transform.maxPitch = maxPitch;\n this._update();\n\n if (this.getPitch() > maxPitch) {\n this.setPitch(maxPitch);\n } else {\n this.fire(new Event('pitchstart'))\n .fire(new Event('pitch'))\n .fire(new Event('pitchend'));\n }\n\n return this;\n\n } else throw new Error(`maxPitch must be greater than or equal to minPitch`);\n }\n\n /**\n * Returns the map's maximum allowable pitch.\n *\n * @returns {number} Returns `maxPitch`.\n * @example\n * const maxPitch = map.getMaxPitch();\n */\n getMaxPitch(): number { return this.transform.maxPitch; }\n\n /**\n * Returns the state of `renderWorldCopies`. If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\n * container, there will be blank space beyond 180 and -180 degrees longitude.\n * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\n * map and the other on the left edge of the map) at every zoom level.\n *\n * @returns {boolean} Returns `renderWorldCopies` boolean.\n * @example\n * const worldCopiesRendered = map.getRenderWorldCopies();\n * @see [Example: Render world copies](https://docs.mapbox.com/mapbox-gl-js/example/render-world-copies/)\n */\n getRenderWorldCopies(): boolean { return this.transform.renderWorldCopies; }\n\n /**\n * Sets the state of `renderWorldCopies`.\n *\n * @param {boolean} renderWorldCopies If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\n * container, there will be blank space beyond 180 and -180 degrees longitude.\n * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\n * map and the other on the left edge of the map) at every zoom level.\n *\n * `undefined` is treated as `true`, `null` is treated as `false`.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setRenderWorldCopies(true);\n * @see [Example: Render world copies](https://docs.mapbox.com/mapbox-gl-js/example/render-world-copies/)\n */\n setRenderWorldCopies(renderWorldCopies?: ?boolean): this {\n this.transform.renderWorldCopies = renderWorldCopies;\n if (!this.transform.renderWorldCopies) {\n this._forceMarkerAndPopupUpdate(true);\n }\n return this._update();\n }\n\n /**\n * Returns the map's language, which is used for translating map labels and UI components.\n *\n * @private\n * @returns {undefined | string | string[]} Returns the map's language code.\n * @example\n * const language = map.getLanguage();\n */\n getLanguage(): ?string | ?string[] {\n return this._language;\n }\n\n _parseLanguage(language?: 'auto' | ?string | ?string[]): ?string | ?string[] {\n if (language === 'auto') return window.navigator.language;\n if (Array.isArray(language)) return language.length === 0 ?\n undefined :\n language.map(l => l === 'auto' ? window.navigator.language : l);\n\n return language;\n }\n\n /**\n * Sets the map's language, which is used for translating map labels and UI components.\n *\n * @private\n * @param {'auto' | string | string[]} [language] A string representing the desired language used for the map's labels and UI components. Languages can only be set on Mapbox vector tile sources.\n * Valid language strings must be a [BCP-47 language code](https://en.wikipedia.org/wiki/IETF_language_tag#List_of_subtags). Unsupported BCP-47 codes will not include any translations. Invalid codes will result in an recoverable error.\n * If a label has no translation for the selected language, it will display in the label's local language.\n * If param is set to `auto`, GL JS will select a user's preferred language as determined by the browser's [`window.navigator.language`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language) property.\n * If the `locale` property is not set separately, this language will also be used to localize the UI for supported languages.\n * If param is set to `undefined` or `null`, it will remove the current map language and reset the language used for translating map labels and UI components.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setLanguage('es');\n *\n * @example\n * map.setLanguage(['en-GB', 'en-US']);\n *\n * @example\n * map.setLanguage('auto');\n *\n * @example\n * map.setLanguage();\n */\n setLanguage(language?: 'auto' | ?string | ?string[]): this {\n const newLanguage = this._parseLanguage(language);\n if (!this.style || newLanguage === this._language) return this;\n this._language = newLanguage;\n\n this.style._reloadSources();\n\n for (const control of this._controls) {\n if (control._setLanguage) {\n control._setLanguage(this._language);\n }\n }\n\n return this;\n }\n\n /**\n * Returns the code for the map's worldview.\n *\n * @private\n * @returns {string} Returns the map's worldview code.\n * @example\n * const worldview = map.getWorldview();\n */\n getWorldview(): ?string {\n return this._worldview;\n }\n\n /**\n * Sets the map's worldview.\n *\n * @private\n * @param {string} [worldview] A string representing the desired worldview.\n * A worldview determines the way that certain disputed boundaries are rendered.\n * Valid worldview strings must be an [ISO alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes).\n * Unsupported ISO alpha-2 codes will fall back to the TileJSON's default worldview. Invalid codes will result in a recoverable error.\n * If param is set to `undefined` or `null`, it will cause the map to fall back to the TileJSON's default worldview.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setWorldView('JP');\n *\n * @example\n * map.setWorldView();\n */\n setWorldview(worldview?: ?string): this {\n if (!this.style || worldview === this._worldview) return this;\n\n this._worldview = worldview;\n this.style._reloadSources();\n\n return this;\n }\n\n /** @section {Point conversion} */\n\n /**\n * Returns a [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) object that defines the current map projection.\n *\n * @returns {ProjectionSpecification} The [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) defining the current map projection.\n * @example\n * const projection = map.getProjection();\n */\n getProjection(): ProjectionSpecification {\n if (this.transform.mercatorFromTransition) {\n return {name: \"globe\", center: [0, 0]};\n }\n return this.transform.getProjection();\n }\n\n /**\n * Returns true if map [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) has been set to globe AND the map is at a low enough zoom level that globe view is enabled.\n * @private\n * @returns {boolean} Returns `globe-is-active` boolean.\n * @example\n * if (map._showingGlobe()) {\n * // do globe things here\n * }\n */\n _showingGlobe(): boolean { return this.transform.projection.name === 'globe'; }\n\n /**\n * Sets the map's projection. If called with `null` or `undefined`, the map will reset to Mercator.\n *\n * @param {ProjectionSpecification | string | null | undefined} projection The projection that the map should be rendered in.\n * This can be a [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) object or a string of the projection's name.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setProjection('albers');\n * map.setProjection({\n * name: 'albers',\n * center: [35, 55],\n * parallels: [20, 60]\n * });\n * @see [Example: Display a web map using an alternate projection](https://docs.mapbox.com/mapbox-gl-js/example/map-projection/)\n * @see [Example: Use different map projections for web maps](https://docs.mapbox.com/mapbox-gl-js/example/projections/)\n */\n setProjection(projection?: ?ProjectionSpecification | string): this {\n this._lazyInitEmptyStyle();\n\n if (!projection) {\n projection = null;\n } else if (typeof projection === 'string') {\n projection = (({name: projection}: any): ProjectionSpecification);\n }\n\n this._useExplicitProjection = !!projection;\n const stylesheetProjection = this.style.stylesheet ? this.style.stylesheet.projection : null;\n return this._prioritizeAndUpdateProjection(projection, stylesheetProjection);\n }\n\n _updateProjectionTransition() {\n // The projection isn't globe, we can skip updating the transition\n if (this.getProjection().name !== 'globe') {\n return;\n }\n\n const tr = this.transform;\n const projection = tr.projection.name;\n let projectionHasChanged;\n\n if (projection === 'globe' && tr.zoom >= GLOBE_ZOOM_THRESHOLD_MAX) {\n tr.setMercatorFromTransition();\n projectionHasChanged = true;\n } else if (projection === 'mercator' && tr.zoom < GLOBE_ZOOM_THRESHOLD_MAX) {\n tr.setProjection({name: 'globe'});\n projectionHasChanged = true;\n }\n\n if (projectionHasChanged) {\n this.style.applyProjectionUpdate();\n this.style._forceSymbolLayerUpdate();\n }\n }\n\n _prioritizeAndUpdateProjection(explicitProjection: ?ProjectionSpecification, styleProjection: ?ProjectionSpecification): this {\n // Given a stylesheet and eventual runtime projection, in order of priority, we select:\n // 1. the explicit projection\n // 2. the stylesheet projection\n // 3. mercator (fallback)\n const prioritizedProjection = explicitProjection || styleProjection || {name: \"mercator\"};\n\n return this._updateProjection(prioritizedProjection);\n }\n\n _updateProjection(projection: ProjectionSpecification): this {\n let projectionHasChanged;\n\n if (projection.name === 'globe' && this.transform.zoom >= GLOBE_ZOOM_THRESHOLD_MAX) {\n projectionHasChanged = this.transform.setMercatorFromTransition();\n } else {\n projectionHasChanged = this.transform.setProjection(projection);\n }\n\n this.style.applyProjectionUpdate();\n\n if (projectionHasChanged) {\n this.painter.clearBackgroundTiles();\n for (const id in this.style._sourceCaches) {\n this.style._sourceCaches[id].clearTiles();\n }\n this._update(true);\n this._forceMarkerAndPopupUpdate(true);\n }\n\n return this;\n }\n\n /**\n * Returns a {@link Point} representing pixel coordinates, relative to the map's `container`,\n * that correspond to the specified geographical location.\n *\n * When the map is pitched and `lnglat` is completely behind the camera, there are no pixel\n * coordinates corresponding to that location. In that case,\n * the `x` and `y` components of the returned {@link Point} are set to Number.MAX_VALUE.\n *\n * @param {LngLatLike} lnglat The geographical location to project.\n * @returns {Point} The {@link Point} corresponding to `lnglat`, relative to the map's `container`.\n * @example\n * const coordinate = [-122.420679, 37.772537];\n * const point = map.project(coordinate);\n */\n project(lnglat: LngLatLike): Point {\n return this.transform.locationPoint3D(LngLat.convert(lnglat));\n }\n\n /**\n * Returns a {@link LngLat} representing geographical coordinates that correspond\n * to the specified pixel coordinates. If horizon is visible, and specified pixel is\n * above horizon, returns a {@link LngLat} corresponding to point on horizon, nearest\n * to the point.\n *\n * @param {PointLike} point The pixel coordinates to unproject.\n * @returns {LngLat} The {@link LngLat} corresponding to `point`.\n * @example\n * map.on('click', (e) => {\n * // When the map is clicked, get the geographic coordinate.\n * const coordinate = map.unproject(e.point);\n * });\n */\n unproject(point: PointLike): LngLat {\n return this.transform.pointLocation3D(Point.convert(point));\n }\n\n /** @section {Movement state} */\n\n /**\n * Returns true if the map is panning, zooming, rotating, or pitching due to a camera animation or user gesture.\n *\n * @returns {boolean} True if the map is moving.\n * @example\n * const isMoving = map.isMoving();\n */\n isMoving(): boolean {\n return this._moving || (this.handlers && this.handlers.isMoving()) || false;\n }\n\n /**\n * Returns true if the map is zooming due to a camera animation or user gesture.\n *\n * @returns {boolean} True if the map is zooming.\n * @example\n * const isZooming = map.isZooming();\n */\n isZooming(): boolean {\n return this._zooming || (this.handlers && this.handlers.isZooming()) || false;\n }\n\n /**\n * Returns true if the map is rotating due to a camera animation or user gesture.\n *\n * @returns {boolean} True if the map is rotating.\n * @example\n * map.isRotating();\n */\n isRotating(): boolean {\n return this._rotating || (this.handlers && this.handlers.isRotating()) || false;\n }\n\n _isDragging(): boolean {\n return (this.handlers && this.handlers._isDragging()) || false;\n }\n\n _createDelegatedListener(type: MapEvent, layers: Array, listener: any): any {\n if (type === 'mouseenter' || type === 'mouseover') {\n let mousein = false;\n const mousemove = (e: MapMouseEvent) => {\n const filteredLayers = layers.filter(layerId => this.getLayer(layerId));\n const features = filteredLayers.length ? this.queryRenderedFeatures(e.point, {layers: filteredLayers}) : [];\n if (!features.length) {\n mousein = false;\n } else if (!mousein) {\n mousein = true;\n listener.call(this, new MapMouseEvent(type, this, e.originalEvent, {features}));\n }\n };\n const mouseout = () => {\n mousein = false;\n };\n\n return {layers: new Set(layers), listener, delegates: {mousemove, mouseout}};\n } else if (type === 'mouseleave' || type === 'mouseout') {\n let mousein = false;\n const mousemove = (e: MapMouseEvent) => {\n const filteredLayers = layers.filter(layerId => this.getLayer(layerId));\n const features = filteredLayers.length ? this.queryRenderedFeatures(e.point, {layers: filteredLayers}) : [];\n if (features.length) {\n mousein = true;\n } else if (mousein) {\n mousein = false;\n listener.call(this, new MapMouseEvent(type, this, e.originalEvent));\n }\n };\n const mouseout = (e: MapMouseEvent) => {\n if (mousein) {\n mousein = false;\n listener.call(this, new MapMouseEvent(type, this, e.originalEvent));\n }\n };\n\n return {layers: new Set(layers), listener, delegates: {mousemove, mouseout}};\n } else {\n const delegate = (e: MapMouseEvent) => {\n const filteredLayers = layers.filter(layerId => this.getLayer(layerId));\n const features = filteredLayers.length ? this.queryRenderedFeatures(e.point, {layers: filteredLayers}) : [];\n if (features.length) {\n // Here we need to mutate the original event, so that preventDefault works as expected.\n e.features = features;\n listener.call(this, e);\n delete e.features;\n }\n };\n\n return {layers: new Set(layers), listener, delegates: {[(type: string)]: delegate}};\n }\n }\n\n /** @section {Working with events} */\n\n /**\n * Adds a listener for events of a specified type,\n * optionally limited to features in a specified style layer.\n *\n * @param {string} type The event type to listen for. Events compatible with the optional `layerId` parameter are triggered\n * when the cursor enters a visible portion of the specified layer from outside that layer or outside the map canvas.\n *\n * | Event | Compatible with `layerId` |\n * |-----------------------------------------------------------|---------------------------|\n * | [`mousedown`](#map.event:mousedown) | yes |\n * | [`mouseup`](#map.event:mouseup) | yes |\n * | [`mouseover`](#map.event:mouseover) | yes |\n * | [`mouseout`](#map.event:mouseout) | yes |\n * | [`mousemove`](#map.event:mousemove) | yes |\n * | [`mouseenter`](#map.event:mouseenter) | yes (required) |\n * | [`mouseleave`](#map.event:mouseleave) | yes (required) |\n * | [`preclick`](#map.event:preclick) | |\n * | [`click`](#map.event:click) | yes |\n * | [`dblclick`](#map.event:dblclick) | yes |\n * | [`contextmenu`](#map.event:contextmenu) | yes |\n * | [`touchstart`](#map.event:touchstart) | yes |\n * | [`touchend`](#map.event:touchend) | yes |\n * | [`touchcancel`](#map.event:touchcancel) | yes |\n * | [`wheel`](#map.event:wheel) | |\n * | [`resize`](#map.event:resize) | |\n * | [`remove`](#map.event:remove) | |\n * | [`touchmove`](#map.event:touchmove) | |\n * | [`movestart`](#map.event:movestart) | |\n * | [`move`](#map.event:move) | |\n * | [`moveend`](#map.event:moveend) | |\n * | [`dragstart`](#map.event:dragstart) | |\n * | [`drag`](#map.event:drag) | |\n * | [`dragend`](#map.event:dragend) | |\n * | [`zoomstart`](#map.event:zoomstart) | |\n * | [`zoom`](#map.event:zoom) | |\n * | [`zoomend`](#map.event:zoomend) | |\n * | [`rotatestart`](#map.event:rotatestart) | |\n * | [`rotate`](#map.event:rotate) | |\n * | [`rotateend`](#map.event:rotateend) | |\n * | [`pitchstart`](#map.event:pitchstart) | |\n * | [`pitch`](#map.event:pitch) | |\n * | [`pitchend`](#map.event:pitchend) | |\n * | [`boxzoomstart`](#map.event:boxzoomstart) | |\n * | [`boxzoomend`](#map.event:boxzoomend) | |\n * | [`boxzoomcancel`](#map.event:boxzoomcancel) | |\n * | [`webglcontextlost`](#map.event:webglcontextlost) | |\n * | [`webglcontextrestored`](#map.event:webglcontextrestored) | |\n * | [`load`](#map.event:load) | |\n * | [`render`](#map.event:render) | |\n * | [`idle`](#map.event:idle) | |\n * | [`error`](#map.event:error) | |\n * | [`data`](#map.event:data) | |\n * | [`styledata`](#map.event:styledata) | |\n * | [`sourcedata`](#map.event:sourcedata) | |\n * | [`dataloading`](#map.event:dataloading) | |\n * | [`styledataloading`](#map.event:styledataloading) | |\n * | [`sourcedataloading`](#map.event:sourcedataloading) | |\n * | [`styleimagemissing`](#map.event:styleimagemissing) | |\n * | [`style.load`](#map.event:style.load) | |\n *\n * @param {string | Array} layerIds (optional) The ID(s) of a style layer(s). If you provide a `layerId`,\n * the listener will be triggered only if its location is within a visible feature in these layers,\n * and the event will have a `features` property containing an array of the matching features.\n * If you do not provide `layerIds`, the listener will be triggered by a corresponding event\n * happening anywhere on the map, and the event will not have a `features` property.\n * Note that many event types are not compatible with the optional `layerIds` parameter.\n * @param {Function} listener The function to be called when the event is fired.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Set an event listener that will fire\n * // when the map has finished loading.\n * map.on('load', () => {\n * // Add a new layer.\n * map.addLayer({\n * id: 'points-of-interest',\n * source: {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v8'\n * },\n * 'source-layer': 'poi_label',\n * type: 'circle',\n * paint: {\n * // Mapbox Style Specification paint properties\n * },\n * layout: {\n * // Mapbox Style Specification layout properties\n * }\n * });\n * });\n * @example\n * // Set an event listener that will fire\n * // when a feature on the countries layer of the map is clicked.\n * map.on('click', 'countries', (e) => {\n * new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setHTML(`Country name: ${e.features[0].properties.name}`)\n * .addTo(map);\n * });\n * @example\n * // Set an event listener that will fire\n * // when a feature on the countries or background layers of the map is clicked.\n * map.on('click', ['countries', 'background'], (e) => {\n * new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setHTML(`Country name: ${e.features[0].properties.name}`)\n * .addTo(map);\n * });\n * @see [Example: Add 3D terrain to a map](https://docs.mapbox.com/mapbox-gl-js/example/add-terrain/)\n * @see [Example: Center the map on a clicked symbol](https://docs.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n * @see [Example: Create a draggable marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Create a hover effect](https://docs.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n */\n on(type: MapEvent, layerIds: any, listener: any): this {\n if (listener === undefined) {\n return super.on(type, layerIds);\n }\n\n if (!Array.isArray(layerIds)) {\n layerIds = [layerIds];\n }\n const delegatedListener = this._createDelegatedListener(type, layerIds, listener);\n\n this._delegatedListeners = this._delegatedListeners || {};\n this._delegatedListeners[type] = this._delegatedListeners[type] || [];\n this._delegatedListeners[type].push(delegatedListener);\n\n for (const event in delegatedListener.delegates) {\n this.on((event: any), delegatedListener.delegates[event]);\n }\n\n return this;\n }\n\n /**\n * Adds a listener that will be called only once to a specified event type,\n * optionally limited to events occurring on features in a specified style layer.\n *\n * @param {string} type The event type to listen for; one of `'mousedown'`, `'mouseup'`, `'preclick'`, `'click'`, `'dblclick'`,\n * `'mousemove'`, `'mouseenter'`, `'mouseleave'`, `'mouseover'`, `'mouseout'`, `'contextmenu'`, `'touchstart'`,\n * `'touchend'`, or `'touchcancel'`. `mouseenter` and `mouseover` events are triggered when the cursor enters\n * a visible portion of the specified layer from outside that layer or outside the map canvas. `mouseleave`\n * and `mouseout` events are triggered when the cursor leaves a visible portion of the specified layer, or leaves\n * the map canvas.\n * @param {string | Array} layerIds (optional) The ID(s) of a style layer(s). If you provide `layerIds`,\n * the listener will be triggered only if its location is within a visible feature in these layers,\n * and the event will have a `features` property containing an array of the matching features.\n * If you do not provide `layerIds`, the listener will be triggered by a corresponding event\n * happening anywhere on the map, and the event will not have a `features` property.\n * Note that many event types are not compatible with the optional `layerIds` parameter.\n * @param {Function} listener The function to be called when the event is fired.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Log the coordinates of a user's first map touch.\n * map.once('touchstart', (e) => {\n * console.log(`The first map touch was at: ${e.lnglat}`);\n * });\n * @example\n * // Log the coordinates of a user's first map touch\n * // on a specific layer.\n * map.once('touchstart', 'my-point-layer', (e) => {\n * console.log(`The first map touch on the point layer was at: ${e.lnglat}`);\n * });\n * @example\n * // Log the coordinates of a user's first map touch\n * // on specific layers.\n * map.once('touchstart', ['my-point-layer', 'my-point-layer-2'], (e) => {\n * console.log(`The first map touch on the point layer was at: ${e.lnglat}`);\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Animate the camera around a point with 3D terrain](https://docs.mapbox.com/mapbox-gl-js/example/free-camera-point/)\n * @see [Example: Play map locations as a slideshow](https://docs.mapbox.com/mapbox-gl-js/example/playback-locations/)\n */\n once(type: MapEvent, layerIds: any, listener: any): this | Promise {\n\n if (listener === undefined) {\n return super.once(type, layerIds);\n }\n\n if (!Array.isArray(layerIds)) {\n layerIds = [layerIds];\n }\n const delegatedListener = this._createDelegatedListener(type, layerIds, listener);\n\n for (const event in delegatedListener.delegates) {\n this.once((event: any), delegatedListener.delegates[event]);\n }\n\n return this;\n }\n\n /**\n * Removes an event listener previously added with {@link Map#on},\n * optionally limited to layer-specific events.\n *\n * @param {string} type The event type previously used to install the listener.\n * @param {string | Array} layerIds (optional) The layer ID(s) previously used to install the listener.\n * @param {Function} listener The function previously installed as a listener.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Create a function to print coordinates while a mouse is moving.\n * function onMove(e) {\n * console.log(`The mouse is moving: ${e.lngLat}`);\n * }\n * // Create a function to unbind the `mousemove` event.\n * function onUp(e) {\n * console.log(`The final coordinates are: ${e.lngLat}`);\n * map.off('mousemove', onMove);\n * }\n * // When a click occurs, bind both functions to mouse events.\n * map.on('mousedown', (e) => {\n * map.on('mousemove', onMove);\n * map.once('mouseup', onUp);\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n off(type: MapEvent, layerIds: any, listener: any): this {\n if (listener === undefined) {\n return super.off(type, layerIds);\n }\n\n layerIds = new Set(Array.isArray(layerIds) ? layerIds : [layerIds]);\n const areLayerArraysEqual = (hash1: Set, hash2: Set) => {\n if (hash1.size !== hash2.size) {\n return false; // at-least 1 arr has duplicate value(s)\n }\n\n // comparing values\n for (const value of hash1) {\n if (!hash2.has(value)) return false;\n }\n return true;\n };\n\n const removeDelegatedListeners = (listeners: Array) => {\n for (let i = 0; i < listeners.length; i++) {\n const delegatedListener = listeners[i];\n if (delegatedListener.listener === listener && areLayerArraysEqual(delegatedListener.layers, layerIds)) {\n for (const event in delegatedListener.delegates) {\n this.off((event: any), delegatedListener.delegates[event]);\n }\n listeners.splice(i, 1);\n return this;\n }\n }\n };\n\n const delegatedListeners = this._delegatedListeners ? this._delegatedListeners[type] : undefined;\n if (delegatedListeners) {\n removeDelegatedListeners(delegatedListeners);\n }\n\n return this;\n }\n\n /** @section {Querying features} */\n\n /**\n * Returns an array of [GeoJSON](http://geojson.org/)\n * [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2)\n * representing visible features that satisfy the query parameters.\n *\n * @param {PointLike|Array} [geometry] - The geometry of the query region in pixels:\n * either a single point or bottom left and top right points describing a bounding box, where the origin is at the top left.\n * Omitting this parameter (by calling {@link Map#queryRenderedFeatures} with zero arguments,\n * or with only an `options` argument) is equivalent to passing a bounding box encompassing the entire\n * map viewport.\n * Only values within the existing viewport are supported.\n * @param {Object} [options] Options object.\n * @param {Array} [options.layers] An array of [style layer IDs](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layer-id) for the query to inspect.\n * Only features within these layers will be returned. If this parameter is undefined, all layers will be checked.\n * @param {Array} [options.filter] A [filter](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter)\n * to limit query results.\n * @param {boolean} [options.validate=true] Whether to check if the [options.filter] conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n *\n * @returns {Array} An array of [GeoJSON](http://geojson.org/)\n * [feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n *\n * The `properties` value of each returned feature object contains the properties of its source feature. For GeoJSON sources, only\n * string and numeric property values are supported. `null`, `Array`, and `Object` values are not supported.\n *\n * Each feature includes top-level `layer`, `source`, and `sourceLayer` properties. The `layer` property is an object\n * representing the style layer to which the feature belongs. Layout and paint properties in this object contain values\n * which are fully evaluated for the given zoom level and feature.\n *\n * Only features that are currently rendered are included. Some features will **not** be included, like:\n *\n * - Features from layers whose `visibility` property is `\"none\"`.\n * - Features from layers whose zoom range excludes the current zoom level.\n * - Symbol features that have been hidden due to text or icon collision.\n *\n * Features from all other layers are included, including features that may have no visible\n * contribution to the rendered result; for example, because the layer's opacity or color alpha component is set to\n * 0.\n *\n * The topmost rendered feature appears first in the returned array, and subsequent features are sorted by\n * descending z-order. Features that are rendered multiple times (due to wrapping across the antimeridian at low\n * zoom levels) are returned only once (though subject to the following caveat).\n *\n * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature\n * geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple\n * times in query results. For example, suppose there is a highway running through the bounding rectangle of a query.\n * The results of the query will be those parts of the highway that lie within the map tiles covering the bounding\n * rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile\n * will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple\n * tiles due to tile buffering.\n *\n * @example\n * // Find all features at a point\n * const features = map.queryRenderedFeatures(\n * [20, 35],\n * {layers: ['my-layer-name']}\n * );\n *\n * @example\n * // Find all features within a static bounding box\n * const features = map.queryRenderedFeatures(\n * [[10, 20], [30, 50]],\n * {layers: ['my-layer-name']}\n * );\n *\n * @example\n * // Find all features within a bounding box around a point\n * const width = 10;\n * const height = 20;\n * const features = map.queryRenderedFeatures([\n * [point.x - width / 2, point.y - height / 2],\n * [point.x + width / 2, point.y + height / 2]\n * ], {layers: ['my-layer-name']});\n *\n * @example\n * // Query all rendered features from a single layer\n * const features = map.queryRenderedFeatures({layers: ['my-layer-name']});\n * @see [Example: Get features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/queryrenderedfeatures/)\n * @see [Example: Highlight features within a bounding box](https://www.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Filter features within map view](https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n */\n queryRenderedFeatures(geometry?: PointLike | [PointLike, PointLike], options?: Object): Array {\n // The first parameter can be omitted entirely, making this effectively an overloaded method\n // with two signatures:\n //\n // queryRenderedFeatures(geometry: PointLike | [PointLike, PointLike], options?: Object)\n // queryRenderedFeatures(options?: Object)\n //\n // There no way to express that in a way that's compatible with both flow and documentation.js.\n // Related: https://github.com/facebook/flow/issues/1556\n\n if (!this.style) {\n return [];\n }\n\n if (options === undefined && geometry !== undefined && !(geometry instanceof Point) && !Array.isArray(geometry)) {\n options = (geometry: Object);\n geometry = undefined;\n }\n\n options = options || {};\n geometry = geometry || [([0, 0]: PointLike), ([this.transform.width, this.transform.height]: PointLike)];\n\n return this.style.queryRenderedFeatures(geometry, options, this.transform);\n }\n\n /**\n * Returns an array of [GeoJSON](http://geojson.org/)\n * [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2)\n * representing features within the specified vector tile or GeoJSON source that satisfy the query parameters.\n *\n * @param {string} sourceId The ID of the vector tile or GeoJSON source to query.\n * @param {Object} [parameters] Options object.\n * @param {string} [parameters.sourceLayer] The name of the [source layer](https://docs.mapbox.com/help/glossary/source-layer/)\n * to query. *For vector tile sources, this parameter is required.* For GeoJSON sources, it is ignored.\n * @param {Array} [parameters.filter] A [filter](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter)\n * to limit query results.\n * @param {boolean} [parameters.validate=true] Whether to check if the [parameters.filter] conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n *\n * @returns {Array} An array of [GeoJSON](http://geojson.org/)\n * [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n *\n * In contrast to {@link Map#queryRenderedFeatures}, this function returns all features matching the query parameters,\n * whether or not they are rendered by the current style (in other words, are visible). The domain of the query includes all currently-loaded\n * vector tiles and GeoJSON source tiles: this function does not check tiles outside the currently\n * visible viewport.\n *\n * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature\n * geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple\n * times in query results. For example, suppose there is a highway running through the bounding rectangle of a query.\n * The results of the query will be those parts of the highway that lie within the map tiles covering the bounding\n * rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile\n * will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple\n * tiles due to tile buffering.\n *\n * @example\n * // Find all features in one source layer in a vector source\n * const features = map.querySourceFeatures('your-source-id', {\n * sourceLayer: 'your-source-layer'\n * });\n *\n * @see [Example: Highlight features containing similar data](https://www.mapbox.com/mapbox-gl-js/example/query-similar-features/)\n */\n querySourceFeatures(sourceId: string, parameters: ?{sourceLayer: ?string, filter: ?Array, validate?: boolean}): Array {\n return this.style.querySourceFeatures(sourceId, parameters);\n }\n\n /**\n * Determines if the given point is located on a visible map surface.\n *\n * @param {PointLike} point - The point to be checked, specified as an array of two numbers representing the x and y coordinates, or as a {@link https://docs.mapbox.com/mapbox-gl-js/api/geography/#point|Point} object.\n * @returns {boolean} Returns `true` if the point is on the visible map surface, otherwise returns `false`.\n * @example\n * const pointOnSurface = map.isPointOnSurface([100, 200]);\n */\n isPointOnSurface(point: PointLike): boolean {\n const {name} = this.transform.projection;\n if (name !== 'globe' && name !== 'mercator') {\n warnOnce(`${name} projection does not support isPointOnSurface, this API may behave unexpectedly.`);\n }\n\n return this.transform.isPointOnSurface(Point.convert(point));\n }\n\n /** @section {Working with styles} */\n\n /**\n * Updates the map's Mapbox style object with a new value.\n *\n * If a style is already set when this is used and the `diff` option is set to `true`, the map renderer will attempt to compare the given style\n * against the map's current state and perform only the changes necessary to make the map style match the desired state. Changes in sprites\n * (images used for icons and patterns) and glyphs (fonts for label text) **cannot** be diffed. If the sprites or fonts used in the current\n * style and the given style are different in any way, the map renderer will force a full update, removing the current style and building\n * the given one from scratch.\n *\n * @param {Object | string| null} style A JSON object conforming to the schema described in the\n * [Mapbox Style Specification](https://mapbox.com/mapbox-gl-style-spec/), or a URL to such JSON.\n * @param {Object} [options] Options object.\n * @param {boolean} [options.diff=true] If false, force a 'full' update, removing the current style\n * and building the given one instead of attempting a diff-based update.\n * @param {string} [options.localIdeographFontFamily='sans-serif'] Defines a CSS\n * font-family for locally overriding generation of glyphs in the 'CJK Unified Ideographs', 'Hiragana', 'Katakana' and 'Hangul Syllables' ranges.\n * In these ranges, font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * Set to `false`, to enable font settings from the map's style for these glyph ranges.\n * Forces a full update.\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * map.setStyle(\"mapbox://styles/mapbox/streets-v11\");\n *\n * @see [Example: Change a map's style](https://www.mapbox.com/mapbox-gl-js/example/setstyle/)\n */\n setStyle(style: StyleSpecification | string | null, options?: {diff?: boolean} & StyleOptions): this {\n options = extend({}, {localIdeographFontFamily: this._localIdeographFontFamily, localFontFamily: this._localFontFamily}, options);\n\n if ((options.diff !== false &&\n options.localIdeographFontFamily === this._localIdeographFontFamily &&\n options.localFontFamily === this._localFontFamily) && this.style && style) {\n this._diffStyle(style, options);\n return this;\n } else {\n this._localIdeographFontFamily = options.localIdeographFontFamily;\n this._localFontFamily = options.localFontFamily;\n return this._updateStyle(style, options);\n }\n }\n\n _getUIString(key: string): string {\n const str = this._locale[key];\n if (str == null) {\n throw new Error(`Missing UI string '${key}'`);\n }\n\n return str;\n }\n\n _updateStyle(style: StyleSpecification | string | null, options?: {diff?: boolean} & StyleOptions): this {\n if (this.style) {\n this.style.setEventedParent(null);\n this.style._remove();\n this.style = (undefined: any); // we lazy-init it so it's never undefined when accessed\n }\n\n if (style) {\n this.style = new Style(this, options || {});\n this.style.setEventedParent(this, {style: this.style});\n\n if (typeof style === 'string') {\n this.style.loadURL(style);\n } else {\n this.style.loadJSON(style);\n }\n }\n this._updateTerrain();\n return this;\n }\n\n _lazyInitEmptyStyle() {\n if (!this.style) {\n this.style = new Style(this, {});\n this.style.setEventedParent(this, {style: this.style});\n this.style.loadEmpty();\n }\n }\n\n _diffStyle(style: StyleSpecification | string, options?: {diff?: boolean} & StyleOptions) {\n if (typeof style === 'string') {\n const url = this._requestManager.normalizeStyleURL(style);\n const request = this._requestManager.transformRequest(url, ResourceType.Style);\n getJSON(request, (error: ?Error, json: ?Object) => {\n if (error) {\n this.fire(new ErrorEvent(error));\n } else if (json) {\n this._updateDiff(json, options);\n }\n });\n } else if (typeof style === 'object') {\n this._updateDiff(style, options);\n }\n }\n\n _updateDiff(style: StyleSpecification, options?: {diff?: boolean} & StyleOptions) {\n try {\n if (this.style.setState(style)) {\n this._update(true);\n }\n } catch (e) {\n warnOnce(\n `Unable to perform style diff: ${e.message || e.error || e}. Rebuilding the style from scratch.`\n );\n this._updateStyle(style, options);\n }\n }\n\n /**\n * Returns the map's Mapbox [style](https://docs.mapbox.com/help/glossary/style/) object, a JSON object which can be used to recreate the map's style.\n *\n * @returns {Object} The map's style JSON object.\n *\n * @example\n * map.on('load', () => {\n * const styleJson = map.getStyle();\n * });\n *\n */\n getStyle(): ?StyleSpecification {\n if (this.style) {\n return this.style.serialize();\n }\n }\n\n /**\n * Returns a Boolean indicating whether the map's style is fully loaded.\n *\n * @returns {boolean} A Boolean indicating whether the style is fully loaded.\n *\n * @example\n * const styleLoadStatus = map.isStyleLoaded();\n */\n isStyleLoaded(): boolean {\n if (!this.style) {\n warnOnce('There is no style added to the map.');\n return false;\n }\n return this.style.loaded();\n }\n\n /** @section {Sources} */\n\n /**\n * Adds a source to the map's style.\n *\n * @param {string} id The ID of the source to add. Must not conflict with existing sources.\n * @param {Object} source The source object, conforming to the\n * Mapbox Style Specification's [source definition](https://www.mapbox.com/mapbox-gl-style-spec/#sources) or\n * {@link CanvasSourceOptions}.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.addSource('my-data', {\n * type: 'vector',\n * url: 'mapbox://myusername.tilesetid'\n * });\n * @example\n * map.addSource('my-data', {\n * \"type\": \"geojson\",\n * \"data\": {\n * \"type\": \"Feature\",\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-77.0323, 38.9131]\n * },\n * \"properties\": {\n * \"title\": \"Mapbox DC\",\n * \"marker-symbol\": \"monument\"\n * }\n * }\n * });\n * @see Example: Vector source: [Show and hide layers](https://docs.mapbox.com/mapbox-gl-js/example/toggle-layers/)\n * @see Example: GeoJSON source: [Add live realtime data](https://docs.mapbox.com/mapbox-gl-js/example/live-geojson/)\n * @see Example: Raster DEM source: [Add hillshading](https://docs.mapbox.com/mapbox-gl-js/example/hillshade/)\n */\n addSource(id: string, source: SourceSpecification): this {\n this._lazyInitEmptyStyle();\n this.style.addSource(id, source);\n return this._update(true);\n }\n\n /**\n * Returns a Boolean indicating whether the source is loaded. Returns `true` if the source with\n * the given ID in the map's style has no outstanding network requests, otherwise `false`.\n *\n * @param {string} id The ID of the source to be checked.\n * @returns {boolean} A Boolean indicating whether the source is loaded.\n * @example\n * const sourceLoaded = map.isSourceLoaded('bathymetry-data');\n */\n isSourceLoaded(id: string): boolean {\n return !!this.style && this.style._isSourceCacheLoaded(id);\n }\n\n /**\n * Returns a Boolean indicating whether all tiles in the viewport from all sources on\n * the style are loaded.\n *\n * @returns {boolean} A Boolean indicating whether all tiles are loaded.\n * @example\n * const tilesLoaded = map.areTilesLoaded();\n */\n\n areTilesLoaded(): boolean {\n const sources = this.style && this.style._sourceCaches;\n for (const id in sources) {\n const source = sources[id];\n const tiles = source._tiles;\n for (const t in tiles) {\n const tile = tiles[t];\n if (!(tile.state === 'loaded' || tile.state === 'errored')) return false;\n }\n }\n return true;\n }\n\n /**\n * Adds a [custom source type](#Custom Sources), making it available for use with\n * {@link Map#addSource}.\n * @private\n * @param {string} name The name of the source type; source definition objects use this name in the `{type: ...}` field.\n * @param {Function} SourceType A {@link Source} constructor.\n * @param {Function} callback Called when the source type is ready or with an error argument if there is an error.\n */\n addSourceType(name: string, SourceType: any, callback: Function) {\n this._lazyInitEmptyStyle();\n this.style.addSourceType(name, SourceType, callback);\n }\n\n /**\n * Removes a source from the map's style.\n *\n * @param {string} id The ID of the source to remove.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.removeSource('bathymetry-data');\n */\n removeSource(id: string): this {\n this.style.removeSource(id);\n this._updateTerrain();\n return this._update(true);\n }\n\n /**\n * Returns the source with the specified ID in the map's style.\n *\n * This method is often used to update a source using the instance members for the relevant\n * source type as defined in [Sources](#sources).\n * For example, setting the `data` for a GeoJSON source or updating the `url` and `coordinates`\n * of an image source.\n *\n * @param {string} id The ID of the source to get.\n * @returns {?Object} The style source with the specified ID or `undefined` if the ID\n * corresponds to no existing sources.\n * The shape of the object varies by source type.\n * A list of options for each source type is available on the Mapbox Style Specification's\n * [Sources](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) page.\n * @example\n * const sourceObject = map.getSource('points');\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Animate a point](https://docs.mapbox.com/mapbox-gl-js/example/animate-point-along-line/)\n * @see [Example: Add live realtime data](https://docs.mapbox.com/mapbox-gl-js/example/live-geojson/)\n */\n getSource(id: string): ?Source {\n return this.style.getSource(id);\n }\n\n /** @section {Images} */\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Add an image to the style. This image can be displayed on the map like any other icon in the style's\n * [sprite](https://docs.mapbox.com/mapbox-gl-js/style-spec/sprite/) using the image's ID with\n * [`icon-image`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layout-symbol-icon-image),\n * [`background-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-background-background-pattern),\n * [`fill-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-fill-fill-pattern),\n * or [`line-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-line-line-pattern).\n * A {@link Map.event:error} event will be fired if there is not enough space in the sprite to add this image.\n *\n * @param {string} id The ID of the image.\n * @param {HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: (Uint8Array | Uint8ClampedArray)} | StyleImageInterface} image The image as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`\n * properties with the same format as `ImageData`.\n * @param {Object | null} options Options object.\n * @param {number} options.pixelRatio The ratio of pixels in the image to physical pixels on the screen.\n * @param {boolean} options.sdf Whether the image should be interpreted as an SDF image.\n * @param {[number, number, number, number]} options.content `[x1, y1, x2, y2]` If `icon-text-fit` is used in a layer with this image, this option defines the part of the image that can be covered by the content in `text-field`.\n * @param {Array<[number, number]>} options.stretchX `[[x1, x2], ...]` If `icon-text-fit` is used in a layer with this image, this option defines the part(s) of the image that can be stretched horizontally.\n * @param {Array<[number, number]>} options.stretchY `[[y1, y2], ...]` If `icon-text-fit` is used in a layer with this image, this option defines the part(s) of the image that can be stretched vertically.\n *\n * @example\n * // If the style's sprite does not already contain an image with ID 'cat',\n * // add the image 'cat-icon.png' to the style's sprite with the ID 'cat'.\n * map.loadImage('https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cat_silhouette.svg/400px-Cat_silhouette.svg.png', (error, image) => {\n * if (error) throw error;\n * if (!map.hasImage('cat')) map.addImage('cat', image);\n * });\n *\n * // Add a stretchable image that can be used with `icon-text-fit`\n * // In this example, the image is 600px wide by 400px high.\n * map.loadImage('https://upload.wikimedia.org/wikipedia/commons/8/89/Black_and_White_Boxed_%28bordered%29.png', (error, image) => {\n * if (error) throw error;\n * if (!map.hasImage('border-image')) {\n * map.addImage('border-image', image, {\n * content: [16, 16, 300, 384], // place text over left half of image, avoiding the 16px border\n * stretchX: [[16, 584]], // stretch everything horizontally except the 16px border\n * stretchY: [[16, 384]], // stretch everything vertically except the 16px border\n * });\n * }\n * });\n *\n *\n * @see Example: Use `HTMLImageElement`: [Add an icon to the map](https://www.mapbox.com/mapbox-gl-js/example/add-image/)\n * @see Example: Use `ImageData`: [Add a generated icon to the map](https://www.mapbox.com/mapbox-gl-js/example/add-image-generated/)\n */\n addImage(id: string,\n image: HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: Uint8Array | Uint8ClampedArray} | StyleImageInterface,\n {pixelRatio = 1, sdf = false, stretchX, stretchY, content}: $Shape = {}) {\n this._lazyInitEmptyStyle();\n const version = 0;\n\n if (image instanceof window.HTMLImageElement || (window.ImageBitmap && image instanceof window.ImageBitmap)) {\n const {width, height, data} = browser.getImageData(image);\n this.style.addImage(id, {data: new RGBAImage({width, height}, data), pixelRatio, stretchX, stretchY, content, sdf, version});\n } else if (image.width === undefined || image.height === undefined) {\n this.fire(new ErrorEvent(new Error(\n 'Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' +\n 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`')));\n } else {\n const {width, height} = image;\n const userImage = ((image: any): StyleImageInterface);\n const data = userImage.data;\n\n this.style.addImage(id, {\n data: new RGBAImage({width, height}, new Uint8Array(data)),\n pixelRatio,\n stretchX,\n stretchY,\n content,\n sdf,\n version,\n userImage\n });\n\n if (userImage.onAdd) {\n userImage.onAdd(this, id);\n }\n }\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Update an existing image in a style. This image can be displayed on the map like any other icon in the style's\n * [sprite](https://docs.mapbox.com/help/glossary/sprite/) using the image's ID with\n * [`icon-image`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layout-symbol-icon-image),\n * [`background-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-background-background-pattern),\n * [`fill-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-fill-fill-pattern),\n * or [`line-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-line-line-pattern).\n *\n * @param {string} id The ID of the image.\n * @param {HTMLImageElement | ImageBitmap | ImageData | StyleImageInterface} image The image as an `HTMLImageElement`, [`ImageData`](https://developer.mozilla.org/en-US/docs/Web/API/ImageData), [`ImageBitmap`](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) or object with `width`, `height`, and `data`\n * properties with the same format as `ImageData`.\n *\n * @example\n * // Load an image from an external URL.\n * map.loadImage('http://placekitten.com/50/50', (error, image) => {\n * if (error) throw error;\n * // If an image with the ID 'cat' already exists in the style's sprite,\n * // replace that image with a new image, 'other-cat-icon.png'.\n * if (map.hasImage('cat')) map.updateImage('cat', image);\n * });\n */\n updateImage(id: string,\n image: HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: Uint8Array | Uint8ClampedArray} | StyleImageInterface) {\n\n const existingImage = this.style.getImage(id);\n if (!existingImage) {\n this.fire(new ErrorEvent(new Error(\n 'The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.')));\n return;\n }\n const imageData = (image instanceof window.HTMLImageElement || (window.ImageBitmap && image instanceof window.ImageBitmap)) ? browser.getImageData(image) : image;\n const {width, height} = imageData;\n // Flow can't refine the type enough to exclude ImageBitmap\n const data = ((imageData: any).data: Uint8Array | Uint8ClampedArray);\n\n if (width === undefined || height === undefined) {\n this.fire(new ErrorEvent(new Error(\n 'Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' +\n 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`')));\n return;\n }\n\n if (width !== existingImage.data.width || height !== existingImage.data.height) {\n this.fire(new ErrorEvent(new Error(\n `The width and height of the updated image (${width}, ${height})\n must be that same as the previous version of the image\n (${existingImage.data.width}, ${existingImage.data.height})`)));\n return;\n }\n\n const copy = !(image instanceof window.HTMLImageElement || (window.ImageBitmap && image instanceof window.ImageBitmap));\n existingImage.data.replace(data, copy);\n\n this.style.updateImage(id, existingImage);\n }\n\n /**\n * Check whether or not an image with a specific ID exists in the style. This checks both images\n * in the style's original [sprite](https://docs.mapbox.com/help/glossary/sprite/) and any images\n * that have been added at runtime using {@link Map#addImage}.\n *\n * @param {string} id The ID of the image.\n *\n * @returns {boolean} A Boolean indicating whether the image exists.\n * @example\n * // Check if an image with the ID 'cat' exists in\n * // the style's sprite.\n * const catIconExists = map.hasImage('cat');\n */\n hasImage(id: string): boolean {\n if (!id) {\n this.fire(new ErrorEvent(new Error('Missing required image id')));\n return false;\n }\n\n return !!this.style.getImage(id);\n }\n\n /**\n * Remove an image from a style. This can be an image from the style's original\n * [sprite](https://docs.mapbox.com/help/glossary/sprite/) or any images\n * that have been added at runtime using {@link Map#addImage}.\n *\n * @param {string} id The ID of the image.\n *\n * @example\n * // If an image with the ID 'cat' exists in\n * // the style's sprite, remove it.\n * if (map.hasImage('cat')) map.removeImage('cat');\n */\n removeImage(id: string) {\n this.style.removeImage(id);\n }\n\n /**\n * Load an image from an external URL to be used with {@link Map#addImage}. External\n * domains must support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS).\n *\n * @param {string} url The URL of the image file. Image file must be in png, webp, or jpg format.\n * @param {Function} callback Expecting `callback(error, data)`. Called when the image has loaded or with an error argument if there is an error.\n *\n * @example\n * // Load an image from an external URL.\n * map.loadImage('http://placekitten.com/50/50', (error, image) => {\n * if (error) throw error;\n * // Add the loaded image to the style's sprite with the ID 'kitten'.\n * map.addImage('kitten', image);\n * });\n *\n * @see [Example: Add an icon to the map](https://www.mapbox.com/mapbox-gl-js/example/add-image/)\n */\n loadImage(url: string, callback: Function) {\n getImage(this._requestManager.transformRequest(url, ResourceType.Image), (err, img) => {\n callback(err, img instanceof window.HTMLImageElement ? browser.getImageData(img) : img);\n });\n }\n\n /**\n * Returns an Array of strings containing the IDs of all images currently available in the map.\n * This includes both images from the style's original [sprite](https://docs.mapbox.com/help/glossary/sprite/)\n * and any images that have been added at runtime using {@link Map#addImage}.\n *\n * @returns {Array} An Array of strings containing the names of all sprites/images currently available in the map.\n *\n * @example\n * const allImages = map.listImages();\n *\n */\n listImages(): Array {\n return this.style.listImages();\n }\n\n /** @section {Layers} */\n\n /**\n * Adds a [Mapbox style layer](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers)\n * to the map's style.\n *\n * A layer defines how data from a specified source will be styled. Read more about layer types\n * and available paint and layout properties in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers).\n *\n * @param {Object | CustomLayerInterface} layer The layer to add, conforming to either the Mapbox Style Specification's [layer definition](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers) or, less commonly, the {@link CustomLayerInterface} specification.\n * The Mapbox Style Specification's layer definition is appropriate for most layers.\n *\n * @param {string} layer.id A unique identifier that you define.\n * @param {string} layer.type The type of layer (for example `fill` or `symbol`).\n * A list of layer types is available in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#type).\n *\n * This can also be `custom`. For more information, see {@link CustomLayerInterface}.\n * @param {string | Object} [layer.source] The data source for the layer.\n * Reference a source that has _already been defined_ using the source's unique id.\n * Reference a _new source_ using a source object (as defined in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/)) directly.\n * This is **required** for all `layer.type` options _except_ for `custom` and `background`.\n * @param {string} [layer.sourceLayer] (optional) The name of the [source layer](https://docs.mapbox.com/help/glossary/source-layer/) within the specified `layer.source` to use for this style layer.\n * This is only applicable for vector tile sources and is **required** when `layer.source` is of the type `vector`.\n * @param {Array} [layer.filter] (optional) An expression specifying conditions on source features.\n * Only features that match the filter are displayed.\n * The Mapbox Style Specification includes more information on the limitations of the [`filter`](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter) parameter\n * and a complete list of available [expressions](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/).\n * If no filter is provided, all features in the source (or source layer for vector tilesets) will be displayed.\n * @param {Object} [layer.paint] (optional) Paint properties for the layer.\n * Available paint properties vary by `layer.type`.\n * A full list of paint properties for each layer type is available in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/).\n * If no paint properties are specified, default values will be used.\n * @param {Object} [layer.layout] (optional) Layout properties for the layer.\n * Available layout properties vary by `layer.type`.\n * A full list of layout properties for each layer type is available in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/).\n * If no layout properties are specified, default values will be used.\n * @param {number} [layer.maxzoom] (optional) The maximum zoom level for the layer.\n * At zoom levels equal to or greater than the maxzoom, the layer will be hidden.\n * The value can be any number between `0` and `24` (inclusive).\n * If no maxzoom is provided, the layer will be visible at all zoom levels for which there are tiles available.\n * @param {number} [layer.minzoom] (optional) The minimum zoom level for the layer.\n * At zoom levels less than the minzoom, the layer will be hidden.\n * The value can be any number between `0` and `24` (inclusive).\n * If no minzoom is provided, the layer will be visible at all zoom levels for which there are tiles available.\n * @param {Object} [layer.metadata] (optional) Arbitrary properties useful to track with the layer, but do not influence rendering.\n * @param {string} [layer.renderingMode] This is only applicable for layers with the type `custom`.\n * See {@link CustomLayerInterface} for more information.\n * @param {string} [beforeId] The ID of an existing layer to insert the new layer before,\n * resulting in the new layer appearing visually beneath the existing layer.\n * If this argument is not specified, the layer will be appended to the end of the layers array\n * and appear visually above all other layers.\n *\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * // Add a circle layer with a vector source\n * map.addLayer({\n * id: 'points-of-interest',\n * source: {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v8'\n * },\n * 'source-layer': 'poi_label',\n * type: 'circle',\n * paint: {\n * // Mapbox Style Specification paint properties\n * },\n * layout: {\n * // Mapbox Style Specification layout properties\n * }\n * });\n *\n * @example\n * // Define a source before using it to create a new layer\n * map.addSource('state-data', {\n * type: 'geojson',\n * data: 'path/to/data.geojson'\n * });\n *\n * map.addLayer({\n * id: 'states',\n * // References the GeoJSON source defined above\n * // and does not require a `source-layer`\n * source: 'state-data',\n * type: 'symbol',\n * layout: {\n * // Set the label content to the\n * // feature's `name` property\n * 'text-field': ['get', 'name']\n * }\n * });\n *\n * @example\n * // Add a new symbol layer before an existing layer\n * map.addLayer({\n * id: 'states',\n * // References a source that's already been defined\n * source: 'state-data',\n * type: 'symbol',\n * layout: {\n * // Set the label content to the\n * // feature's `name` property\n * 'text-field': ['get', 'name']\n * }\n * // Add the layer before the existing `cities` layer\n * }, 'cities');\n *\n * @see [Example: Select features around a clicked point](https://docs.mapbox.com/mapbox-gl-js/example/queryrenderedfeatures-around-point/) (fill layer)\n * @see [Example: Add a new layer below labels](https://docs.mapbox.com/mapbox-gl-js/example/geojson-layer-in-stack/)\n * @see [Example: Create and style clusters](https://docs.mapbox.com/mapbox-gl-js/example/cluster/) (circle layer)\n * @see [Example: Add a vector tile source](https://docs.mapbox.com/mapbox-gl-js/example/vector-source/) (line layer)\n * @see [Example: Add a WMS layer](https://docs.mapbox.com/mapbox-gl-js/example/wms/) (raster layer)\n */\n addLayer(layer: LayerSpecification | CustomLayerInterface, beforeId?: string): this {\n this._lazyInitEmptyStyle();\n this.style.addLayer(layer, beforeId);\n return this._update(true);\n }\n\n /**\n * Moves a layer to a different z-position.\n *\n * @param {string} id The ID of the layer to move.\n * @param {string} [beforeId] The ID of an existing layer to insert the new layer before. When viewing the map, the `id` layer will appear beneath the `beforeId` layer. If `beforeId` is omitted, the layer will be appended to the end of the layers array and appear above all other layers on the map.\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * // Move a layer with ID 'polygon' before the layer with ID 'country-label'. The `polygon` layer will appear beneath the `country-label` layer on the map.\n * map.moveLayer('polygon', 'country-label');\n */\n moveLayer(id: string, beforeId?: string): this {\n this.style.moveLayer(id, beforeId);\n return this._update(true);\n }\n\n /**\n * Removes the layer with the given ID from the map's style.\n *\n * If no such layer exists, an `error` event is fired.\n *\n * @param {string} id ID of the layer to remove.\n * @returns {Map} Returns itself to allow for method chaining.\n * @fires Map.event:error\n *\n * @example\n * // If a layer with ID 'state-data' exists, remove it.\n * if (map.getLayer('state-data')) map.removeLayer('state-data');\n */\n removeLayer(id: string): this {\n this.style.removeLayer(id);\n return this._update(true);\n }\n\n /**\n * Returns the layer with the specified ID in the map's style.\n *\n * @param {string} id The ID of the layer to get.\n * @returns {?Object} The layer with the specified ID, or `undefined`\n * if the ID corresponds to no existing layers.\n *\n * @example\n * const stateDataLayer = map.getLayer('state-data');\n *\n * @see [Example: Filter symbols by toggling a list](https://www.mapbox.com/mapbox-gl-js/example/filter-markers/)\n * @see [Example: Filter symbols by text input](https://www.mapbox.com/mapbox-gl-js/example/filter-markers-by-input/)\n */\n getLayer(id: string): ?StyleLayer {\n return this.style.getLayer(id);\n }\n\n /**\n * Sets the zoom extent for the specified style layer. The zoom extent includes the\n * [minimum zoom level](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layer-minzoom)\n * and [maximum zoom level](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layer-maxzoom))\n * at which the layer will be rendered.\n *\n * Note: For style layers using vector sources, style layers cannot be rendered at zoom levels lower than the\n * minimum zoom level of the _source layer_ because the data does not exist at those zoom levels. If the minimum\n * zoom level of the source layer is higher than the minimum zoom level defined in the style layer, the style\n * layer will not be rendered at all zoom levels in the zoom range.\n *\n * @param {string} layerId The ID of the layer to which the zoom extent will be applied.\n * @param {number} minzoom The minimum zoom to set (0-24).\n * @param {number} maxzoom The maximum zoom to set (0-24).\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * map.setLayerZoomRange('my-layer', 2, 5);\n *\n */\n setLayerZoomRange(layerId: string, minzoom: number, maxzoom: number): this {\n this.style.setLayerZoomRange(layerId, minzoom, maxzoom);\n return this._update(true);\n }\n\n /**\n * Sets the filter for the specified style layer.\n *\n * Filters control which features a style layer renders from its source.\n * Any feature for which the filter expression evaluates to `true` will be\n * rendered on the map. Those that are false will be hidden.\n *\n * Use `setFilter` to show a subset of your source data.\n *\n * To clear the filter, pass `null` or `undefined` as the second parameter.\n *\n * @param {string} layerId The ID of the layer to which the filter will be applied.\n * @param {Array | null | undefined} filter The filter, conforming to the Mapbox Style Specification's\n * [filter definition](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter). If `null` or `undefined` is provided, the function removes any existing filter from the layer.\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if the filter conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * // display only features with the 'name' property 'USA'\n * map.setFilter('my-layer', ['==', ['get', 'name'], 'USA']);\n * @example\n * // display only features with five or more 'available-spots'\n * map.setFilter('bike-docks', ['>=', ['get', 'available-spots'], 5]);\n * @example\n * // remove the filter for the 'bike-docks' style layer\n * map.setFilter('bike-docks', null);\n *\n * @see [Example: Filter features within map view](https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n * @see [Example: Highlight features containing similar data](https://www.mapbox.com/mapbox-gl-js/example/query-similar-features/)\n * @see [Example: Create a timeline animation](https://www.mapbox.com/mapbox-gl-js/example/timeline-animation/)\n * @see [Tutorial: Show changes over time](https://docs.mapbox.com/help/tutorials/show-changes-over-time/)\n */\n setFilter(layerId: string, filter: ?FilterSpecification, options: StyleSetterOptions = {}): this {\n this.style.setFilter(layerId, filter, options);\n return this._update(true);\n }\n\n /**\n * Returns the filter applied to the specified style layer.\n *\n * @param {string} layerId The ID of the style layer whose filter to get.\n * @returns {Array} The layer's filter.\n * @example\n * const filter = map.getFilter('myLayer');\n */\n getFilter(layerId: string): ?FilterSpecification {\n return this.style.getFilter(layerId);\n }\n\n /**\n * Sets the value of a paint property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to set the paint property in.\n * @param {string} name The name of the paint property to set.\n * @param {*} value The value of the paint property to set.\n * Must be of a type appropriate for the property, as defined in the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/).\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if `value` conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setPaintProperty('my-layer', 'fill-color', '#faafee');\n * @see [Example: Change a layer's color with buttons](https://www.mapbox.com/mapbox-gl-js/example/color-switcher/)\n * @see [Example: Adjust a layer's opacity](https://www.mapbox.com/mapbox-gl-js/example/adjust-layer-opacity/)\n * @see [Example: Create a draggable point](https://www.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n setPaintProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}): this {\n this.style.setPaintProperty(layerId, name, value, options);\n return this._update(true);\n }\n\n /**\n * Returns the value of a paint property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to get the paint property from.\n * @param {string} name The name of a paint property to get.\n * @returns {*} The value of the specified paint property.\n * @example\n * const paintProperty = map.getPaintProperty('mySymbolLayer', 'icon-color');\n */\n getPaintProperty(layerId: string, name: string): void | TransitionSpecification | PropertyValueSpecification {\n return this.style.getPaintProperty(layerId, name);\n }\n\n /**\n * Sets the value of a layout property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to set the layout property in.\n * @param {string} name The name of the layout property to set.\n * @param {*} value The value of the layout property. Must be of a type appropriate for the property, as defined in the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/).\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if `value` conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setLayoutProperty('my-layer', 'visibility', 'none');\n * @see [Example: Show and hide layers](https://docs.mapbox.com/mapbox-gl-js/example/toggle-layers/)\n */\n setLayoutProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}): this {\n this.style.setLayoutProperty(layerId, name, value, options);\n return this._update(true);\n }\n\n /**\n * Returns the value of a layout property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to get the layout property from.\n * @param {string} name The name of the layout property to get.\n * @returns {*} The value of the specified layout property.\n * @example\n * const layoutProperty = map.getLayoutProperty('mySymbolLayer', 'icon-anchor');\n */\n getLayoutProperty(layerId: string, name: string): ?PropertyValueSpecification {\n return this.style.getLayoutProperty(layerId, name);\n }\n\n /** @section {Style properties} */\n\n /**\n * Sets the any combination of light values.\n *\n * @param {LightSpecification} light Light properties to set. Must conform to the [Light Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#light).\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if the filter conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setLight({\n * \"anchor\": \"viewport\",\n * \"color\": \"blue\",\n * \"intensity\": 0.5\n * });\n */\n setLight(light: LightSpecification, options: StyleSetterOptions = {}): this {\n this._lazyInitEmptyStyle();\n this.style.setLight(light, options);\n return this._update(true);\n }\n\n /**\n * Returns the value of the light object.\n *\n * @returns {LightSpecification} Light properties of the style.\n * @example\n * const light = map.getLight();\n */\n getLight(): LightSpecification {\n return this.style.getLight();\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Sets the terrain property of the style.\n *\n * @param {TerrainSpecification} terrain Terrain properties to set. Must conform to the [Terrain Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/terrain/).\n * If `null` or `undefined` is provided, function removes terrain.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.addSource('mapbox-dem', {\n * 'type': 'raster-dem',\n * 'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',\n * 'tileSize': 512,\n * 'maxzoom': 14\n * });\n * // add the DEM source as a terrain layer with exaggerated height\n * map.setTerrain({'source': 'mapbox-dem', 'exaggeration': 1.5});\n */\n setTerrain(terrain: TerrainSpecification): this {\n this._lazyInitEmptyStyle();\n if (!terrain && this.transform.projection.requiresDraping) {\n this.style.setTerrainForDraping();\n } else {\n this.style.setTerrain(terrain);\n }\n this._averageElevationLastSampledAt = -Infinity;\n return this._update(true);\n }\n\n /**\n * Returns the terrain specification or `null` if terrain isn't set on the map.\n *\n * @returns {TerrainSpecification | null} Terrain specification properties of the style.\n * @example\n * const terrain = map.getTerrain();\n */\n getTerrain(): ?TerrainSpecification {\n return this.style ? this.style.getTerrain() : null;\n }\n\n /**\n * Sets the fog property of the style.\n *\n * @param {FogSpecification} fog The fog properties to set. Must conform to the [Fog Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/fog/).\n * If `null` or `undefined` is provided, this function call removes the fog from the map.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setFog({\n * \"range\": [0.8, 8],\n * \"color\": \"#dc9f9f\",\n * \"horizon-blend\": 0.5,\n * \"high-color\": \"#245bde\",\n * \"space-color\": \"#000000\",\n * \"star-intensity\": 0.15\n * });\n * @see [Example: Add fog to a map](https://docs.mapbox.com/mapbox-gl-js/example/add-fog/)\n */\n setFog(fog: FogSpecification): this {\n this._lazyInitEmptyStyle();\n this.style.setFog(fog);\n return this._update(true);\n }\n\n /**\n * Returns the fog specification or `null` if fog is not set on the map.\n *\n * @returns {FogSpecification} Fog specification properties of the style.\n * @example\n * const fog = map.getFog();\n */\n getFog(): ?FogSpecification {\n return this.style ? this.style.getFog() : null;\n }\n\n /**\n * Returns the fog opacity for a given location.\n *\n * An opacity of 0 means that there is no fog contribution for the given location\n * while a fog opacity of 1.0 means the location is fully obscured by the fog effect.\n *\n * If there is no fog set on the map, this function will return 0.\n *\n * @param {LngLatLike} lnglat The geographical location to evaluate the fog on.\n * @returns {number} A value between 0 and 1 representing the fog opacity, where 1 means fully within, and 0 means not affected by the fog effect.\n * @private\n */\n _queryFogOpacity(lnglat: LngLatLike): number {\n if (!this.style || !this.style.fog) return 0.0;\n return this.style.fog.getOpacityAtLatLng(LngLat.convert(lnglat), this.transform);\n }\n\n /** @section {Feature state} */\n\n /**\n * Sets the `state` of a feature.\n * A feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.\n * When using this method, the `state` object is merged with any existing key-value pairs in the feature's state.\n * Features are identified by their `id` attribute, which can be any number or string.\n *\n * This method can only be used with sources that have a `id` attribute. The `id` attribute can be defined in three ways:\n * - For vector or GeoJSON sources, including an `id` attribute in the original data file.\n * - For vector or GeoJSON sources, using the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option at the time the source is defined.\n * - For GeoJSON sources, using the [`generateId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#geojson-generateId) option to auto-assign an `id` based on the feature's index in the source data. If you change feature data using `map.getSource('some id').setData(...)`, you may need to re-apply state taking into account updated `id` values.\n *\n * _Note: You can use the [`feature-state` expression](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#feature-state) to access the values in a feature's state object for the purposes of styling_.\n *\n * @param {Object} feature Feature identifier. Feature objects returned from\n * {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.\n * @param {number | string} feature.id Unique id of the feature. Can be an integer or a string, but supports string values only when the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option has been applied to the source or the string can be cast to an integer.\n * @param {string} feature.source The id of the vector or GeoJSON source for the feature.\n * @param {string} [feature.sourceLayer] (optional) *For vector tile sources, `sourceLayer` is required*.\n * @param {Object} state A set of key-value pairs. The values should be valid JSON types.\n * @returns {Map} The map object.\n * @example\n * // When the mouse moves over the `my-layer` layer, update\n * // the feature state for the feature under the mouse\n * map.on('mousemove', 'my-layer', (e) => {\n * if (e.features.length > 0) {\n * map.setFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id,\n * }, {\n * hover: true\n * });\n * }\n * });\n *\n * @see [Example: Create a hover effect](https://docs.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Tutorial: Create interactive hover effects with Mapbox GL JS](https://docs.mapbox.com/help/tutorials/create-interactive-hover-effects-with-mapbox-gl-js/)\n */\n setFeatureState(feature: { source: string; sourceLayer?: string; id: string | number; }, state: Object): this {\n this.style.setFeatureState(feature, state);\n return this._update();\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Removes the `state` of a feature, setting it back to the default behavior.\n * If only a `feature.source` is specified, it will remove the state for all features from that source.\n * If `feature.id` is also specified, it will remove all keys for that feature's state.\n * If `key` is also specified, it removes only that key from that feature's state.\n * Features are identified by their `feature.id` attribute, which can be any number or string.\n *\n * @param {Object} feature Identifier of where to remove state. It can be a source, a feature, or a specific key of feature.\n * Feature objects returned from {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.\n * @param {number | string} [feature.id] (optional) Unique id of the feature. Can be an integer or a string, but supports string values only when the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option has been applied to the source or the string can be cast to an integer.\n * @param {string} feature.source The id of the vector or GeoJSON source for the feature.\n * @param {string} [feature.sourceLayer] (optional) For vector tile sources, `sourceLayer` is required.\n * @param {string} [key] (optional) The key in the feature state to reset.\n *\n * @example\n * // Reset the entire state object for all features\n * // in the `my-source` source\n * map.removeFeatureState({\n * source: 'my-source'\n * });\n *\n * @example\n * // When the mouse leaves the `my-layer` layer,\n * // reset the entire state object for the\n * // feature under the mouse\n * map.on('mouseleave', 'my-layer', (e) => {\n * map.removeFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id\n * });\n * });\n *\n * @example\n * // When the mouse leaves the `my-layer` layer,\n * // reset only the `hover` key-value pair in the\n * // state for the feature under the mouse\n * map.on('mouseleave', 'my-layer', (e) => {\n * map.removeFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id\n * }, 'hover');\n * });\n *\n */\n removeFeatureState(feature: { source: string; sourceLayer?: string; id?: string | number; }, key?: string): this {\n this.style.removeFeatureState(feature, key);\n return this._update();\n }\n\n /**\n * Gets the `state` of a feature.\n * A feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.\n * Features are identified by their `id` attribute, which can be any number or string.\n *\n * _Note: To access the values in a feature's state object for the purposes of styling the feature, use the [`feature-state` expression](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#feature-state)_.\n *\n * @param {Object} feature Feature identifier. Feature objects returned from\n * {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.\n * @param {number | string} feature.id Unique id of the feature. Can be an integer or a string, but supports string values only when the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option has been applied to the source or the string can be cast to an integer.\n * @param {string} feature.source The id of the vector or GeoJSON source for the feature.\n * @param {string} [feature.sourceLayer] (optional) *For vector tile sources, `sourceLayer` is required*.\n *\n * @returns {Object} The state of the feature: a set of key-value pairs that was assigned to the feature at runtime.\n *\n * @example\n * // When the mouse moves over the `my-layer` layer,\n * // get the feature state for the feature under the mouse\n * map.on('mousemove', 'my-layer', (e) => {\n * if (e.features.length > 0) {\n * map.getFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id\n * });\n * }\n * });\n *\n */\n getFeatureState(feature: { source: string; sourceLayer?: string; id: string | number; }): any {\n return this.style.getFeatureState(feature);\n }\n\n _updateContainerDimensions() {\n if (!this._container) return;\n\n const width = this._container.getBoundingClientRect().width || 400;\n const height = this._container.getBoundingClientRect().height || 300;\n\n let transformValues;\n let transformScaleWidth;\n let transformScaleHeight;\n let el: ?Element = this._container;\n while (el && (!transformScaleWidth || !transformScaleHeight)) {\n const transformMatrix = window.getComputedStyle(el).transform;\n if (transformMatrix && transformMatrix !== 'none') {\n transformValues = transformMatrix.match(/matrix.*\\((.+)\\)/)[1].split(', ');\n if (transformValues[0] && transformValues[0] !== '0' && transformValues[0] !== '1') transformScaleWidth = transformValues[0];\n if (transformValues[3] && transformValues[3] !== '0' && transformValues[3] !== '1') transformScaleHeight = transformValues[3];\n }\n el = el.parentElement;\n }\n\n this._containerWidth = transformScaleWidth ? Math.abs(width / transformScaleWidth) : width;\n this._containerHeight = transformScaleHeight ? Math.abs(height / transformScaleHeight) : height;\n }\n\n _detectMissingCSS(): void {\n const computedColor = window.getComputedStyle(this._missingCSSCanary).getPropertyValue('background-color');\n if (computedColor !== 'rgb(250, 128, 114)') {\n warnOnce('This page appears to be missing CSS declarations for ' +\n 'Mapbox GL JS, which may cause the map to display incorrectly. ' +\n 'Please ensure your page includes mapbox-gl.css, as described ' +\n 'in https://www.mapbox.com/mapbox-gl-js/api/.');\n }\n }\n\n _setupContainer() {\n const container = this._container;\n container.classList.add('mapboxgl-map');\n\n const missingCSSCanary = this._missingCSSCanary = DOM.create('div', 'mapboxgl-canary', container);\n missingCSSCanary.style.visibility = 'hidden';\n this._detectMissingCSS();\n\n const canvasContainer = this._canvasContainer = DOM.create('div', 'mapboxgl-canvas-container', container);\n if (this._interactive) {\n canvasContainer.classList.add('mapboxgl-interactive');\n }\n\n this._canvas = DOM.create('canvas', 'mapboxgl-canvas', canvasContainer);\n // $FlowFixMe[method-unbinding]\n this._canvas.addEventListener('webglcontextlost', this._contextLost, false);\n // $FlowFixMe[method-unbinding]\n this._canvas.addEventListener('webglcontextrestored', this._contextRestored, false);\n this._canvas.setAttribute('tabindex', '0');\n this._canvas.setAttribute('aria-label', this._getUIString('Map.Title'));\n this._canvas.setAttribute('role', 'region');\n\n this._updateContainerDimensions();\n this._resizeCanvas(this._containerWidth, this._containerHeight);\n\n const controlContainer = this._controlContainer = DOM.create('div', 'mapboxgl-control-container', container);\n const positions = this._controlPositions = {};\n ['top-left', 'top-right', 'bottom-left', 'bottom-right'].forEach((positionName) => {\n positions[positionName] = DOM.create('div', `mapboxgl-ctrl-${positionName}`, controlContainer);\n });\n\n // $FlowFixMe[method-unbinding]\n this._container.addEventListener('scroll', this._onMapScroll, false);\n }\n\n _resizeCanvas(width: number, height: number) {\n const pixelRatio = browser.devicePixelRatio || 1;\n\n // Request the required canvas size (rounded up) taking the pixelratio into account.\n this._canvas.width = pixelRatio * Math.ceil(width);\n this._canvas.height = pixelRatio * Math.ceil(height);\n\n // Maintain the same canvas size, potentially downscaling it for HiDPI displays\n this._canvas.style.width = `${width}px`;\n this._canvas.style.height = `${height}px`;\n }\n\n _addMarker(marker: Marker) {\n this._markers.push(marker);\n }\n\n _removeMarker(marker: Marker) {\n const index = this._markers.indexOf(marker);\n if (index !== -1) {\n this._markers.splice(index, 1);\n }\n }\n\n _addPopup(popup: Popup) {\n this._popups.push(popup);\n }\n\n _removePopup(popup: Popup) {\n const index = this._popups.indexOf(popup);\n if (index !== -1) {\n this._popups.splice(index, 1);\n }\n }\n\n _setupPainter() {\n const attributes = extend({}, supported.webGLContextAttributes, {\n failIfMajorPerformanceCaveat: this._failIfMajorPerformanceCaveat,\n preserveDrawingBuffer: this._preserveDrawingBuffer,\n antialias: this._antialias || false\n });\n\n const gl2 = this._useWebGL2 && ((this._canvas.getContext(\"webgl2\", attributes): any): WebGLRenderingContext);\n const gl = gl2 ||\n this._canvas.getContext('webgl', attributes) ||\n this._canvas.getContext('experimental-webgl', attributes);\n\n if (!gl) {\n this.fire(new ErrorEvent(new Error('Failed to initialize WebGL')));\n return;\n }\n\n if (this._useWebGL2 && !gl2) {\n warnOnce('Failed to create WebGL 2 context. Using WebGL 1.');\n }\n storeAuthState(gl, true);\n\n this.painter = new Painter(gl, this.transform, !!gl2);\n this.on('data', (event: MapDataEvent) => {\n if (event.dataType === 'source') {\n this.painter.setTileLoadedFlag(true);\n }\n });\n\n webpSupported.testSupport(gl);\n }\n\n _contextLost(event: any) {\n event.preventDefault();\n if (this._frame) {\n this._frame.cancel();\n this._frame = null;\n }\n this.fire(new Event('webglcontextlost', {originalEvent: event}));\n }\n\n _contextRestored(event: any) {\n this._setupPainter();\n this.resize();\n this._update();\n this.fire(new Event('webglcontextrestored', {originalEvent: event}));\n }\n\n _onMapScroll(event: any): ?boolean {\n if (event.target !== this._container) return;\n\n // Revert any scroll which would move the canvas outside of the view\n this._container.scrollTop = 0;\n this._container.scrollLeft = 0;\n return false;\n }\n\n /** @section {Lifecycle} */\n\n /**\n * Returns a Boolean indicating whether the map is fully loaded.\n *\n * Returns `false` if the style is not yet fully loaded,\n * or if there has been a change to the sources or style that\n * has not yet fully loaded.\n *\n * @returns {boolean} A Boolean indicating whether the map is fully loaded.\n * @example\n * const isLoaded = map.loaded();\n */\n loaded(): boolean {\n return !this._styleDirty && !this._sourcesDirty && !!this.style && this.style.loaded();\n }\n\n /**\n * Update this map's style and sources, and re-render the map.\n *\n * @param {boolean} updateStyle mark the map's style for reprocessing as\n * well as its sources\n * @returns {Map} this\n * @private\n */\n _update(updateStyle?: boolean): this {\n if (!this.style) return this;\n\n this._styleDirty = this._styleDirty || updateStyle;\n this._sourcesDirty = true;\n this.triggerRepaint();\n\n return this;\n }\n\n /**\n * Request that the given callback be executed during the next render\n * frame. Schedule a render frame if one is not already scheduled.\n * @returns An id that can be used to cancel the callback\n * @private\n */\n // $FlowFixMe[method-unbinding]\n _requestRenderFrame(callback: () => void): TaskID {\n this._update();\n return this._renderTaskQueue.add(callback);\n }\n\n // $FlowFixMe[method-unbinding]\n _cancelRenderFrame(id: TaskID) {\n this._renderTaskQueue.remove(id);\n }\n\n /**\n * Request that the given callback be executed during the next render frame if the map is not\n * idle. Otherwise it is executed immediately, to avoid triggering a new render.\n * @private\n */\n _requestDomTask(callback: () => void) {\n // This condition means that the map is idle: the callback needs to be called right now as\n // there won't be a triggered render to run the queue.\n if (!this.loaded() || (this.loaded() && !this.isMoving())) {\n callback();\n } else {\n this._domRenderTaskQueue.add(callback);\n }\n }\n\n /**\n * Call when a (re-)render of the map is required:\n * - The style has changed (`setPaintProperty()`, etc.)\n * - Source data has changed (for example, tiles have finished loading)\n * - The map has is moving (or just finished moving)\n * - A transition is in progress\n *\n * @param {number} paintStartTimeStamp The time when the animation frame began executing.\n *\n * @returns {Map} this\n * @private\n */\n _render(paintStartTimeStamp: number) {\n const m = PerformanceUtils.beginMeasure('render');\n\n let gpuTimer;\n const extTimerQuery = this.painter.context.extTimerQuery;\n const frameStartTime = browser.now();\n if (this.listens('gpu-timing-frame')) {\n gpuTimer = extTimerQuery.createQueryEXT();\n extTimerQuery.beginQueryEXT(extTimerQuery.TIME_ELAPSED_EXT, gpuTimer);\n }\n\n // A custom layer may have used the context asynchronously. Mark the state as dirty.\n this.painter.context.setDirty();\n this.painter.setBaseState();\n\n if (this.isMoving() || this.isRotating() || this.isZooming()) {\n this._interactionRange[0] = Math.min(this._interactionRange[0], window.performance.now());\n this._interactionRange[1] = Math.max(this._interactionRange[1], window.performance.now());\n }\n\n this._renderTaskQueue.run(paintStartTimeStamp);\n this._domRenderTaskQueue.run(paintStartTimeStamp);\n // A task queue callback may have fired a user event which may have removed the map\n if (this._removed) return;\n\n this._updateProjectionTransition();\n\n const fadeDuration = this._isInitialLoad ? 0 : this._fadeDuration;\n\n // If the style has changed, the map is being zoomed, or a transition or fade is in progress:\n // - Apply style changes (in a batch)\n // - Recalculate paint properties.\n if (this.style && this._styleDirty) {\n this._styleDirty = false;\n\n const zoom = this.transform.zoom;\n const pitch = this.transform.pitch;\n const now = browser.now();\n\n const parameters = new EvaluationParameters(zoom, {\n now,\n fadeDuration,\n pitch,\n transition: this.style.getTransition()\n });\n\n this.style.update(parameters);\n }\n\n const fogIsTransitioning = this.style && this.style.fog && this.style.fog.hasTransition();\n\n if (fogIsTransitioning) {\n this.style._markersNeedUpdate = true;\n this._sourcesDirty = true;\n }\n\n // If we are in _render for any reason other than an in-progress paint\n // transition, update source caches to check for and load any tiles we\n // need for the current transform\n let averageElevationChanged = false;\n if (this.style && this._sourcesDirty) {\n this._sourcesDirty = false;\n this.painter._updateFog(this.style);\n this._updateTerrain(); // Terrain DEM source updates here and skips update in style._updateSources.\n averageElevationChanged = this._updateAverageElevation(frameStartTime);\n this.style._updateSources(this.transform);\n // Update positions of markers and popups on enabling/disabling terrain\n this._forceMarkerAndPopupUpdate();\n } else {\n averageElevationChanged = this._updateAverageElevation(frameStartTime);\n }\n\n this._placementDirty = this.style && this.style._updatePlacement(this.painter.transform, this.showCollisionBoxes, fadeDuration, this._crossSourceCollisions);\n\n // Actually draw\n if (this.style) {\n this.painter.render(this.style, {\n showTileBoundaries: this.showTileBoundaries,\n showTerrainWireframe: this.showTerrainWireframe,\n showOverdrawInspector: this._showOverdrawInspector,\n showQueryGeometry: !!this._showQueryGeometry,\n showTileAABBs: this.showTileAABBs,\n rotating: this.isRotating(),\n zooming: this.isZooming(),\n moving: this.isMoving(),\n fadeDuration,\n isInitialLoad: this._isInitialLoad,\n showPadding: this.showPadding,\n gpuTiming: !!this.listens('gpu-timing-layer'),\n gpuTimingDeferredRender: !!this.listens('gpu-timing-deferred-render'),\n speedIndexTiming: this.speedIndexTiming,\n });\n }\n\n this.fire(new Event('render'));\n\n if (this.loaded() && !this._loaded) {\n this._loaded = true;\n PerformanceUtils.mark(PerformanceMarkers.load);\n this.fire(new Event('load'));\n }\n\n if (this.style && (this.style.hasTransitions())) {\n this._styleDirty = true;\n }\n\n if (this.style && !this._placementDirty) {\n // Since no fade operations are in progress, we can release\n // all tiles held for fading. If we didn't do this, the tiles\n // would just sit in the SourceCaches until the next render\n this.style._releaseSymbolFadeTiles();\n }\n\n if (gpuTimer) {\n const renderCPUTime = browser.now() - frameStartTime;\n extTimerQuery.endQueryEXT(extTimerQuery.TIME_ELAPSED_EXT, gpuTimer);\n setTimeout(() => {\n const renderGPUTime = extTimerQuery.getQueryObjectEXT(gpuTimer, extTimerQuery.QUERY_RESULT_EXT) / (1000 * 1000);\n extTimerQuery.deleteQueryEXT(gpuTimer);\n this.fire(new Event('gpu-timing-frame', {\n cpuTime: renderCPUTime,\n gpuTime: renderGPUTime\n }));\n window.performance.mark('frame-gpu', {\n startTime: frameStartTime,\n detail: {\n gpuTime: renderGPUTime\n }\n });\n }, 50); // Wait 50ms to give time for all GPU calls to finish before querying\n }\n\n PerformanceUtils.endMeasure(m);\n\n if (this.listens('gpu-timing-layer')) {\n // Resetting the Painter's per-layer timing queries here allows us to isolate\n // the queries to individual frames.\n const frameLayerQueries = this.painter.collectGpuTimers();\n\n setTimeout(() => {\n const renderedLayerTimes = this.painter.queryGpuTimers(frameLayerQueries);\n\n this.fire(new Event('gpu-timing-layer', {\n layerTimes: renderedLayerTimes\n }));\n }, 50); // Wait 50ms to give time for all GPU calls to finish before querying\n }\n\n if (this.listens('gpu-timing-deferred-render')) {\n const deferredRenderQueries = this.painter.collectDeferredRenderGpuQueries();\n\n setTimeout(() => {\n const gpuTime = this.painter.queryGpuTimeDeferredRender(deferredRenderQueries);\n this.fire(new Event('gpu-timing-deferred-render', {gpuTime}));\n }, 50); // Wait 50ms to give time for all GPU calls to finish before querying\n }\n\n // Schedule another render frame if it's needed.\n //\n // Even though `_styleDirty` and `_sourcesDirty` are reset in this\n // method, synchronous events fired during Style#update or\n // Style#_updateSources could have caused them to be set again.\n const somethingDirty = this._sourcesDirty || this._styleDirty || this._placementDirty || averageElevationChanged;\n if (somethingDirty || this._repaint) {\n this.triggerRepaint();\n } else {\n const willIdle = !this.isMoving() && this.loaded();\n if (willIdle) {\n // Before idling, we perform one last sample so that if the average elevation\n // does not exactly match the terrain, we skip idle and ease it to its final state.\n averageElevationChanged = this._updateAverageElevation(frameStartTime, true);\n }\n\n if (averageElevationChanged) {\n this.triggerRepaint();\n } else {\n this._triggerFrame(false);\n if (willIdle) {\n this.fire(new Event('idle'));\n this._isInitialLoad = false;\n // check the options to see if need to calculate the speed index\n if (this.speedIndexTiming) {\n const speedIndexNumber = this._calculateSpeedIndex();\n this.fire(new Event('speedindexcompleted', {speedIndex: speedIndexNumber}));\n this.speedIndexTiming = false;\n }\n }\n }\n }\n\n if (this._loaded && !this._fullyLoaded && !somethingDirty) {\n this._fullyLoaded = true;\n LivePerformanceUtils.mark(PerformanceMarkers.fullLoad);\n // Following lines are billing and metrics related code. Do not change. See LICENSE.txt\n if (this._performanceMetricsCollection) {\n postPerformanceEvent(this._requestManager._customAccessToken, {\n width: this.painter.width,\n height: this.painter.height,\n interactionRange: this._interactionRange,\n visibilityHidden: this._visibilityHidden,\n terrainEnabled: !!this.painter.style.getTerrain(),\n fogEnabled: !!this.painter.style.getFog(),\n projection: this.getProjection().name,\n zoom: this.transform.zoom,\n renderer: this.painter.context.renderer,\n vendor: this.painter.context.vendor\n });\n }\n this._authenticate();\n }\n }\n\n _forceMarkerAndPopupUpdate(shouldWrap?: boolean) {\n for (const marker of this._markers) {\n // Wrap marker location when toggling to a projection without world copies\n if (shouldWrap && !this.getRenderWorldCopies()) {\n marker._lngLat = marker._lngLat.wrap();\n }\n marker._update();\n }\n for (const popup of this._popups) {\n // Wrap popup location when toggling to a projection without world copies and track pointer set to false\n if (shouldWrap && !this.getRenderWorldCopies() && !popup._trackPointer) {\n popup._lngLat = popup._lngLat.wrap();\n }\n popup._update();\n }\n }\n\n /**\n * Update the average visible elevation by sampling terrain\n *\n * @returns {boolean} true if elevation has changed from the last sampling\n * @private\n */\n _updateAverageElevation(timeStamp: number, ignoreTimeout: boolean = false): boolean {\n const applyUpdate = (value: number) => {\n this.transform.averageElevation = value;\n this._update(false);\n return true;\n };\n\n if (!this.painter.averageElevationNeedsEasing()) {\n if (this.transform.averageElevation !== 0) return applyUpdate(0);\n return false;\n }\n\n const timeoutElapsed = ignoreTimeout || timeStamp - this._averageElevationLastSampledAt > AVERAGE_ELEVATION_SAMPLING_INTERVAL;\n\n if (timeoutElapsed && !this._averageElevation.isEasing(timeStamp)) {\n const currentElevation = this.transform.averageElevation;\n let newElevation = this.transform.sampleAverageElevation();\n let exaggerationChanged = false;\n if (this.transform.elevation) {\n exaggerationChanged = this.transform.elevation.exaggeration() !== this._averageElevationExaggeration;\n // $FlowIgnore[incompatible-use]\n this._averageElevationExaggeration = this.transform.elevation.exaggeration();\n }\n\n // New elevation is NaN if no terrain tiles were available\n if (isNaN(newElevation)) {\n newElevation = 0;\n } else {\n // Don't activate the timeout if no data was available\n this._averageElevationLastSampledAt = timeStamp;\n }\n const elevationChange = Math.abs(currentElevation - newElevation);\n\n if (elevationChange > AVERAGE_ELEVATION_EASE_THRESHOLD) {\n if (this._isInitialLoad || exaggerationChanged) {\n this._averageElevation.jumpTo(newElevation);\n return applyUpdate(newElevation);\n } else {\n this._averageElevation.easeTo(newElevation, timeStamp, AVERAGE_ELEVATION_EASE_TIME);\n }\n } else if (elevationChange > AVERAGE_ELEVATION_CHANGE_THRESHOLD) {\n this._averageElevation.jumpTo(newElevation);\n return applyUpdate(newElevation);\n }\n }\n\n if (this._averageElevation.isEasing(timeStamp)) {\n return applyUpdate(this._averageElevation.getValue(timeStamp));\n }\n\n return false;\n }\n\n /***** START WARNING - REMOVAL OR MODIFICATION OF THE\n * FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******\n * The following code is used to access Mapbox's APIs. Removal or modification\n * of this code can result in higher fees and/or\n * termination of your account with Mapbox.\n *\n * Under the Mapbox Terms of Service, you may not use this code to access Mapbox\n * Mapping APIs other than through Mapbox SDKs.\n *\n * The Mapping APIs documentation is available at https://docs.mapbox.com/api/maps/#maps\n * and the Mapbox Terms of Service are available at https://www.mapbox.com/tos/\n ******************************************************************************/\n\n _authenticate() {\n getMapSessionAPI(this._getMapId(), this._requestManager._skuToken, this._requestManager._customAccessToken, (err) => {\n if (err) {\n // throwing an error here will cause the callback to be called again unnecessarily\n if (err.message === AUTH_ERR_MSG || (err: any).status === 401) {\n const gl = this.painter.context.gl;\n storeAuthState(gl, false);\n if (this._logoControl instanceof LogoControl) {\n this._logoControl._updateLogo();\n }\n if (gl) gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);\n\n if (!this._silenceAuthErrors) {\n this.fire(new ErrorEvent(new Error('A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/')));\n }\n }\n }\n });\n postMapLoadEvent(this._getMapId(), this._requestManager._skuToken, this._requestManager._customAccessToken, () => {});\n }\n\n /***** END WARNING - REMOVAL OR MODIFICATION OF THE\n PRECEDING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******/\n\n _updateTerrain() {\n // Recalculate if enabled/disabled and calculate elevation cover. As camera is using elevation tiles before\n // render (and deferred update after zoom recalculation), this needs to be called when removing terrain source.\n const adaptCameraAltitude = this._isDragging();\n this.painter.updateTerrain(this.style, adaptCameraAltitude);\n }\n\n _calculateSpeedIndex(): number {\n const finalFrame = this.painter.canvasCopy();\n const canvasCopyInstances = this.painter.getCanvasCopiesAndTimestamps();\n canvasCopyInstances.timeStamps.push(performance.now());\n\n const gl = this.painter.context.gl;\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\n function read(texture: ?WebGLTexture) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n const pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4);\n gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n return pixels;\n }\n\n return this._canvasPixelComparison(read(finalFrame), canvasCopyInstances.canvasCopies.map(read), canvasCopyInstances.timeStamps);\n }\n\n _canvasPixelComparison(finalFrame: Uint8Array, allFrames: Uint8Array[], timeStamps: number[]): number {\n let finalScore = timeStamps[1] - timeStamps[0];\n const numPixels = finalFrame.length / 4;\n\n for (let i = 0; i < allFrames.length; i++) {\n const frame = allFrames[i];\n let cnt = 0;\n for (let j = 0; j < frame.length; j += 4) {\n if (frame[j] === finalFrame[j] &&\n frame[j + 1] === finalFrame[j + 1] &&\n frame[j + 2] === finalFrame[j + 2] &&\n frame[j + 3] === finalFrame[j + 3]) {\n cnt = cnt + 1;\n }\n }\n //calculate the % visual completeness\n const interval = timeStamps[i + 2] - timeStamps[i + 1];\n const visualCompletness = cnt / numPixels;\n finalScore += interval * (1 - visualCompletness);\n }\n return finalScore;\n }\n\n /**\n * Clean up and release all internal resources associated with this map.\n *\n * This includes DOM elements, event bindings, web workers, and WebGL resources.\n *\n * Use this method when you are done using the map and wish to ensure that it no\n * longer consumes browser resources. Afterwards, you must not call any other\n * methods on the map.\n *\n * @example\n * map.remove();\n */\n remove() {\n if (this._hash) this._hash.remove();\n\n for (const control of this._controls) control.onRemove(this);\n this._controls = [];\n\n if (this._frame) {\n this._frame.cancel();\n this._frame = null;\n }\n this._renderTaskQueue.clear();\n this._domRenderTaskQueue.clear();\n if (this.style) {\n this.style.destroy();\n }\n this.painter.destroy();\n if (this.handlers) this.handlers.destroy();\n this.handlers = undefined;\n this.setStyle(null);\n\n if (typeof window !== 'undefined') {\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('resize', this._onWindowResize, false);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('orientationchange', this._onWindowResize, false);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('webkitfullscreenchange', this._onWindowResize, false);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('online', this._onWindowOnline, false);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('visibilitychange', this._onVisibilityChange, false);\n }\n\n const extension = this.painter.context.gl.getExtension('WEBGL_lose_context');\n if (extension) extension.loseContext();\n\n // $FlowFixMe[method-unbinding]\n this._canvas.removeEventListener('webglcontextlost', this._contextLost, false);\n // $FlowFixMe[method-unbinding]\n this._canvas.removeEventListener('webglcontextrestored', this._contextRestored, false);\n\n this._canvasContainer.remove();\n this._controlContainer.remove();\n this._missingCSSCanary.remove();\n\n this._canvas = (undefined: any);\n this._canvasContainer = (undefined: any);\n this._controlContainer = (undefined: any);\n this._missingCSSCanary = (undefined: any);\n\n this._container.classList.remove('mapboxgl-map');\n // $FlowFixMe[method-unbinding]\n this._container.removeEventListener('scroll', this._onMapScroll, false);\n\n PerformanceUtils.clearMetrics();\n removeAuthState(this.painter.context.gl);\n this._removed = true;\n this.fire(new Event('remove'));\n }\n\n /**\n * Trigger the rendering of a single frame. Use this method with custom layers to\n * repaint the map when the layer's properties or properties associated with the\n * layer's source change. Calling this multiple times before the\n * next frame is rendered will still result in only a single frame being rendered.\n *\n * @example\n * map.triggerRepaint();\n * @see [Example: Add a 3D model](https://docs.mapbox.com/mapbox-gl-js/example/add-3d-model/)\n * @see [Example: Add an animated icon to the map](https://docs.mapbox.com/mapbox-gl-js/example/add-image-animated/)\n */\n triggerRepaint() {\n this._triggerFrame(true);\n }\n\n _triggerFrame(render: boolean) {\n this._renderNextFrame = this._renderNextFrame || render;\n if (this.style && !this._frame) {\n this._frame = browser.frame((paintStartTimeStamp: number) => {\n const isRenderFrame = !!this._renderNextFrame;\n PerformanceUtils.frame(paintStartTimeStamp, isRenderFrame);\n this._frame = null;\n this._renderNextFrame = null;\n if (isRenderFrame) {\n this._render(paintStartTimeStamp);\n }\n });\n }\n }\n\n /**\n * Preloads all tiles that will be requested for one or a series of transformations\n *\n * @private\n * @returns {Object} Returns `this` | Promise.\n */\n // $FlowFixMe[method-unbinding]\n _preloadTiles(transform: Transform | Array): this {\n const sources: Array = this.style ? (Object.values(this.style._sourceCaches): any) : [];\n asyncAll(sources, (source, done) => source._preloadTiles(transform, done), () => {\n this.triggerRepaint();\n });\n\n return this;\n }\n\n _onWindowOnline() {\n this._update();\n }\n\n _onWindowResize(event: Event) {\n if (this._trackResize) {\n this.resize({originalEvent: event})._update();\n }\n }\n\n _onVisibilityChange() {\n if (window.document.visibilityState === 'hidden') {\n this._visibilityHidden++;\n }\n }\n\n /** @section {Debug features} */\n\n /**\n * Gets and sets a Boolean indicating whether the map will render an outline\n * around each tile and the tile ID. These tile boundaries are useful for\n * debugging.\n *\n * The uncompressed file size of the first vector source is drawn in the top left\n * corner of each tile, next to the tile ID.\n *\n * @name showTileBoundaries\n * @type {boolean}\n * @instance\n * @memberof Map\n * @example\n * map.showTileBoundaries = true;\n */\n get showTileBoundaries(): boolean { return !!this._showTileBoundaries; }\n set showTileBoundaries(value: boolean) {\n if (this._showTileBoundaries === value) return;\n this._showTileBoundaries = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will render a wireframe\n * on top of the displayed terrain. Useful for debugging.\n *\n * The wireframe is always red and is drawn only when terrain is active.\n *\n * @name showTerrainWireframe\n * @type {boolean}\n * @instance\n * @memberof Map\n * @example\n * map.showTerrainWireframe = true;\n */\n get showTerrainWireframe(): boolean { return !!this._showTerrainWireframe; }\n set showTerrainWireframe(value: boolean) {\n if (this._showTerrainWireframe === value) return;\n this._showTerrainWireframe = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the speedindex metric calculation is on or off\n *\n * @private\n * @name speedIndexTiming\n * @type {boolean}\n * @instance\n * @memberof Map\n * @example\n * map.speedIndexTiming = true;\n */\n get speedIndexTiming(): boolean { return !!this._speedIndexTiming; }\n set speedIndexTiming(value: boolean) {\n if (this._speedIndexTiming === value) return;\n this._speedIndexTiming = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will visualize\n * the padding offsets.\n *\n * @name showPadding\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get showPadding(): boolean { return !!this._showPadding; }\n set showPadding(value: boolean) {\n if (this._showPadding === value) return;\n this._showPadding = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will render boxes\n * around all symbols in the data source, revealing which symbols\n * were rendered or which were hidden due to collisions.\n * This information is useful for debugging.\n *\n * @name showCollisionBoxes\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get showCollisionBoxes(): boolean { return !!this._showCollisionBoxes; }\n set showCollisionBoxes(value: boolean) {\n if (this._showCollisionBoxes === value) return;\n this._showCollisionBoxes = value;\n if (value) {\n // When we turn collision boxes on we have to generate them for existing tiles\n // When we turn them off, there's no cost to leaving existing boxes in place\n this.style._generateCollisionBoxes();\n } else {\n // Otherwise, call an update to remove collision boxes\n this._update();\n }\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map should color-code\n * each fragment to show how many times it has been shaded.\n * White fragments have been shaded 8 or more times.\n * Black fragments have been shaded 0 times.\n * This information is useful for debugging.\n *\n * @name showOverdraw\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get showOverdrawInspector(): boolean { return !!this._showOverdrawInspector; }\n set showOverdrawInspector(value: boolean) {\n if (this._showOverdrawInspector === value) return;\n this._showOverdrawInspector = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will\n * continuously repaint. This information is useful for analyzing performance.\n *\n * @name repaint\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get repaint(): boolean { return !!this._repaint; }\n set repaint(value: boolean) {\n if (this._repaint !== value) {\n this._repaint = value;\n this.triggerRepaint();\n }\n }\n // show vertices\n get vertices(): boolean { return !!this._vertices; }\n set vertices(value: boolean) { this._vertices = value; this._update(); }\n\n /**\n * Display tile AABBs for debugging\n *\n * @private\n * @type {boolean}\n */\n get showTileAABBs(): boolean { return !!this._showTileAABBs; }\n set showTileAABBs(value: boolean) {\n if (this._showTileAABBs === value) return;\n this._showTileAABBs = value;\n if (!value) { Debug.clearAabbs(); return; }\n this._update();\n }\n\n // for cache browser tests\n _setCacheLimits(limit: number, checkThreshold: number) {\n setCacheLimits(limit, checkThreshold);\n }\n\n /**\n * The version of Mapbox GL JS in use as specified in package.json, CHANGELOG.md, and the GitHub release.\n *\n * @name version\n * @instance\n * @memberof Map\n * @var {string} version\n */\n\n get version(): string { return version; }\n}\n\nexport default Map;\n\n/**\n * Interface for interactive controls added to the map. This is a\n * specification for implementers to model: it is not\n * an exported method or class.\n *\n * Controls must implement `onAdd` and `onRemove`, and must own an\n * element, which is often a `div` element. To use Mapbox GL JS's\n * default control styling, add the `mapboxgl-ctrl` class to your control's\n * node.\n *\n * @interface IControl\n * @example\n * // Control implemented as ES6 class\n * class HelloWorldControl {\n * onAdd(map) {\n * this._map = map;\n * this._container = document.createElement('div');\n * this._container.className = 'mapboxgl-ctrl';\n * this._container.textContent = 'Hello, world';\n * return this._container;\n * }\n *\n * onRemove() {\n * this._container.parentNode.removeChild(this._container);\n * this._map = undefined;\n * }\n * }\n *\n * @example\n * // Control implemented as ES5 prototypical class\n * function HelloWorldControl() { }\n *\n * HelloWorldControl.prototype.onAdd = function(map) {\n * this._map = map;\n * this._container = document.createElement('div');\n * this._container.className = 'mapboxgl-ctrl';\n * this._container.textContent = 'Hello, world';\n * return this._container;\n * };\n *\n * HelloWorldControl.prototype.onRemove = function () {\n * this._container.parentNode.removeChild(this._container);\n * this._map = undefined;\n * };\n */\n\n/**\n * Register a control on the map and give it a chance to register event listeners\n * and resources. This method is called by {@link Map#addControl}\n * internally.\n *\n * @function\n * @memberof IControl\n * @instance\n * @name onAdd\n * @param {Map} map The Map this control will be added to.\n * @returns {HTMLElement} The control's container element. This should\n * be created by the control and returned by onAdd without being attached\n * to the DOM: the map will insert the control's element into the DOM\n * as necessary.\n */\n\n/**\n * Unregister a control on the map and give it a chance to detach event listeners\n * and resources. This method is called by {@link Map#removeControl}\n * internally.\n *\n * @function\n * @memberof IControl\n * @instance\n * @name onRemove\n * @param {Map} map The Map this control will be removed from.\n * @returns {undefined} There is no required return value for this method.\n */\n\n/**\n * Optionally provide a default position for this control. If this method\n * is implemented and {@link Map#addControl} is called without the `position`\n * parameter, the value returned by getDefaultPosition will be used as the\n * control's position.\n *\n * @function\n * @memberof IControl\n * @instance\n * @name getDefaultPosition\n * @returns {string} A control position, one of the values valid in addControl.\n */\n\n/**\n * A [`Point` geometry](https://github.com/mapbox/point-geometry) object, which has\n * `x` and `y` properties representing screen coordinates in pixels.\n *\n * @typedef {Point} Point\n * @example\n * const point = new mapboxgl.Point(-77, 38);\n */\n\n/**\n * A {@link Point} or an array of two numbers representing `x` and `y` screen coordinates in pixels.\n *\n * @typedef {(Point | Array)} PointLike\n * @example\n * const p1 = new mapboxgl.Point(-77, 38); // a PointLike which is a Point\n * const p2 = [-77, 38]; // a PointLike which is an array of two numbers\n */\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {extend, bindAll} from '../../util/util.js';\nimport {MouseRotateHandler, MousePitchHandler} from '../handler/mouse.js';\nimport window from '../../util/window.js';\n\nimport type Map from '../map.js';\nimport type Point from '@mapbox/point-geometry';\n\ntype Options = {\n showCompass?: boolean,\n showZoom?: boolean,\n visualizePitch?: boolean\n};\n\nconst defaultOptions: Options = {\n showCompass: true,\n showZoom: true,\n visualizePitch: false\n};\n\n/**\n * A `NavigationControl` control contains zoom buttons and a compass.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {boolean} [options.showCompass=true] If `true` the compass button is included.\n * @param {boolean} [options.showZoom=true] If `true` the zoom-in and zoom-out buttons are included.\n * @param {boolean} [options.visualizePitch=false] If `true` the pitch is visualized by rotating X-axis of compass.\n * @example\n * const nav = new mapboxgl.NavigationControl();\n * map.addControl(nav, 'top-left');\n * @example\n * const nav = new mapboxgl.NavigationControl({\n * visualizePitch: true\n * });\n * map.addControl(nav, 'bottom-right');\n * @see [Example: Display map navigation controls](https://www.mapbox.com/mapbox-gl-js/example/navigation/)\n * @see [Example: Add a third party vector tile source](https://www.mapbox.com/mapbox-gl-js/example/third-party/)\n */\nclass NavigationControl {\n _map: ?Map;\n options: Options;\n _container: HTMLElement;\n _zoomInButton: HTMLButtonElement;\n _zoomOutButton: HTMLButtonElement;\n _compass: HTMLButtonElement;\n _compassIcon: HTMLElement;\n _handler: ?MouseRotateWrapper;\n\n constructor(options: Options) {\n this.options = extend({}, defaultOptions, options);\n\n this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-group');\n this._container.addEventListener('contextmenu', (e: MouseEvent) => e.preventDefault());\n\n if (this.options.showZoom) {\n bindAll([\n '_setButtonTitle',\n '_updateZoomButtons'\n ], this);\n this._zoomInButton = this._createButton('mapboxgl-ctrl-zoom-in', (e) => { if (this._map) this._map.zoomIn({}, {originalEvent: e}); });\n DOM.create('span', `mapboxgl-ctrl-icon`, this._zoomInButton).setAttribute('aria-hidden', 'true');\n this._zoomOutButton = this._createButton('mapboxgl-ctrl-zoom-out', (e) => { if (this._map) this._map.zoomOut({}, {originalEvent: e}); });\n DOM.create('span', `mapboxgl-ctrl-icon`, this._zoomOutButton).setAttribute('aria-hidden', 'true');\n }\n if (this.options.showCompass) {\n bindAll([\n '_rotateCompassArrow'\n ], this);\n this._compass = this._createButton('mapboxgl-ctrl-compass', (e) => {\n const map = this._map;\n if (!map) return;\n if (this.options.visualizePitch) {\n map.resetNorthPitch({}, {originalEvent: e});\n } else {\n map.resetNorth({}, {originalEvent: e});\n }\n });\n this._compassIcon = DOM.create('span', 'mapboxgl-ctrl-icon', this._compass);\n this._compassIcon.setAttribute('aria-hidden', 'true');\n }\n }\n\n _updateZoomButtons() {\n const map = this._map;\n if (!map) return;\n\n const zoom = map.getZoom();\n const isMax = zoom === map.getMaxZoom();\n const isMin = zoom === map.getMinZoom();\n this._zoomInButton.disabled = isMax;\n this._zoomOutButton.disabled = isMin;\n this._zoomInButton.setAttribute('aria-disabled', isMax.toString());\n this._zoomOutButton.setAttribute('aria-disabled', isMin.toString());\n }\n\n _rotateCompassArrow() {\n const map = this._map;\n if (!map) return;\n\n const rotate = this.options.visualizePitch ?\n `scale(${1 / Math.pow(Math.cos(map.transform.pitch * (Math.PI / 180)), 0.5)}) rotateX(${map.transform.pitch}deg) rotateZ(${map.transform.angle * (180 / Math.PI)}deg)` :\n `rotate(${map.transform.angle * (180 / Math.PI)}deg)`;\n\n map._requestDomTask(() => {\n if (this._compassIcon) {\n this._compassIcon.style.transform = rotate;\n }\n });\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n if (this.options.showZoom) {\n this._setButtonTitle(this._zoomInButton, 'ZoomIn');\n this._setButtonTitle(this._zoomOutButton, 'ZoomOut');\n // $FlowFixMe[method-unbinding]\n map.on('zoom', this._updateZoomButtons);\n this._updateZoomButtons();\n }\n if (this.options.showCompass) {\n this._setButtonTitle(this._compass, 'ResetBearing');\n if (this.options.visualizePitch) {\n // $FlowFixMe[method-unbinding]\n map.on('pitch', this._rotateCompassArrow);\n }\n // $FlowFixMe[method-unbinding]\n map.on('rotate', this._rotateCompassArrow);\n this._rotateCompassArrow();\n this._handler = new MouseRotateWrapper(map, this._compass, this.options.visualizePitch);\n }\n return this._container;\n }\n\n onRemove() {\n const map = this._map;\n if (!map) return;\n this._container.remove();\n if (this.options.showZoom) {\n // $FlowFixMe[method-unbinding]\n map.off('zoom', this._updateZoomButtons);\n }\n if (this.options.showCompass) {\n if (this.options.visualizePitch) {\n // $FlowFixMe[method-unbinding]\n map.off('pitch', this._rotateCompassArrow);\n }\n // $FlowFixMe[method-unbinding]\n map.off('rotate', this._rotateCompassArrow);\n if (this._handler) this._handler.off();\n this._handler = undefined;\n }\n this._map = undefined;\n }\n\n _createButton(className: string, fn: () => mixed): HTMLButtonElement {\n const a = DOM.create('button', className, this._container);\n a.type = 'button';\n a.addEventListener('click', fn);\n return a;\n }\n\n _setButtonTitle(button: HTMLButtonElement, title: string) {\n if (!this._map) return;\n const str = this._map._getUIString(`NavigationControl.${title}`);\n button.setAttribute('aria-label', str);\n if (button.firstElementChild) button.firstElementChild.setAttribute('title', str);\n }\n}\n\nclass MouseRotateWrapper {\n\n map: Map;\n _clickTolerance: number;\n element: HTMLElement;\n mouseRotate: MouseRotateHandler;\n mousePitch: MousePitchHandler;\n _startPos: ?Point;\n _lastPos: ?Point;\n\n constructor(map: Map, element: HTMLElement, pitch?: boolean = false) {\n this._clickTolerance = 10;\n this.element = element;\n this.mouseRotate = new MouseRotateHandler({clickTolerance: map.dragRotate._mouseRotate._clickTolerance});\n this.map = map;\n if (pitch) this.mousePitch = new MousePitchHandler({clickTolerance: map.dragRotate._mousePitch._clickTolerance});\n\n bindAll(['mousedown', 'mousemove', 'mouseup', 'touchstart', 'touchmove', 'touchend', 'reset'], this);\n // $FlowFixMe[method-unbinding]\n element.addEventListener('mousedown', this.mousedown);\n // $FlowFixMe[method-unbinding]\n element.addEventListener('touchstart', this.touchstart, {passive: false});\n // $FlowFixMe[method-unbinding]\n element.addEventListener('touchmove', this.touchmove);\n // $FlowFixMe[method-unbinding]\n element.addEventListener('touchend', this.touchend);\n // $FlowFixMe[method-unbinding]\n element.addEventListener('touchcancel', this.reset);\n }\n\n down(e: MouseEvent, point: Point) {\n this.mouseRotate.mousedown(e, point);\n if (this.mousePitch) this.mousePitch.mousedown(e, point);\n DOM.disableDrag();\n }\n\n move(e: MouseEvent, point: Point) {\n const map = this.map;\n const r = this.mouseRotate.mousemoveWindow(e, point);\n const delta = r && r.bearingDelta;\n if (delta) map.setBearing(map.getBearing() + delta);\n if (this.mousePitch) {\n const p = this.mousePitch.mousemoveWindow(e, point);\n const delta = p && p.pitchDelta;\n if (delta) map.setPitch(map.getPitch() + delta);\n }\n }\n\n off() {\n const element = this.element;\n // $FlowFixMe[method-unbinding]\n element.removeEventListener('mousedown', this.mousedown);\n // $FlowFixMe[method-unbinding]\n element.removeEventListener('touchstart', this.touchstart, {passive: false});\n // $FlowFixMe[method-unbinding]\n element.removeEventListener('touchmove', this.touchmove);\n // $FlowFixMe[method-unbinding]\n element.removeEventListener('touchend', this.touchend);\n // $FlowFixMe[method-unbinding]\n element.removeEventListener('touchcancel', this.reset);\n this.offTemp();\n }\n\n offTemp() {\n DOM.enableDrag();\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('mousemove', this.mousemove);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('mouseup', this.mouseup);\n }\n\n mousedown(e: MouseEvent) {\n this.down(extend({}, e, {ctrlKey: true, preventDefault: () => e.preventDefault()}), DOM.mousePos(this.element, e));\n // $FlowFixMe[method-unbinding]\n window.addEventListener('mousemove', this.mousemove);\n // $FlowFixMe[method-unbinding]\n window.addEventListener('mouseup', this.mouseup);\n }\n\n mousemove(e: MouseEvent) {\n this.move(e, DOM.mousePos(this.element, e));\n }\n\n mouseup(e: MouseEvent) {\n this.mouseRotate.mouseupWindow(e);\n if (this.mousePitch) this.mousePitch.mouseupWindow(e);\n this.offTemp();\n }\n\n touchstart(e: TouchEvent) {\n if (e.targetTouches.length !== 1) {\n this.reset();\n } else {\n this._startPos = this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0];\n this.down((({type: 'mousedown', button: 0, ctrlKey: true, preventDefault: () => e.preventDefault()}: any): MouseEvent), this._startPos);\n }\n }\n\n touchmove(e: TouchEvent) {\n if (e.targetTouches.length !== 1) {\n this.reset();\n } else {\n this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0];\n this.move((({preventDefault: () => e.preventDefault()}: any): MouseEvent), this._lastPos);\n }\n }\n\n touchend(e: TouchEvent) {\n if (e.targetTouches.length === 0 &&\n this._startPos &&\n this._lastPos &&\n this._startPos.dist(this._lastPos) < this._clickTolerance) {\n this.element.click();\n }\n this.reset();\n }\n\n reset() {\n this.mouseRotate.reset();\n if (this.mousePitch) this.mousePitch.reset();\n delete this._startPos;\n delete this._lastPos;\n this.offTemp();\n }\n}\n\nexport default NavigationControl;\n","// @flow\n\nimport {Event, Evented} from '../../util/evented.js';\nimport * as DOM from '../../util/dom.js';\nimport window from '../../util/window.js';\nimport {extend, bindAll, warnOnce} from '../../util/util.js';\nimport assert from 'assert';\nimport Marker from '../marker.js';\nimport LngLat from '../../geo/lng_lat.js';\nimport throttle from '../../util/throttle.js';\nimport {mercatorZfromAltitude} from '../../geo/mercator_coordinate.js';\n\nimport type Map from '../map.js';\nimport type {AnimationOptions, CameraOptions} from '../camera.js';\n\ntype Options = {\n positionOptions: PositionOptions,\n fitBoundsOptions: AnimationOptions & CameraOptions,\n trackUserLocation: boolean,\n showAccuracyCircle: boolean,\n showUserLocation: boolean,\n showUserHeading: boolean,\n geolocation: Geolocation,\n};\n\ntype DeviceOrientationEvent = {\n absolute: boolean,\n alpha: number,\n beta: number,\n gamma: number,\n requestPermission: Promise,\n webkitCompassHeading?: number,\n}\n\nconst defaultOptions = {\n positionOptions: {\n enableHighAccuracy: false,\n maximumAge: 0,\n timeout: 6000 /* 6 sec */\n },\n fitBoundsOptions: {\n maxZoom: 15\n },\n trackUserLocation: false,\n showAccuracyCircle: true,\n showUserLocation: true,\n showUserHeading: false\n};\n\n/**\n * A `GeolocateControl` control provides a button that uses the browser's geolocation\n * API to locate the user on the map.\n * Add this control to a map using {@link Map#addControl}.\n *\n * Not all browsers support geolocation,\n * and some users may disable the feature. Geolocation support for modern\n * browsers including Chrome requires sites to be served over HTTPS. If\n * geolocation support is not available, the GeolocateControl will show\n * as disabled.\n *\n * The [zoom level](https://docs.mapbox.com/help/glossary/zoom-level/) applied depends on the accuracy of the geolocation provided by the device.\n *\n * The GeolocateControl has two modes. If `trackUserLocation` is `false` (default) the control acts as a button, which when pressed will set the map's camera to target the user location. If the user moves, the map won't update. This is most suited for the desktop. If `trackUserLocation` is `true` the control acts as a toggle button that when active the user's location is actively monitored for changes. In this mode the GeolocateControl has three interaction states:\n * * active - The map's camera automatically updates as the user's location changes, keeping the location dot in the center. This is the initial state, and the state upon clicking the `GeolocateControl` button.\n * * passive - The user's location dot automatically updates, but the map's camera does not. Occurs upon the user initiating a map movement.\n * * disabled - Occurs if geolocation is not available, disabled, or denied.\n *\n * These interaction states can't be controlled programmatically. Instead, they are set based on user interactions.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {Object} [options.positionOptions={enableHighAccuracy: false, timeout: 6000}] A Geolocation API [PositionOptions](https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions) object.\n * @param {Object} [options.fitBoundsOptions={maxZoom: 15}] A {@link Map#fitBounds} options object to use when the map is panned and zoomed to the user's location. The default is to use a `maxZoom` of 15 to limit how far the map will zoom in for very accurate locations.\n * @param {Object} [options.trackUserLocation=false] If `true` the GeolocateControl becomes a toggle button and when active the map will receive updates to the user's location as it changes.\n * @param {Object} [options.showAccuracyCircle=true] By default, if `showUserLocation` is `true`, a transparent circle will be drawn around the user location indicating the accuracy (95% confidence level) of the user's location. Set to `false` to disable. Always disabled when `showUserLocation` is `false`.\n * @param {Object} [options.showUserLocation=true] By default a dot will be shown on the map at the user's location. Set to `false` to disable.\n * @param {Object} [options.showUserHeading=false] If `true` an arrow will be drawn next to the user location dot indicating the device's heading. This only has affect when `trackUserLocation` is `true`.\n * @param {Object} [options.geolocation=window.navigator.geolocation] `window.navigator.geolocation` by default; you can provide an object with the same shape to customize geolocation handling.\n *\n * @example\n * map.addControl(new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true,\n * showUserHeading: true\n * }));\n * @see [Example: Locate the user](https://www.mapbox.com/mapbox-gl-js/example/locate-user/)\n */\nclass GeolocateControl extends Evented {\n _map: Map;\n options: Options;\n _container: HTMLElement;\n _dotElement: HTMLElement;\n _circleElement: HTMLElement;\n _geolocateButton: HTMLButtonElement;\n _geolocationWatchID: number;\n _timeoutId: ?TimeoutID;\n _watchState: 'OFF' | 'ACTIVE_LOCK' | 'WAITING_ACTIVE' | 'ACTIVE_ERROR' | 'BACKGROUND' | 'BACKGROUND_ERROR';\n _lastKnownPosition: any;\n _userLocationDotMarker: Marker;\n _accuracyCircleMarker: Marker;\n _accuracy: number;\n _setup: boolean; // set to true once the control has been setup\n _heading: ?number;\n _updateMarkerRotationThrottled: Function;\n\n _numberOfWatches: number;\n _noTimeout: boolean;\n _supportsGeolocation: boolean;\n\n constructor(options: $Shape) {\n super();\n const geolocation = window.navigator.geolocation;\n this.options = extend({geolocation}, defaultOptions, options);\n\n bindAll([\n '_onSuccess',\n '_onError',\n '_onZoom',\n '_finish',\n '_setupUI',\n '_updateCamera',\n '_updateMarker',\n '_updateMarkerRotation',\n '_onDeviceOrientation'\n ], this);\n\n // $FlowFixMe[method-unbinding]\n this._updateMarkerRotationThrottled = throttle(this._updateMarkerRotation, 20);\n this._numberOfWatches = 0;\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n this._container = DOM.create('div', `mapboxgl-ctrl mapboxgl-ctrl-group`);\n // $FlowFixMe[method-unbinding]\n this._checkGeolocationSupport(this._setupUI);\n return this._container;\n }\n\n onRemove() {\n // clear the geolocation watch if exists\n if (this._geolocationWatchID !== undefined) {\n this.options.geolocation.clearWatch(this._geolocationWatchID);\n this._geolocationWatchID = (undefined: any);\n }\n\n // clear the markers from the map\n if (this.options.showUserLocation && this._userLocationDotMarker) {\n this._userLocationDotMarker.remove();\n }\n if (this.options.showAccuracyCircle && this._accuracyCircleMarker) {\n this._accuracyCircleMarker.remove();\n }\n\n this._container.remove();\n // $FlowFixMe[method-unbinding]\n this._map.off('zoom', this._onZoom);\n this._map = (undefined: any);\n this._numberOfWatches = 0;\n this._noTimeout = false;\n }\n\n _checkGeolocationSupport(callback: boolean => void) {\n const updateSupport = (supported: boolean = !!this.options.geolocation) => {\n this._supportsGeolocation = supported;\n callback(supported);\n };\n\n if (this._supportsGeolocation !== undefined) {\n callback(this._supportsGeolocation);\n\n } else if (window.navigator.permissions !== undefined) {\n // navigator.permissions has incomplete browser support http://caniuse.com/#feat=permissions-api\n // Test for the case where a browser disables Geolocation because of an insecure origin;\n // in some environments like iOS16 WebView, permissions reject queries but still support geolocation\n window.navigator.permissions.query({name: 'geolocation'})\n .then(p => updateSupport(p.state !== 'denied'))\n .catch(() => updateSupport());\n\n } else {\n updateSupport();\n }\n }\n\n /**\n * Check if the Geolocation API Position is outside the map's maxbounds.\n *\n * @param {Position} position the Geolocation API Position\n * @returns {boolean} Returns `true` if position is outside the map's maxbounds, otherwise returns `false`.\n * @private\n */\n _isOutOfMapMaxBounds(position: Position): boolean {\n const bounds = this._map.getMaxBounds();\n const coordinates = position.coords;\n\n return !!bounds && (\n coordinates.longitude < bounds.getWest() ||\n coordinates.longitude > bounds.getEast() ||\n coordinates.latitude < bounds.getSouth() ||\n coordinates.latitude > bounds.getNorth()\n );\n }\n\n _setErrorState() {\n switch (this._watchState) {\n case 'WAITING_ACTIVE':\n this._watchState = 'ACTIVE_ERROR';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n break;\n case 'ACTIVE_LOCK':\n this._watchState = 'ACTIVE_ERROR';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n // turn marker grey\n break;\n case 'BACKGROUND':\n this._watchState = 'BACKGROUND_ERROR';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n // turn marker grey\n break;\n case 'ACTIVE_ERROR':\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n }\n\n /**\n * When the Geolocation API returns a new location, update the GeolocateControl.\n *\n * @param {Position} position the Geolocation API Position\n * @private\n */\n _onSuccess(position: Position) {\n if (!this._map) {\n // control has since been removed\n return;\n }\n\n if (this._isOutOfMapMaxBounds(position)) {\n this._setErrorState();\n\n this.fire(new Event('outofmaxbounds', position));\n this._updateMarker();\n this._finish();\n\n return;\n }\n\n if (this.options.trackUserLocation) {\n // keep a record of the position so that if the state is BACKGROUND and the user\n // clicks the button, we can move to ACTIVE_LOCK immediately without waiting for\n // watchPosition to trigger _onSuccess\n this._lastKnownPosition = position;\n\n switch (this._watchState) {\n case 'WAITING_ACTIVE':\n case 'ACTIVE_LOCK':\n case 'ACTIVE_ERROR':\n this._watchState = 'ACTIVE_LOCK';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n break;\n case 'BACKGROUND':\n case 'BACKGROUND_ERROR':\n this._watchState = 'BACKGROUND';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n }\n\n // if showUserLocation and the watch state isn't off then update the marker location\n if (this.options.showUserLocation && this._watchState !== 'OFF') {\n this._updateMarker(position);\n }\n\n // if in normal mode (not watch mode), or if in watch mode and the state is active watch\n // then update the camera\n if (!this.options.trackUserLocation || this._watchState === 'ACTIVE_LOCK') {\n this._updateCamera(position);\n }\n\n if (this.options.showUserLocation) {\n this._dotElement.classList.remove('mapboxgl-user-location-dot-stale');\n }\n\n this.fire(new Event('geolocate', position));\n this._finish();\n }\n\n /**\n * Update the camera location to center on the current position\n *\n * @param {Position} position the Geolocation API Position\n * @private\n */\n _updateCamera(position: Position) {\n const center = new LngLat(position.coords.longitude, position.coords.latitude);\n const radius = position.coords.accuracy;\n const bearing = this._map.getBearing();\n const options = extend({bearing}, this.options.fitBoundsOptions);\n\n this._map.fitBounds(center.toBounds(radius), options, {\n geolocateSource: true // tag this camera change so it won't cause the control to change to background state\n });\n }\n\n /**\n * Update the user location dot Marker to the current position\n *\n * @param {Position} [position] the Geolocation API Position\n * @private\n */\n _updateMarker(position: ?Position) {\n if (position) {\n const center = new LngLat(position.coords.longitude, position.coords.latitude);\n this._accuracyCircleMarker.setLngLat(center).addTo(this._map);\n this._userLocationDotMarker.setLngLat(center).addTo(this._map);\n this._accuracy = position.coords.accuracy;\n if (this.options.showUserLocation && this.options.showAccuracyCircle) {\n this._updateCircleRadius();\n }\n } else {\n this._userLocationDotMarker.remove();\n this._accuracyCircleMarker.remove();\n }\n }\n\n _updateCircleRadius() {\n assert(this._circleElement);\n const map = this._map;\n const tr = map.transform;\n\n const pixelsPerMeter = mercatorZfromAltitude(1.0, tr._center.lat) * tr.worldSize;\n assert(pixelsPerMeter !== 0.0);\n const circleDiameter = Math.ceil(2.0 * this._accuracy * pixelsPerMeter);\n\n this._circleElement.style.width = `${circleDiameter}px`;\n this._circleElement.style.height = `${circleDiameter}px`;\n }\n\n _onZoom() {\n if (this.options.showUserLocation && this.options.showAccuracyCircle) {\n this._updateCircleRadius();\n }\n }\n\n /**\n * Update the user location dot Marker rotation to the current heading\n *\n * @private\n */\n _updateMarkerRotation() {\n if (this._userLocationDotMarker && typeof this._heading === 'number') {\n this._userLocationDotMarker.setRotation(this._heading);\n this._dotElement.classList.add('mapboxgl-user-location-show-heading');\n } else {\n this._dotElement.classList.remove('mapboxgl-user-location-show-heading');\n this._userLocationDotMarker.setRotation(0);\n }\n }\n\n _onError(error: PositionError) {\n if (!this._map) {\n // control has since been removed\n return;\n }\n\n if (this.options.trackUserLocation) {\n if (error.code === 1) {\n // PERMISSION_DENIED\n this._watchState = 'OFF';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n this._geolocateButton.disabled = true;\n const title = this._map._getUIString('GeolocateControl.LocationNotAvailable');\n this._geolocateButton.setAttribute('aria-label', title);\n if (this._geolocateButton.firstElementChild) this._geolocateButton.firstElementChild.setAttribute('title', title);\n\n if (this._geolocationWatchID !== undefined) {\n this._clearWatch();\n }\n } else if (error.code === 3 && this._noTimeout) {\n // this represents a forced error state\n // this was triggered to force immediate geolocation when a watch is already present\n // see https://github.com/mapbox/mapbox-gl-js/issues/8214\n // and https://w3c.github.io/geolocation-api/#example-5-forcing-the-user-agent-to-return-a-fresh-cached-position\n return;\n } else {\n this._setErrorState();\n }\n }\n\n if (this._watchState !== 'OFF' && this.options.showUserLocation) {\n this._dotElement.classList.add('mapboxgl-user-location-dot-stale');\n }\n\n this.fire(new Event('error', error));\n\n this._finish();\n }\n\n _finish() {\n if (this._timeoutId) { clearTimeout(this._timeoutId); }\n this._timeoutId = undefined;\n }\n\n _setupUI(supported: boolean) {\n if (this._map === undefined) {\n // This control was removed from the map before geolocation\n // support was determined.\n return;\n }\n this._container.addEventListener('contextmenu', (e: MouseEvent) => e.preventDefault());\n this._geolocateButton = DOM.create('button', `mapboxgl-ctrl-geolocate`, this._container);\n DOM.create('span', `mapboxgl-ctrl-icon`, this._geolocateButton).setAttribute('aria-hidden', 'true');\n\n this._geolocateButton.type = 'button';\n\n if (supported === false) {\n warnOnce('Geolocation support is not available so the GeolocateControl will be disabled.');\n const title = this._map._getUIString('GeolocateControl.LocationNotAvailable');\n this._geolocateButton.disabled = true;\n this._geolocateButton.setAttribute('aria-label', title);\n if (this._geolocateButton.firstElementChild) this._geolocateButton.firstElementChild.setAttribute('title', title);\n } else {\n const title = this._map._getUIString('GeolocateControl.FindMyLocation');\n this._geolocateButton.setAttribute('aria-label', title);\n if (this._geolocateButton.firstElementChild) this._geolocateButton.firstElementChild.setAttribute('title', title);\n }\n\n if (this.options.trackUserLocation) {\n this._geolocateButton.setAttribute('aria-pressed', 'false');\n this._watchState = 'OFF';\n }\n\n // when showUserLocation is enabled, keep the Geolocate button disabled until the device location marker is setup on the map\n if (this.options.showUserLocation) {\n this._dotElement = DOM.create('div', 'mapboxgl-user-location');\n this._dotElement.appendChild(DOM.create('div', 'mapboxgl-user-location-dot'));\n this._dotElement.appendChild(DOM.create('div', 'mapboxgl-user-location-heading'));\n\n this._userLocationDotMarker = new Marker({\n element: this._dotElement,\n rotationAlignment: 'map',\n pitchAlignment: 'map'\n });\n\n this._circleElement = DOM.create('div', 'mapboxgl-user-location-accuracy-circle');\n this._accuracyCircleMarker = new Marker({element: this._circleElement, pitchAlignment: 'map'});\n\n if (this.options.trackUserLocation) this._watchState = 'OFF';\n\n // $FlowFixMe[method-unbinding]\n this._map.on('zoom', this._onZoom);\n }\n\n // $FlowFixMe[method-unbinding]\n this._geolocateButton.addEventListener('click', this.trigger.bind(this));\n\n this._setup = true;\n\n // when the camera is changed (and it's not as a result of the Geolocation Control) change\n // the watch mode to background watch, so that the marker is updated but not the camera.\n if (this.options.trackUserLocation) {\n this._map.on('movestart', (event) => {\n const fromResize = event.originalEvent && event.originalEvent.type === 'resize';\n if (!event.geolocateSource && this._watchState === 'ACTIVE_LOCK' && !fromResize) {\n this._watchState = 'BACKGROUND';\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n\n this.fire(new Event('trackuserlocationend'));\n }\n });\n }\n }\n\n /**\n * Programmatically request and move the map to the user's location.\n *\n * @returns {boolean} Returns `false` if called before control was added to a map, otherwise returns `true`.\n * Called on a deviceorientation event.\n *\n * @param deviceOrientationEvent {DeviceOrientationEvent}\n * @private\n * @example\n * // Initialize the GeolocateControl.\n * var geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * map.on('load', function() {\n * geolocate.trigger();\n * });\n */\n _onDeviceOrientation(deviceOrientationEvent: DeviceOrientationEvent) {\n // absolute is true if the orientation data is provided as the difference between the Earth's coordinate frame and the device's coordinate frame, or false if the orientation data is being provided in reference to some arbitrary, device-determined coordinate frame.\n if (this._userLocationDotMarker) {\n if (deviceOrientationEvent.webkitCompassHeading) {\n // Safari\n this._heading = deviceOrientationEvent.webkitCompassHeading;\n } else if (deviceOrientationEvent.absolute === true) {\n // non-Safari alpha increases counter clockwise around the z axis\n this._heading = deviceOrientationEvent.alpha * -1;\n }\n this._updateMarkerRotationThrottled();\n }\n }\n\n /**\n * Trigger a geolocation event.\n *\n * @example\n * // Initialize the geolocate control.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * map.on('load', () => {\n * geolocate.trigger();\n * });\n * @returns {boolean} Returns `false` if called before control was added to a map, otherwise returns `true`.\n */\n trigger(): boolean {\n if (!this._setup) {\n warnOnce('Geolocate control triggered before added to a map');\n return false;\n }\n if (this.options.trackUserLocation) {\n // update watchState and do any outgoing state cleanup\n switch (this._watchState) {\n case 'OFF':\n // turn on the GeolocateControl\n this._watchState = 'WAITING_ACTIVE';\n\n this.fire(new Event('trackuserlocationstart'));\n break;\n case 'WAITING_ACTIVE':\n case 'ACTIVE_LOCK':\n case 'ACTIVE_ERROR':\n case 'BACKGROUND_ERROR':\n // turn off the Geolocate Control\n this._numberOfWatches--;\n this._noTimeout = false;\n this._watchState = 'OFF';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n\n this.fire(new Event('trackuserlocationend'));\n break;\n case 'BACKGROUND':\n this._watchState = 'ACTIVE_LOCK';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n // set camera to last known location\n if (this._lastKnownPosition) this._updateCamera(this._lastKnownPosition);\n\n this.fire(new Event('trackuserlocationstart'));\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n\n // incoming state setup\n switch (this._watchState) {\n case 'WAITING_ACTIVE':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n break;\n case 'ACTIVE_LOCK':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n break;\n case 'ACTIVE_ERROR':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n break;\n case 'BACKGROUND':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n break;\n case 'BACKGROUND_ERROR':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background-error');\n break;\n case 'OFF':\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n\n // manage geolocation.watchPosition / geolocation.clearWatch\n if (this._watchState === 'OFF' && this._geolocationWatchID !== undefined) {\n // clear watchPosition as we've changed to an OFF state\n this._clearWatch();\n } else if (this._geolocationWatchID === undefined) {\n // enable watchPosition since watchState is not OFF and there is no watchPosition already running\n\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.setAttribute('aria-pressed', 'true');\n\n this._numberOfWatches++;\n let positionOptions;\n if (this._numberOfWatches > 1) {\n positionOptions = {maximumAge:600000, timeout:0};\n this._noTimeout = true;\n } else {\n positionOptions = this.options.positionOptions;\n this._noTimeout = false;\n }\n\n this._geolocationWatchID = this.options.geolocation.watchPosition(\n this._onSuccess, this._onError, positionOptions);\n\n if (this.options.showUserHeading) {\n this._addDeviceOrientationListener();\n }\n }\n } else {\n // $FlowFixMe[method-unbinding]\n this.options.geolocation.getCurrentPosition(this._onSuccess, this._onError, this.options.positionOptions);\n\n // This timeout ensures that we still call finish() even if\n // the user declines to share their location in Firefox\n // $FlowFixMe[method-unbinding]\n this._timeoutId = setTimeout(this._finish, 10000 /* 10sec */);\n }\n\n return true;\n }\n\n _addDeviceOrientationListener() {\n const addListener = () => {\n if ('ondeviceorientationabsolute' in window) {\n // $FlowFixMe[method-unbinding]\n window.addEventListener('deviceorientationabsolute', this._onDeviceOrientation);\n } else {\n // $FlowFixMe[method-unbinding]\n window.addEventListener('deviceorientation', this._onDeviceOrientation);\n }\n };\n\n if (typeof window.DeviceMotionEvent !== \"undefined\" &&\n typeof window.DeviceMotionEvent.requestPermission === 'function') {\n // $FlowFixMe\n DeviceOrientationEvent.requestPermission()\n .then(response => {\n if (response === 'granted') {\n addListener();\n }\n })\n .catch(console.error);\n } else {\n addListener();\n }\n }\n\n _clearWatch() {\n this.options.geolocation.clearWatch(this._geolocationWatchID);\n\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('deviceorientation', this._onDeviceOrientation);\n // $FlowFixMe[method-unbinding]\n window.removeEventListener('deviceorientationabsolute', this._onDeviceOrientation);\n\n this._geolocationWatchID = (undefined: any);\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.setAttribute('aria-pressed', 'false');\n\n if (this.options.showUserLocation) {\n this._updateMarker(null);\n }\n }\n}\n\nexport default GeolocateControl;\n\n/* GeolocateControl Watch States\n * This is the private state of the control.\n *\n * OFF\n * off/inactive\n * WAITING_ACTIVE\n * GeolocateControl was clicked but still waiting for Geolocation API response with user location\n * ACTIVE_LOCK\n * Showing the user location as a dot AND tracking the camera to be fixed to their location. If their location changes the map moves to follow.\n * ACTIVE_ERROR\n * There was en error from the Geolocation API while trying to show and track the user location.\n * BACKGROUND\n * Showing the user location as a dot but the camera doesn't follow their location as it changes.\n * BACKGROUND_ERROR\n * There was an error from the Geolocation API while trying to show (but not track) the user location.\n */\n\n/**\n * Fired on each Geolocation API position update that returned as success.\n *\n * @event geolocate\n * @memberof GeolocateControl\n * @instance\n * @property {Position} data The returned [Position](https://developer.mozilla.org/en-US/docs/Web/API/Position) object from the callback in [Geolocation.getCurrentPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) or [Geolocation.watchPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition).\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when a geolocate event occurs.\n * geolocate.on('geolocate', () => {\n * console.log('A geolocate event has occurred.');\n * });\n *\n */\n\n/**\n * Fired on each Geolocation API position update that returned as an error.\n *\n * @event error\n * @memberof GeolocateControl\n * @instance\n * @property {PositionError} data The returned [PositionError](https://developer.mozilla.org/en-US/docs/Web/API/PositionError) object from the callback in [Geolocation.getCurrentPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) or [Geolocation.watchPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition).\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when an error event occurs.\n * geolocate.on('error', () => {\n * console.log('An error event has occurred.');\n * });\n *\n */\n\n/**\n * Fired on each Geolocation API position update that returned as success but user position is out of map `maxBounds`.\n *\n * @event outofmaxbounds\n * @memberof GeolocateControl\n * @instance\n * @property {Position} data The returned [Position](https://developer.mozilla.org/en-US/docs/Web/API/Position) object from the callback in [Geolocation.getCurrentPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) or [Geolocation.watchPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition).\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when an outofmaxbounds event occurs.\n * geolocate.on('outofmaxbounds', () => {\n * console.log('An outofmaxbounds event has occurred.');\n * });\n *\n */\n\n/**\n * Fired when the GeolocateControl changes to the active lock state, which happens either upon first obtaining a successful Geolocation API position for the user (a geolocate event will follow), or when the user clicks the geolocate button when in the background state, which uses the last known position to recenter the map and enter active lock state (no geolocate event will follow unless the users's location changes).\n *\n * @event trackuserlocationstart\n * @memberof GeolocateControl\n * @instance\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when a trackuserlocationstart event occurs.\n * geolocate.on('trackuserlocationstart', () => {\n * console.log('A trackuserlocationstart event has occurred.');\n * });\n *\n */\n\n/**\n * Fired when the GeolocateControl changes to the background state, which happens when a user changes the camera during an active position lock. This only applies when trackUserLocation is true. In the background state, the dot on the map will update with location updates but the camera will not.\n *\n * @event trackuserlocationend\n * @memberof GeolocateControl\n * @instance\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when a trackuserlocationend event occurs.\n * geolocate.on('trackuserlocationend', () => {\n * console.log('A trackuserlocationend event has occurred.');\n * });\n *\n */\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {extend, bindAll} from '../../util/util.js';\n\nimport type Map, {ControlPosition} from '../map.js';\n\ntype Unit = 'imperial' | 'metric' | 'nautical';\n\ntype Options = {\n maxWidth?: number,\n unit?: Unit;\n};\n\nconst defaultOptions: Options = {\n maxWidth: 100,\n unit: 'metric'\n};\n\nconst unitAbbr = {\n kilometer: 'km',\n meter: 'm',\n mile: 'mi',\n foot: 'ft',\n 'nautical-mile': 'nm',\n};\n\n/**\n * A `ScaleControl` control displays the ratio of a distance on the map to the corresponding distance on the ground.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {number} [options.maxWidth='100'] The maximum length of the scale control in pixels.\n * @param {string} [options.unit='metric'] Unit of the distance (`'imperial'`, `'metric'` or `'nautical'`).\n * @example\n * const scale = new mapboxgl.ScaleControl({\n * maxWidth: 80,\n * unit: 'imperial'\n * });\n * map.addControl(scale);\n *\n * scale.setUnit('metric');\n */\nclass ScaleControl {\n _map: Map;\n _container: HTMLElement;\n _language: ?string | ?string[];\n _isNumberFormatSupported: boolean;\n options: Options;\n\n constructor(options: Options) {\n this.options = extend({}, defaultOptions, options);\n\n // Some old browsers (e.g., Safari < 14.1) don't support the \"unit\" style in NumberFormat.\n // This is a workaround to display the scale without proper internationalization support.\n this._isNumberFormatSupported = isNumberFormatSupported();\n\n bindAll([\n '_update',\n '_setScale',\n 'setUnit'\n ], this);\n }\n\n getDefaultPosition(): ControlPosition {\n return 'bottom-left';\n }\n\n _update() {\n // A horizontal scale is imagined to be present at center of the map\n // container with maximum length (Default) as 100px.\n // Using spherical law of cosines approximation, the real distance is\n // found between the two coordinates.\n const maxWidth = this.options.maxWidth || 100;\n\n const map = this._map;\n const y = map._containerHeight / 2;\n const x = (map._containerWidth / 2) - maxWidth / 2;\n const left = map.unproject([x, y]);\n const right = map.unproject([x + maxWidth, y]);\n const maxMeters = left.distanceTo(right);\n // The real distance corresponding to 100px scale length is rounded off to\n // near pretty number and the scale length for the same is found out.\n // Default unit of the scale is based on User's locale.\n if (this.options.unit === 'imperial') {\n const maxFeet = 3.2808 * maxMeters;\n if (maxFeet > 5280) {\n const maxMiles = maxFeet / 5280;\n this._setScale(maxWidth, maxMiles, 'mile');\n } else {\n this._setScale(maxWidth, maxFeet, 'foot');\n }\n } else if (this.options.unit === 'nautical') {\n const maxNauticals = maxMeters / 1852;\n this._setScale(maxWidth, maxNauticals, 'nautical-mile');\n } else if (maxMeters >= 1000) {\n this._setScale(maxWidth, maxMeters / 1000, 'kilometer');\n } else {\n this._setScale(maxWidth, maxMeters, 'meter');\n }\n }\n\n _setScale(maxWidth: number, maxDistance: number, unit: string) {\n this._map._requestDomTask(() => {\n const distance = getRoundNum(maxDistance);\n const ratio = distance / maxDistance;\n\n if (this._isNumberFormatSupported && unit !== 'nautical-mile') {\n // $FlowFixMe[incompatible-call] — flow v0.190.1 doesn't support optional `locales` argument and `unit` style option\n this._container.innerHTML = new Intl.NumberFormat(this._language, {style: 'unit', unitDisplay: 'short', unit}).format(distance);\n } else {\n this._container.innerHTML = `${distance} ${unitAbbr[unit]}`;\n }\n\n this._container.style.width = `${maxWidth * ratio}px`;\n });\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n this._language = map.getLanguage();\n this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-scale', map.getContainer());\n this._container.dir = 'auto';\n\n // $FlowFixMe[method-unbinding]\n this._map.on('move', this._update);\n this._update();\n\n return this._container;\n }\n\n onRemove() {\n this._container.remove();\n // $FlowFixMe[method-unbinding]\n this._map.off('move', this._update);\n this._map = (undefined: any);\n }\n\n _setLanguage(language: string) {\n this._language = language;\n this._update();\n }\n\n /**\n * Set the scale's unit of the distance.\n *\n * @param {'imperial' | 'metric' | 'nautical'} unit Unit of the distance (`'imperial'`, `'metric'` or `'nautical'`).\n */\n setUnit(unit: Unit) {\n this.options.unit = unit;\n this._update();\n }\n}\n\nexport default ScaleControl;\n\nfunction isNumberFormatSupported() {\n try {\n // $FlowIgnore\n new Intl.NumberFormat('en', {style: 'unit', unitDisplay: 'short', unit: 'meter'});\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction getDecimalRoundNum(d: number) {\n const multiplier = Math.pow(10, Math.ceil(-Math.log(d) / Math.LN10));\n return Math.round(d * multiplier) / multiplier;\n}\n\nfunction getRoundNum(num: number) {\n const pow10 = Math.pow(10, (`${Math.floor(num)}`).length - 1);\n let d = num / pow10;\n\n d = d >= 10 ? 10 :\n d >= 5 ? 5 :\n d >= 3 ? 3 :\n d >= 2 ? 2 :\n d >= 1 ? 1 : getDecimalRoundNum(d);\n\n return pow10 * d;\n}\n","// @flow\n\nimport {PerformanceUtils} from './util/performance.js';\n\nimport assert from 'assert';\nimport {supported} from '@mapbox/mapbox-gl-supported';\n\nimport {version} from '../package.json';\nimport Map from './ui/map.js';\nimport NavigationControl from './ui/control/navigation_control.js';\nimport GeolocateControl from './ui/control/geolocate_control.js';\nimport AttributionControl from './ui/control/attribution_control.js';\nimport ScaleControl from './ui/control/scale_control.js';\nimport FullscreenControl from './ui/control/fullscreen_control.js';\nimport Popup from './ui/popup.js';\nimport Marker from './ui/marker.js';\nimport Style from './style/style.js';\nimport LngLat from './geo/lng_lat.js';\nimport LngLatBounds from './geo/lng_lat_bounds.js';\nimport Point from '@mapbox/point-geometry';\nimport MercatorCoordinate from './geo/mercator_coordinate.js';\nimport {Evented} from './util/evented.js';\nimport config from './util/config.js';\nimport {Debug} from './util/debug.js';\nimport {isSafari} from './util/util.js';\nimport {setRTLTextPlugin, getRTLTextPluginStatus} from './source/rtl_text_plugin.js';\nimport WorkerPool from './util/worker_pool.js';\nimport {prewarm, clearPrewarmedResources} from './util/global_worker_pool.js';\nimport {clearTileCache} from './util/tile_request_cache.js';\nimport {WorkerPerformanceUtils} from './util/worker_performance_utils.js';\nimport {FreeCameraOptions} from './ui/free_camera.js';\nimport browser from './util/browser.js';\n\nconst exported = {\n version,\n supported,\n setRTLTextPlugin,\n getRTLTextPluginStatus,\n Map,\n NavigationControl,\n GeolocateControl,\n AttributionControl,\n ScaleControl,\n FullscreenControl,\n Popup,\n Marker,\n Style,\n LngLat,\n LngLatBounds,\n Point,\n MercatorCoordinate,\n FreeCameraOptions,\n Evented,\n config,\n /**\n * Initializes resources like WebWorkers that can be shared across maps to lower load\n * times in some situations. [`mapboxgl.workerUrl`](https://docs.mapbox.com/mapbox-gl-js/api/properties/#workerurl)\n * and [`mapboxgl.workerCount`](https://docs.mapbox.com/mapbox-gl-js/api/properties/#workercount), if being\n * used, must be set before `prewarm()` is called to have an effect.\n *\n * By default, the lifecycle of these resources is managed automatically, and they are\n * lazily initialized when a `Map` is first created. Invoking `prewarm()` creates these\n * resources ahead of time and ensures they are not cleared when the last `Map`\n * is removed from the page. This allows them to be re-used by new `Map` instances that\n * are created later. They can be manually cleared by calling\n * [`mapboxgl.clearPrewarmedResources()`](https://docs.mapbox.com/mapbox-gl-js/api/properties/#clearprewarmedresources).\n * This is only necessary if your web page remains active but stops using maps altogether.\n * `prewarm()` is idempotent and has guards against being executed multiple times,\n * and any resources allocated by `prewarm()` are created synchronously.\n *\n * This is primarily useful when using Mapbox GL JS maps in a single page app,\n * in which a user navigates between various views, resulting in\n * constant creation and destruction of `Map` instances.\n *\n * @function prewarm\n * @example\n * mapboxgl.prewarm();\n */\n prewarm,\n /**\n * Clears up resources that have previously been created by [`mapboxgl.prewarm()](https://docs.mapbox.com/mapbox-gl-js/api/properties/#prewarm)`.\n * Note that this is typically not necessary. You should only call this function\n * if you expect the user of your app to not return to a Map view at any point\n * in your application.\n *\n * @function clearPrewarmedResources\n * @example\n * mapboxgl.clearPrewarmedResources();\n */\n clearPrewarmedResources,\n\n /**\n * Gets and sets the map's [access token](https://www.mapbox.com/help/define-access-token/).\n *\n * @var {string} accessToken\n * @returns {string} The currently set access token.\n * @example\n * mapboxgl.accessToken = myAccessToken;\n * @see [Example: Display a map](https://www.mapbox.com/mapbox-gl-js/example/simple-map/)\n */\n get accessToken(): ?string {\n return config.ACCESS_TOKEN;\n },\n\n set accessToken(token: string) {\n config.ACCESS_TOKEN = token;\n },\n\n /**\n * Gets and sets the map's default API URL for requesting tiles, styles, sprites, and glyphs.\n *\n * @var {string} baseApiUrl\n * @returns {string} The current base API URL.\n * @example\n * mapboxgl.baseApiUrl = 'https://api.mapbox.com';\n */\n get baseApiUrl(): ?string {\n return config.API_URL;\n },\n\n set baseApiUrl(url: string) {\n config.API_URL = url;\n },\n\n /**\n * Gets and sets the number of web workers instantiated on a page with Mapbox GL JS maps.\n * By default, it is set to 2.\n * Make sure to set this property before creating any map instances for it to have effect.\n *\n * @var {string} workerCount\n * @returns {number} Number of workers currently configured.\n * @example\n * mapboxgl.workerCount = 4;\n */\n get workerCount(): number {\n return WorkerPool.workerCount;\n },\n\n set workerCount(count: number) {\n WorkerPool.workerCount = count;\n },\n\n /**\n * Gets and sets the maximum number of images (raster tiles, sprites, icons) to load in parallel.\n * 16 by default. There is no maximum value, but the number of images affects performance in raster-heavy maps.\n *\n * @var {string} maxParallelImageRequests\n * @returns {number} Number of parallel requests currently configured.\n * @example\n * mapboxgl.maxParallelImageRequests = 10;\n */\n get maxParallelImageRequests(): number {\n return config.MAX_PARALLEL_IMAGE_REQUESTS;\n },\n\n set maxParallelImageRequests(numRequests: number) {\n config.MAX_PARALLEL_IMAGE_REQUESTS = numRequests;\n },\n\n /**\n * Clears browser storage used by this library. Using this method flushes the Mapbox tile\n * cache that is managed by this library. Tiles may still be cached by the browser\n * in some cases.\n *\n * This API is supported on browsers where the [`Cache` API](https://developer.mozilla.org/en-US/docs/Web/API/Cache)\n * is supported and enabled. This includes all major browsers when pages are served over\n * `https://`, except Internet Explorer and Edge Mobile.\n *\n * When called in unsupported browsers or environments (private or incognito mode), the\n * callback will be called with an error argument.\n *\n * @function clearStorage\n * @param {Function} callback Called with an error argument if there is an error.\n * @example\n * mapboxgl.clearStorage();\n */\n clearStorage(callback?: (err: ?Error) => void) {\n clearTileCache(callback);\n },\n /**\n * Provides an interface for loading mapbox-gl's WebWorker bundle from a self-hosted URL.\n * This needs to be set only once, and before any call to `new mapboxgl.Map(..)` takes place.\n * This is useful if your site needs to operate in a strict CSP (Content Security Policy) environment\n * wherein you are not allowed to load JavaScript code from a [`Blob` URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL), which is default behavior.\n *\n * See our documentation on [CSP Directives](https://docs.mapbox.com/mapbox-gl-js/api/#csp-directives) for more details.\n *\n * @var {string} workerUrl\n * @returns {string} A URL hosting a JavaScript bundle for mapbox-gl's WebWorker.\n * @example\n * \n * \n */\n workerUrl: '',\n\n /**\n * Provides an interface for external module bundlers such as Webpack or Rollup to package\n * mapbox-gl's WebWorker into a separate class and integrate it with the library.\n *\n * Takes precedence over `mapboxgl.workerUrl`.\n *\n * @var {Object} workerClass\n * @returns {Object | null} A class that implements the `Worker` interface.\n * @example\n * import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp.js';\n * import MapboxGLWorker from 'mapbox-gl/dist/mapbox-gl-csp-worker.js';\n *\n * mapboxgl.workerClass = MapboxGLWorker;\n */\n workerClass: null,\n\n /**\n * Sets the time used by Mapbox GL JS internally for all animations. Useful for generating videos from Mapbox GL JS.\n *\n * @var {number} time\n */\n setNow: browser.setNow,\n\n /**\n * Restores the internal animation timing to follow regular computer time (`performance.now()`).\n */\n restoreNow: browser.restoreNow\n};\n\n//This gets automatically stripped out in production builds.\nDebug.extend(exported, {isSafari, getPerformanceMetrics: PerformanceUtils.getPerformanceMetrics, getPerformanceMetricsAsync: WorkerPerformanceUtils.getPerformanceMetricsAsync});\n\n/**\n * Gets the version of Mapbox GL JS in use as specified in `package.json`,\n * `CHANGELOG.md`, and the GitHub release.\n *\n * @var {string} version\n * @example\n * console.log(`Mapbox GL JS v${mapboxgl.version}`);\n */\n\n/**\n * Test whether the browser [supports Mapbox GL JS](https://www.mapbox.com/help/mapbox-browser-support/#mapbox-gl-js).\n *\n * @function supported\n * @param {Object} [options]\n * @param {boolean} [options.failIfMajorPerformanceCaveat=false] If `true`,\n * the function will return `false` if the performance of Mapbox GL JS would\n * be dramatically worse than expected (for example, a software WebGL renderer\n * would be used).\n * @return {boolean}\n * @example\n * // Show an alert if the browser does not support Mapbox GL\n * if (!mapboxgl.supported()) {\n * alert('Your browser does not support Mapbox GL');\n * }\n * @see [Example: Check for browser support](https://www.mapbox.com/mapbox-gl-js/example/check-for-support/)\n */\n\n/**\n * Sets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text).\n * Necessary for supporting the Arabic and Hebrew languages, which are written right-to-left. Mapbox Studio loads this plugin by default.\n *\n * @function setRTLTextPlugin\n * @param {string} pluginURL URL pointing to the Mapbox RTL text plugin source.\n * @param {Function} callback Called with an error argument if there is an error, or no arguments if the plugin loads successfully.\n * @param {boolean} lazy If set to `true`, MapboxGL will defer loading the plugin until right-to-left text is encountered, and\n * right-to-left text will be rendered only after the plugin finishes loading.\n * @example\n * mapboxgl.setRTLTextPlugin('https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.0/mapbox-gl-rtl-text.js');\n * @see [Example: Add support for right-to-left scripts](https://www.mapbox.com/mapbox-gl-js/example/mapbox-gl-rtl-text/)\n */\n\n/**\n * Gets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text) status.\n * The status can be `unavailable` (not requested or removed), `loading`, `loaded`, or `error`.\n * If the status is `loaded` and the plugin is requested again, an error will be thrown.\n *\n * @function getRTLTextPluginStatus\n * @example\n * const pluginStatus = mapboxgl.getRTLTextPluginStatus();\n */\n\nexport default exported;\n\n// canary assert: used to confirm that asserts have been removed from production build\nassert(true, 'canary assert');\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\n\nimport {bindAll, warnOnce} from '../../util/util.js';\nimport window from '../../util/window.js';\n\nimport type Map from '../map.js';\n\ntype Options = {\n container?: HTMLElement\n};\n\n/**\n * A `FullscreenControl` control contains a button for toggling the map in and out of fullscreen mode. See the `requestFullScreen` [compatibility table](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#browser_compatibility) for supported browsers.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {HTMLElement} [options.container] `container` is the [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements) which should be made full screen. By default, the map container element will be made full screen.\n *\n * @example\n * map.addControl(new mapboxgl.FullscreenControl({container: document.querySelector('body')}));\n * @see [Example: View a fullscreen map](https://www.mapbox.com/mapbox-gl-js/example/fullscreen/)\n */\n\nclass FullscreenControl {\n _map: Map;\n _controlContainer: HTMLElement;\n _fullscreen: boolean;\n _fullscreenchange: string;\n _fullscreenButton: HTMLElement;\n _container: HTMLElement;\n\n constructor(options: Options) {\n this._fullscreen = false;\n if (options && options.container) {\n if (options.container instanceof window.HTMLElement) {\n this._container = options.container;\n } else {\n warnOnce('Full screen control \\'container\\' must be a DOM element.');\n }\n }\n bindAll([\n '_onClickFullscreen',\n '_changeIcon'\n ], this);\n if ('onfullscreenchange' in window.document) {\n this._fullscreenchange = 'fullscreenchange';\n } else if ('onwebkitfullscreenchange' in window.document) {\n this._fullscreenchange = 'webkitfullscreenchange';\n }\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n if (!this._container) this._container = this._map.getContainer();\n this._controlContainer = DOM.create('div', `mapboxgl-ctrl mapboxgl-ctrl-group`);\n if (this._checkFullscreenSupport()) {\n this._setupUI();\n } else {\n this._controlContainer.style.display = 'none';\n warnOnce('This device does not support fullscreen mode.');\n }\n return this._controlContainer;\n }\n\n onRemove() {\n this._controlContainer.remove();\n this._map = (null: any);\n // $FlowFixMe[method-unbinding]\n window.document.removeEventListener(this._fullscreenchange, this._changeIcon);\n }\n\n _checkFullscreenSupport(): boolean {\n return !!(\n window.document.fullscreenEnabled ||\n (window.document: any).webkitFullscreenEnabled\n );\n }\n\n _setupUI() {\n const button = this._fullscreenButton = DOM.create('button', (`mapboxgl-ctrl-fullscreen`), this._controlContainer);\n DOM.create('span', `mapboxgl-ctrl-icon`, button).setAttribute('aria-hidden', 'true');\n button.type = 'button';\n this._updateTitle();\n // $FlowFixMe[method-unbinding]\n this._fullscreenButton.addEventListener('click', this._onClickFullscreen);\n // $FlowFixMe[method-unbinding]\n window.document.addEventListener(this._fullscreenchange, this._changeIcon);\n }\n\n _updateTitle() {\n const title = this._getTitle();\n this._fullscreenButton.setAttribute(\"aria-label\", title);\n if (this._fullscreenButton.firstElementChild) this._fullscreenButton.firstElementChild.setAttribute('title', title);\n }\n\n _getTitle(): string {\n return this._map._getUIString(this._isFullscreen() ? 'FullscreenControl.Exit' : 'FullscreenControl.Enter');\n }\n\n _isFullscreen(): boolean {\n return this._fullscreen;\n }\n\n _changeIcon() {\n const fullscreenElement =\n window.document.fullscreenElement ||\n (window.document: any).webkitFullscreenElement;\n\n if ((fullscreenElement === this._container) !== this._fullscreen) {\n this._fullscreen = !this._fullscreen;\n this._fullscreenButton.classList.toggle(`mapboxgl-ctrl-shrink`);\n this._fullscreenButton.classList.toggle(`mapboxgl-ctrl-fullscreen`);\n this._updateTitle();\n }\n }\n\n _onClickFullscreen() {\n if (this._isFullscreen()) {\n if (window.document.exitFullscreen) {\n (window.document: any).exitFullscreen();\n } else if (window.document.webkitCancelFullScreen) {\n (window.document: any).webkitCancelFullScreen();\n }\n // $FlowFixMe[method-unbinding]\n } else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n } else if ((this._container: any).webkitRequestFullscreen) {\n (this._container: any).webkitRequestFullscreen();\n }\n }\n}\n\nexport default FullscreenControl;\n","//\n// Our custom intro provides a specialized \"define()\" function, called by the\n// AMD modules below, that sets up the worker blob URL and then executes the\n// main module, storing its exported value as 'mapboxgl'\n\n// The three \"chunks\" imported here are produced by a first Rollup pass,\n// which outputs them as AMD modules.\n\n// Shared dependencies, i.e.:\n/*\ndefine(['exports'], function (exports) {\n // Code for all common dependencies\n // Each module's exports are attached attached to 'exports' (with\n // names rewritten to avoid collisions, etc.)\n})\n*/\nimport './build/mapboxgl/shared';\n\n// Worker and its unique dependencies, i.e.:\n/*\ndefine(['./shared.js'], function (__shared__js) {\n // Code for worker script and its unique dependencies.\n // Expects the output of 'shared' module to be passed in as an argument,\n // since all references to common deps look like, e.g.,\n // __shared__js.shapeText().\n});\n*/\n// When this wrapper function is passed to our custom define() above,\n// it gets stringified, together with the shared wrapper (using\n// Function.toString()), and the resulting string of code is made into a\n// Blob URL that gets used by the main module to create the web workers.\nimport './build/mapboxgl/worker';\n\n// Main module and its unique dependencies\n/*\ndefine(['./shared.js'], function (__shared__js) {\n // Code for main GL JS module and its unique dependencies.\n // Expects the output of 'shared' module to be passed in as an argument,\n // since all references to common deps look like, e.g.,\n // __shared__js.shapeText().\n //\n // Returns the actual mapboxgl (i.e. src/index.js)\n});\n*/\nimport './build/mapboxgl/index';\n\nexport default mapboxgl;\n","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '
'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n global.numeral = factory();\n }\n}(this, function () {\n /************************************\n Variables\n ************************************/\n\n var numeral,\n _,\n VERSION = '2.0.6',\n formats = {},\n locales = {},\n defaults = {\n currentLocale: 'en',\n zeroFormat: null,\n nullFormat: null,\n defaultFormat: '0,0',\n scalePercentBy100: true\n },\n options = {\n currentLocale: defaults.currentLocale,\n zeroFormat: defaults.zeroFormat,\n nullFormat: defaults.nullFormat,\n defaultFormat: defaults.defaultFormat,\n scalePercentBy100: defaults.scalePercentBy100\n };\n\n\n /************************************\n Constructors\n ************************************/\n\n // Numeral prototype object\n function Numeral(input, number) {\n this._input = input;\n\n this._value = number;\n }\n\n numeral = function(input) {\n var value,\n kind,\n unformatFunction,\n regexp;\n\n if (numeral.isNumeral(input)) {\n value = input.value();\n } else if (input === 0 || typeof input === 'undefined') {\n value = 0;\n } else if (input === null || _.isNaN(input)) {\n value = null;\n } else if (typeof input === 'string') {\n if (options.zeroFormat && input === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n for (kind in formats) {\n regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n if (regexp && input.match(regexp)) {\n unformatFunction = formats[kind].unformat;\n\n break;\n }\n }\n\n unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n value = unformatFunction(input);\n }\n } else {\n value = Number(input)|| null;\n }\n\n return new Numeral(input, value);\n };\n\n // version number\n numeral.version = VERSION;\n\n // compare numeral object\n numeral.isNumeral = function(obj) {\n return obj instanceof Numeral;\n };\n\n // helper functions\n numeral._ = _ = {\n // formats numbers separators, decimals places, signs, abbreviations\n numberToFormat: function(value, format, roundingFunction) {\n var locale = locales[numeral.options.currentLocale],\n negP = false,\n optDec = false,\n leadingCount = 0,\n abbr = '',\n trillion = 1000000000000,\n billion = 1000000000,\n million = 1000000,\n thousand = 1000,\n decimal = '',\n neg = false,\n abbrForce, // force abbreviation\n abs,\n min,\n max,\n power,\n int,\n precision,\n signed,\n thousands,\n output;\n\n // make sure we never format a null value\n value = value || 0;\n\n abs = Math.abs(value);\n\n // see if we should use parentheses for negative number or if we should prefix with a sign\n // if both are present we default to parentheses\n if (numeral._.includes(format, '(')) {\n negP = true;\n format = format.replace(/[\\(|\\)]/g, '');\n } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n format = format.replace(/[\\+|\\-]/g, '');\n }\n\n // see if abbreviation is wanted\n if (numeral._.includes(format, 'a')) {\n abbrForce = format.match(/a(k|m|b|t)?/);\n\n abbrForce = abbrForce ? abbrForce[1] : false;\n\n // check for space before abbreviation\n if (numeral._.includes(format, ' a')) {\n abbr = ' ';\n }\n\n format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n if (abs >= trillion && !abbrForce || abbrForce === 't') {\n // trillion\n abbr += locale.abbreviations.trillion;\n value = value / trillion;\n } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n // billion\n abbr += locale.abbreviations.billion;\n value = value / billion;\n } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n // million\n abbr += locale.abbreviations.million;\n value = value / million;\n } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n // thousand\n abbr += locale.abbreviations.thousand;\n value = value / thousand;\n }\n }\n\n // check for optional decimals\n if (numeral._.includes(format, '[.]')) {\n optDec = true;\n format = format.replace('[.]', '.');\n }\n\n // break number and format\n int = value.toString().split('.')[0];\n precision = format.split('.')[1];\n thousands = format.indexOf(',');\n leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n if (precision) {\n if (numeral._.includes(precision, '[')) {\n precision = precision.replace(']', '');\n precision = precision.split('[');\n decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n } else {\n decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n }\n\n int = decimal.split('.')[0];\n\n if (numeral._.includes(decimal, '.')) {\n decimal = locale.delimiters.decimal + decimal.split('.')[1];\n } else {\n decimal = '';\n }\n\n if (optDec && Number(decimal.slice(1)) === 0) {\n decimal = '';\n }\n } else {\n int = numeral._.toFixed(value, 0, roundingFunction);\n }\n\n // check abbreviation again after rounding\n if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n int = String(Number(int) / 1000);\n\n switch (abbr) {\n case locale.abbreviations.thousand:\n abbr = locale.abbreviations.million;\n break;\n case locale.abbreviations.million:\n abbr = locale.abbreviations.billion;\n break;\n case locale.abbreviations.billion:\n abbr = locale.abbreviations.trillion;\n break;\n }\n }\n\n\n // format number\n if (numeral._.includes(int, '-')) {\n int = int.slice(1);\n neg = true;\n }\n\n if (int.length < leadingCount) {\n for (var i = leadingCount - int.length; i > 0; i--) {\n int = '0' + int;\n }\n }\n\n if (thousands > -1) {\n int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n }\n\n if (format.indexOf('.') === 0) {\n int = '';\n }\n\n output = int + decimal + (abbr ? abbr : '');\n\n if (negP) {\n output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n } else {\n if (signed >= 0) {\n output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n } else if (neg) {\n output = '-' + output;\n }\n }\n\n return output;\n },\n // unformats numbers separators, decimals places, signs, abbreviations\n stringToNumber: function(string) {\n var locale = locales[options.currentLocale],\n stringOriginal = string,\n abbreviations = {\n thousand: 3,\n million: 6,\n billion: 9,\n trillion: 12\n },\n abbreviation,\n value,\n i,\n regexp;\n\n if (options.zeroFormat && string === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n value = 1;\n\n if (locale.delimiters.decimal !== '.') {\n string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n }\n\n for (abbreviation in abbreviations) {\n regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n if (stringOriginal.match(regexp)) {\n value *= Math.pow(10, abbreviations[abbreviation]);\n break;\n }\n }\n\n // check for negative number\n value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n // remove non numbers\n string = string.replace(/[^0-9\\.]+/g, '');\n\n value *= Number(string);\n }\n\n return value;\n },\n isNaN: function(value) {\n return typeof value === 'number' && isNaN(value);\n },\n includes: function(string, search) {\n return string.indexOf(search) !== -1;\n },\n insert: function(string, subString, start) {\n return string.slice(0, start) + subString + string.slice(start);\n },\n reduce: function(array, callback /*, initialValue*/) {\n if (this === null) {\n throw new TypeError('Array.prototype.reduce called on null or undefined');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n var t = Object(array),\n len = t.length >>> 0,\n k = 0,\n value;\n\n if (arguments.length === 3) {\n value = arguments[2];\n } else {\n while (k < len && !(k in t)) {\n k++;\n }\n\n if (k >= len) {\n throw new TypeError('Reduce of empty array with no initial value');\n }\n\n value = t[k++];\n }\n for (; k < len; k++) {\n if (k in t) {\n value = callback(value, t[k], k, t);\n }\n }\n return value;\n },\n /**\n * Computes the multiplier necessary to make x >= 1,\n * effectively eliminating miscalculations caused by\n * finite precision.\n */\n multiplier: function (x) {\n var parts = x.toString().split('.');\n\n return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n },\n /**\n * Given a variable number of arguments, returns the maximum\n * multiplier that must be used to normalize an operation involving\n * all of them.\n */\n correctionFactor: function () {\n var args = Array.prototype.slice.call(arguments);\n\n return args.reduce(function(accum, next) {\n var mn = _.multiplier(next);\n return accum > mn ? accum : mn;\n }, 1);\n },\n /**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n */\n toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n var splitValue = value.toString().split('.'),\n minDecimals = maxDecimals - (optionals || 0),\n boundedPrecision,\n optionalsRegExp,\n power,\n output;\n\n // Use the smallest precision value possible to avoid errors from floating point representation\n if (splitValue.length === 2) {\n boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n } else {\n boundedPrecision = minDecimals;\n }\n\n power = Math.pow(10, boundedPrecision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed():\n output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n if (optionals > maxDecimals - boundedPrecision) {\n optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n output = output.replace(optionalsRegExp, '');\n }\n\n return output;\n }\n };\n\n // avaliable options\n numeral.options = options;\n\n // avaliable formats\n numeral.formats = formats;\n\n // avaliable formats\n numeral.locales = locales;\n\n // This function sets the current locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n numeral.locale = function(key) {\n if (key) {\n options.currentLocale = key.toLowerCase();\n }\n\n return options.currentLocale;\n };\n\n // This function provides access to the loaded locale data. If\n // no arguments are passed in, it will simply return the current\n // global locale object.\n numeral.localeData = function(key) {\n if (!key) {\n return locales[options.currentLocale];\n }\n\n key = key.toLowerCase();\n\n if (!locales[key]) {\n throw new Error('Unknown locale : ' + key);\n }\n\n return locales[key];\n };\n\n numeral.reset = function() {\n for (var property in defaults) {\n options[property] = defaults[property];\n }\n };\n\n numeral.zeroFormat = function(format) {\n options.zeroFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.nullFormat = function (format) {\n options.nullFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.defaultFormat = function(format) {\n options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n };\n\n numeral.register = function(type, name, format) {\n name = name.toLowerCase();\n\n if (this[type + 's'][name]) {\n throw new TypeError(name + ' ' + type + ' already registered.');\n }\n\n this[type + 's'][name] = format;\n\n return format;\n };\n\n\n numeral.validate = function(val, culture) {\n var _decimalSep,\n _thousandSep,\n _currSymbol,\n _valArray,\n _abbrObj,\n _thousandRegEx,\n localeData,\n temp;\n\n //coerce val to string\n if (typeof val !== 'string') {\n val += '';\n\n if (console.warn) {\n console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n }\n }\n\n //trim whitespaces from either sides\n val = val.trim();\n\n //if val is just digits return true\n if (!!val.match(/^\\d+$/)) {\n return true;\n }\n\n //if val is empty return false\n if (val === '') {\n return false;\n }\n\n //get the decimal and thousands separator from numeral.localeData\n try {\n //check if the culture is understood by numeral. if not, default it to current locale\n localeData = numeral.localeData(culture);\n } catch (e) {\n localeData = numeral.localeData(numeral.locale());\n }\n\n //setup the delimiters and currency symbol based on culture/locale\n _currSymbol = localeData.currency.symbol;\n _abbrObj = localeData.abbreviations;\n _decimalSep = localeData.delimiters.decimal;\n if (localeData.delimiters.thousands === '.') {\n _thousandSep = '\\\\.';\n } else {\n _thousandSep = localeData.delimiters.thousands;\n }\n\n // validating currency symbol\n temp = val.match(/^[^\\d]+/);\n if (temp !== null) {\n val = val.substr(1);\n if (temp[0] !== _currSymbol) {\n return false;\n }\n }\n\n //validating abbreviation symbol\n temp = val.match(/[^\\d]+$/);\n if (temp !== null) {\n val = val.slice(0, -1);\n if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n return false;\n }\n }\n\n _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n if (!val.match(/[^\\d.,]/g)) {\n _valArray = val.split(_decimalSep);\n if (_valArray.length > 2) {\n return false;\n } else {\n if (_valArray.length < 2) {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n } else {\n if (_valArray[0].length === 1) {\n return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n } else {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n }\n }\n }\n }\n\n return false;\n };\n\n\n /************************************\n Numeral Prototype\n ************************************/\n\n numeral.fn = Numeral.prototype = {\n clone: function() {\n return numeral(this);\n },\n format: function(inputString, roundingFunction) {\n var value = this._value,\n format = inputString || options.defaultFormat,\n kind,\n output,\n formatFunction;\n\n // make sure we have a roundingFunction\n roundingFunction = roundingFunction || Math.round;\n\n // format based on value\n if (value === 0 && options.zeroFormat !== null) {\n output = options.zeroFormat;\n } else if (value === null && options.nullFormat !== null) {\n output = options.nullFormat;\n } else {\n for (kind in formats) {\n if (format.match(formats[kind].regexps.format)) {\n formatFunction = formats[kind].format;\n\n break;\n }\n }\n\n formatFunction = formatFunction || numeral._.numberToFormat;\n\n output = formatFunction(value, format, roundingFunction);\n }\n\n return output;\n },\n value: function() {\n return this._value;\n },\n input: function() {\n return this._input;\n },\n set: function(value) {\n this._value = Number(value);\n\n return this;\n },\n add: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum + Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n return this;\n },\n subtract: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum - Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n return this;\n },\n multiply: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback, 1);\n\n return this;\n },\n divide: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback);\n\n return this;\n },\n difference: function(value) {\n return Math.abs(numeral(this._value).subtract(value).value());\n }\n };\n\n /************************************\n Default Locale && Format\n ************************************/\n\n numeral.register('locale', 'en', {\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function(number) {\n var b = number % 10;\n return (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n },\n currency: {\n symbol: '$'\n }\n });\n\n \n\n(function() {\n numeral.register('format', 'bps', {\n regexps: {\n format: /(BPS)/,\n unformat: /(BPS)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n output;\n\n value = value * 10000;\n\n // check for space before BPS\n format = format.replace(/\\s?BPS/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + 'BPS');\n\n output = output.join('');\n } else {\n output = output + space + 'BPS';\n }\n\n return output;\n },\n unformat: function(string) {\n return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n }\n });\n})();\n\n\n(function() {\n var decimal = {\n base: 1000,\n suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n },\n binary = {\n base: 1024,\n suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n };\n\n var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n return decimal.suffixes.indexOf(item) < 0;\n }));\n var unformatRegex = allSuffixes.join('|');\n // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n numeral.register('format', 'bytes', {\n regexps: {\n format: /([0\\s]i?b)/,\n unformat: new RegExp(unformatRegex)\n },\n format: function(value, format, roundingFunction) {\n var output,\n bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n power,\n min,\n max;\n\n // check for space before\n format = format.replace(/\\s?i?b/, '');\n\n for (power = 0; power <= bytes.suffixes.length; power++) {\n min = Math.pow(bytes.base, power);\n max = Math.pow(bytes.base, power + 1);\n\n if (value === null || value === 0 || value >= min && value < max) {\n suffix += bytes.suffixes[power];\n\n if (min > 0) {\n value = value / min;\n }\n\n break;\n }\n }\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + suffix;\n },\n unformat: function(string) {\n var value = numeral._.stringToNumber(string),\n power,\n bytesMultiplier;\n\n if (value) {\n for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n if (numeral._.includes(string, decimal.suffixes[power])) {\n bytesMultiplier = Math.pow(decimal.base, power);\n\n break;\n }\n\n if (numeral._.includes(string, binary.suffixes[power])) {\n bytesMultiplier = Math.pow(binary.base, power);\n\n break;\n }\n }\n\n value *= (bytesMultiplier || 1);\n }\n\n return value;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'currency', {\n regexps: {\n format: /(\\$)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n symbols = {\n before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n },\n output,\n symbol,\n i;\n\n // strip format of spaces and $\n format = format.replace(/\\s?\\$\\s?/, '');\n\n // format the number\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n // update the before and after based on value\n if (value >= 0) {\n symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n symbols.before = '-' + symbols.before;\n }\n\n // loop through each before symbol\n for (i = 0; i < symbols.before.length; i++) {\n symbol = symbols.before[i];\n\n switch (symbol) {\n case '$':\n output = numeral._.insert(output, locale.currency.symbol, i);\n break;\n case ' ':\n output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n break;\n }\n }\n\n // loop through each after symbol\n for (i = symbols.after.length - 1; i >= 0; i--) {\n symbol = symbols.after[i];\n\n switch (symbol) {\n case '$':\n output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n break;\n case ' ':\n output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n break;\n }\n }\n\n\n return output;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'exponential', {\n regexps: {\n format: /(e\\+|e-)/,\n unformat: /(e\\+|e-)/\n },\n format: function(value, format, roundingFunction) {\n var output,\n exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n parts = exponential.split('e');\n\n format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n return output + 'e' + parts[1];\n },\n unformat: function(string) {\n var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n value = Number(parts[0]),\n power = Number(parts[1]);\n\n power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n function cback(accum, curr, currI, O) {\n var corrFactor = numeral._.correctionFactor(accum, curr),\n num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n return num;\n }\n\n return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'ordinal', {\n regexps: {\n format: /(o)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n output,\n ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n // check for space before\n format = format.replace(/\\s?o/, '');\n\n ordinal += locale.ordinal(value);\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + ordinal;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'percentage', {\n regexps: {\n format: /(%)/,\n unformat: /(%)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' %') ? ' ' : '',\n output;\n\n if (numeral.options.scalePercentBy100) {\n value = value * 100;\n }\n\n // check for space before %\n format = format.replace(/\\s?\\%/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + '%');\n\n output = output.join('');\n } else {\n output = output + space + '%';\n }\n\n return output;\n },\n unformat: function(string) {\n var number = numeral._.stringToNumber(string);\n if (numeral.options.scalePercentBy100) {\n return number * 0.01;\n }\n return number;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'time', {\n regexps: {\n format: /(:)/,\n unformat: /(:)/\n },\n format: function(value, format, roundingFunction) {\n var hours = Math.floor(value / 60 / 60),\n minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n },\n unformat: function(string) {\n var timeArray = string.split(':'),\n seconds = 0;\n\n // turn hours and minutes into seconds and add them all up\n if (timeArray.length === 3) {\n // hours\n seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n // minutes\n seconds = seconds + (Number(timeArray[1]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[2]);\n } else if (timeArray.length === 2) {\n // minutes\n seconds = seconds + (Number(timeArray[0]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[1]);\n }\n return Number(seconds);\n }\n });\n})();\n\nreturn numeral;\n}));\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n var _a;\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this;\n\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.default=Charts;var _react=_interopRequireWildcard(require(\"react\")),_apexcharts=_interopRequireDefault(require(\"apexcharts\")),_propTypes=_interopRequireDefault(require(\"prop-types\")),_excluded=[\"type\",\"width\",\"height\",\"series\",\"options\"];function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _getRequireWildcardCache(e){var t,r;return\"function\"!=typeof WeakMap?null:(t=new WeakMap,r=new WeakMap,(_getRequireWildcardCache=function(e){return e?r:t})(e))}function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||\"object\"!=_typeof(e)&&\"function\"!=typeof e)return{default:e};t=_getRequireWildcardCache(t);if(t&&t.has(e))return t.get(e);var r,n,o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e)\"default\"!==r&&{}.hasOwnProperty.call(e,r)&&((n=i?Object.getOwnPropertyDescriptor(e,r):null)&&(n.get||n.set)?Object.defineProperty(o,r,n):o[r]=e[r]);return o.default=e,t&&t.set(e,o),o}function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;tb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","export const TAG_PROPERTIES = {\n CHARSET: 'charset',\n CSS_TEXT: 'cssText',\n HREF: 'href',\n HTTPEQUIV: 'http-equiv',\n INNER_HTML: 'innerHTML',\n ITEM_PROP: 'itemprop',\n NAME: 'name',\n PROPERTY: 'property',\n REL: 'rel',\n SRC: 'src',\n};\n\nexport const ATTRIBUTE_NAMES = {\n BODY: 'bodyAttributes',\n HTML: 'htmlAttributes',\n TITLE: 'titleAttributes',\n};\n\nexport const TAG_NAMES = {\n BASE: 'base',\n BODY: 'body',\n HEAD: 'head',\n HTML: 'html',\n LINK: 'link',\n META: 'meta',\n NOSCRIPT: 'noscript',\n SCRIPT: 'script',\n STYLE: 'style',\n TITLE: 'title',\n FRAGMENT: 'Symbol(react.fragment)',\n};\n\nexport const SEO_PRIORITY_TAGS = {\n link: { rel: ['amphtml', 'canonical', 'alternate'] },\n script: { type: ['application/ld+json'] },\n meta: {\n charset: '',\n name: ['robots', 'description'],\n property: [\n 'og:type',\n 'og:title',\n 'og:url',\n 'og:image',\n 'og:image:alt',\n 'og:description',\n 'twitter:url',\n 'twitter:title',\n 'twitter:description',\n 'twitter:image',\n 'twitter:image:alt',\n 'twitter:card',\n 'twitter:site',\n ],\n },\n};\n\nexport const VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(name => TAG_NAMES[name]);\n\nexport const REACT_TAG_MAP = {\n accesskey: 'accessKey',\n charset: 'charSet',\n class: 'className',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n 'http-equiv': 'httpEquiv',\n itemprop: 'itemProp',\n tabindex: 'tabIndex',\n};\n\nexport const HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nexport const HELMET_ATTRIBUTE = 'data-rh';\n","import { TAG_NAMES, TAG_PROPERTIES, ATTRIBUTE_NAMES } from './constants';\n\nconst HELMET_PROPS = {\n DEFAULT_TITLE: 'defaultTitle',\n DEFER: 'defer',\n ENCODE_SPECIAL_CHARACTERS: 'encodeSpecialCharacters',\n ON_CHANGE_CLIENT_STATE: 'onChangeClientState',\n TITLE_TEMPLATE: 'titleTemplate',\n PRIORITIZE_SEO_TAGS: 'prioritizeSeoTags',\n};\n\nconst getInnermostProperty = (propsList, property) => {\n for (let i = propsList.length - 1; i >= 0; i -= 1) {\n const props = propsList[i];\n\n if (Object.prototype.hasOwnProperty.call(props, property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nconst getTitleFromPropsList = propsList => {\n let innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n const innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (Array.isArray(innermostTitle)) {\n innermostTitle = innermostTitle.join('');\n }\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, () => innermostTitle);\n }\n\n const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nconst getOnChangeClientState = propsList =>\n getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || (() => {});\n\nconst getAttributesFromPropsList = (tagType, propsList) =>\n propsList\n .filter(props => typeof props[tagType] !== 'undefined')\n .map(props => props[tagType])\n .reduce((tagAttrs, current) => ({ ...tagAttrs, ...current }), {});\n\nconst getBaseTagFromPropsList = (primaryAttributes, propsList) =>\n propsList\n .filter(props => typeof props[TAG_NAMES.BASE] !== 'undefined')\n .map(props => props[TAG_NAMES.BASE])\n .reverse()\n .reduce((innermostBaseTag, tag) => {\n if (!innermostBaseTag.length) {\n const keys = Object.keys(tag);\n\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n tag[lowerCaseAttributeKey]\n ) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n\n// eslint-disable-next-line no-console\nconst warn = msg => console && typeof console.warn === 'function' && console.warn(msg);\n\nconst getTagsFromPropsList = (tagName, primaryAttributes, propsList) => {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n const approvedSeenTags = {};\n\n return propsList\n .filter(props => {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== 'undefined') {\n warn(\n `Helmet: ${tagName} should be of type \"Array\". Instead found type \"${typeof props[\n tagName\n ]}\"`\n );\n }\n return false;\n })\n .map(props => props[tagName])\n .reverse()\n .reduce((approvedTags, instanceTags) => {\n const instanceSeenTags = {};\n\n instanceTags\n .filter(tag => {\n let primaryAttributeKey;\n const keys = Object.keys(tag);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n !(\n primaryAttributeKey === TAG_PROPERTIES.REL &&\n tag[primaryAttributeKey].toLowerCase() === 'canonical'\n ) &&\n !(\n lowerCaseAttributeKey === TAG_PROPERTIES.REL &&\n tag[lowerCaseAttributeKey].toLowerCase() === 'stylesheet'\n )\n ) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (\n primaryAttributes.indexOf(attributeKey) !== -1 &&\n (attributeKey === TAG_PROPERTIES.INNER_HTML ||\n attributeKey === TAG_PROPERTIES.CSS_TEXT ||\n attributeKey === TAG_PROPERTIES.ITEM_PROP)\n ) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n const value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n })\n .reverse()\n .forEach(tag => approvedTags.push(tag));\n\n // Update seen tags with tags from this instance\n const keys = Object.keys(instanceSeenTags);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const tagUnion = {\n ...approvedSeenTags[attributeKey],\n ...instanceSeenTags[attributeKey],\n };\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, [])\n .reverse();\n};\n\nconst getAnyTrueFromPropsList = (propsList, checkedTag) => {\n if (Array.isArray(propsList) && propsList.length) {\n for (let index = 0; index < propsList.length; index += 1) {\n const prop = propsList[index];\n if (prop[checkedTag]) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst reducePropsToState = propsList => ({\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(\n TAG_NAMES.LINK,\n [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF],\n propsList\n ),\n metaTags: getTagsFromPropsList(\n TAG_NAMES.META,\n [\n TAG_PROPERTIES.NAME,\n TAG_PROPERTIES.CHARSET,\n TAG_PROPERTIES.HTTPEQUIV,\n TAG_PROPERTIES.PROPERTY,\n TAG_PROPERTIES.ITEM_PROP,\n ],\n propsList\n ),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(\n TAG_NAMES.SCRIPT,\n [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML],\n propsList\n ),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList),\n prioritizeSeoTags: getAnyTrueFromPropsList(propsList, HELMET_PROPS.PRIORITIZE_SEO_TAGS),\n});\n\nexport const flattenArray = possibleArray =>\n Array.isArray(possibleArray) ? possibleArray.join('') : possibleArray;\n\nexport { reducePropsToState };\n\nconst checkIfPropsMatch = (props, toMatch) => {\n const keys = Object.keys(props);\n for (let i = 0; i < keys.length; i += 1) {\n // e.g. if rel exists in the list of allowed props [amphtml, alternate, etc]\n if (toMatch[keys[i]] && toMatch[keys[i]].includes(props[keys[i]])) {\n return true;\n }\n }\n return false;\n};\n\nexport const prioritizer = (elementsList, propsToMatch) => {\n if (Array.isArray(elementsList)) {\n return elementsList.reduce(\n (acc, elementAttrs) => {\n if (checkIfPropsMatch(elementAttrs, propsToMatch)) {\n acc.priority.push(elementAttrs);\n } else {\n acc.default.push(elementAttrs);\n }\n return acc;\n },\n { priority: [], default: [] }\n );\n }\n return { default: elementsList };\n};\n\nexport const without = (obj, key) => {\n return {\n ...obj,\n [key]: undefined,\n };\n};\n","import React from 'react';\nimport {\n HELMET_ATTRIBUTE,\n TAG_NAMES,\n REACT_TAG_MAP,\n TAG_PROPERTIES,\n ATTRIBUTE_NAMES,\n SEO_PRIORITY_TAGS,\n} from './constants';\nimport { flattenArray, prioritizer } from './utils';\n\nconst SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nconst encodeSpecialCharacters = (str, encode = true) => {\n if (encode === false) {\n return String(str);\n }\n\n return String(str)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n};\n\nconst generateElementAttributesAsString = attributes =>\n Object.keys(attributes).reduce((str, key) => {\n const attr = typeof attributes[key] !== 'undefined' ? `${key}=\"${attributes[key]}\"` : `${key}`;\n return str ? `${str} ${attr}` : attr;\n }, '');\n\nconst generateTitleAsString = (type, title, attributes, encode) => {\n const attributeString = generateElementAttributesAsString(attributes);\n const flattenedTitle = flattenArray(title);\n return attributeString\n ? `<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeString}>${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}`\n : `<${type} ${HELMET_ATTRIBUTE}=\"true\">${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}`;\n};\n\nconst generateTagsAsString = (type, tags, encode) =>\n tags.reduce((str, tag) => {\n const attributeHtml = Object.keys(tag)\n .filter(\n attribute =>\n !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT)\n )\n .reduce((string, attribute) => {\n const attr =\n typeof tag[attribute] === 'undefined'\n ? attribute\n : `${attribute}=\"${encodeSpecialCharacters(tag[attribute], encode)}\"`;\n return string ? `${string} ${attr}` : attr;\n }, '');\n\n const tagContent = tag.innerHTML || tag.cssText || '';\n\n const isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return `${str}<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeHtml}${\n isSelfClosing ? `/>` : `>${tagContent}`\n }`;\n }, '');\n\nconst convertElementAttributesToReactProps = (attributes, initProps = {}) =>\n Object.keys(attributes).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n\nconst generateTitleAsReactComponent = (type, title, attributes) => {\n // assigning into an array to define toString function on it\n const initProps = {\n key: title,\n [HELMET_ATTRIBUTE]: true,\n };\n const props = convertElementAttributesToReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nconst generateTagsAsReactComponent = (type, tags) =>\n tags.map((tag, i) => {\n const mappedTag = {\n key: i,\n [HELMET_ATTRIBUTE]: true,\n };\n\n Object.keys(tag).forEach(attribute => {\n const mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (\n mappedAttribute === TAG_PROPERTIES.INNER_HTML ||\n mappedAttribute === TAG_PROPERTIES.CSS_TEXT\n ) {\n const content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n\nconst getMethodsForTag = (type, tags, encode) => {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: () =>\n generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode),\n toString: () => generateTitleAsString(type, tags.title, tags.titleAttributes, encode),\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: () => convertElementAttributesToReactProps(tags),\n toString: () => generateElementAttributesAsString(tags),\n };\n default:\n return {\n toComponent: () => generateTagsAsReactComponent(type, tags),\n toString: () => generateTagsAsString(type, tags, encode),\n };\n }\n};\n\nconst getPriorityMethods = ({ metaTags, linkTags, scriptTags, encode }) => {\n const meta = prioritizer(metaTags, SEO_PRIORITY_TAGS.meta);\n const link = prioritizer(linkTags, SEO_PRIORITY_TAGS.link);\n const script = prioritizer(scriptTags, SEO_PRIORITY_TAGS.script);\n\n // need to have toComponent() and toString()\n const priorityMethods = {\n toComponent: () => [\n ...generateTagsAsReactComponent(TAG_NAMES.META, meta.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.LINK, link.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.SCRIPT, script.priority),\n ],\n toString: () =>\n // generate all the tags as strings and concatenate them\n `${getMethodsForTag(TAG_NAMES.META, meta.priority, encode)} ${getMethodsForTag(\n TAG_NAMES.LINK,\n link.priority,\n encode\n )} ${getMethodsForTag(TAG_NAMES.SCRIPT, script.priority, encode)}`,\n };\n\n return {\n priorityMethods,\n metaTags: meta.default,\n linkTags: link.default,\n scriptTags: script.default,\n };\n};\n\nconst mapStateOnServer = props => {\n const {\n baseTag,\n bodyAttributes,\n encode,\n htmlAttributes,\n noscriptTags,\n styleTags,\n title = '',\n titleAttributes,\n prioritizeSeoTags,\n } = props;\n let { linkTags, metaTags, scriptTags } = props;\n let priorityMethods = {\n toComponent: () => {},\n toString: () => '',\n };\n if (prioritizeSeoTags) {\n ({ priorityMethods, linkTags, metaTags, scriptTags } = getPriorityMethods(props));\n }\n return {\n priority: priorityMethods,\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title, titleAttributes }, encode),\n };\n};\n\nexport default mapStateOnServer;\n","import mapStateOnServer from './server';\n\nconst instances = [];\n\nexport function clearInstances() {\n instances.length = 0;\n}\n\nexport default class HelmetData {\n instances = [];\n\n value = {\n setHelmet: serverState => {\n this.context.helmet = serverState;\n },\n helmetInstances: {\n get: () => (this.canUseDOM ? instances : this.instances),\n add: instance => {\n (this.canUseDOM ? instances : this.instances).push(instance);\n },\n remove: instance => {\n const index = (this.canUseDOM ? instances : this.instances).indexOf(instance);\n (this.canUseDOM ? instances : this.instances).splice(index, 1);\n },\n },\n };\n\n constructor(context, canUseDOM = typeof document !== 'undefined') {\n this.context = context;\n this.canUseDOM = canUseDOM;\n\n if (!canUseDOM) {\n context.helmet = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: '',\n titleAttributes: {},\n });\n }\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport HelmetData from './HelmetData';\n\nconst defaultValue = {};\n\nexport const Context = React.createContext(defaultValue);\n\nexport const providerShape = PropTypes.shape({\n setHelmet: PropTypes.func,\n helmetInstances: PropTypes.shape({\n get: PropTypes.func,\n add: PropTypes.func,\n remove: PropTypes.func,\n }),\n});\n\nconst canUseDOM = typeof document !== 'undefined';\n\nexport default class Provider extends Component {\n static canUseDOM = canUseDOM;\n\n static propTypes = {\n context: PropTypes.shape({\n helmet: PropTypes.shape(),\n }),\n children: PropTypes.node.isRequired,\n };\n\n static defaultProps = {\n context: {},\n };\n\n static displayName = 'HelmetProvider';\n\n constructor(props) {\n super(props);\n\n this.helmetData = new HelmetData(this.props.context, Provider.canUseDOM);\n }\n\n render() {\n return {this.props.children};\n }\n}\n","import { HELMET_ATTRIBUTE, TAG_NAMES, TAG_PROPERTIES } from './constants';\nimport { flattenArray } from './utils';\n\nconst updateTags = (type, tags) => {\n const headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n const tagNodes = headElement.querySelectorAll(`${type}[${HELMET_ATTRIBUTE}]`);\n const oldTags = [].slice.call(tagNodes);\n const newTags = [];\n let indexToDelete;\n\n if (tags && tags.length) {\n tags.forEach(tag => {\n const newElement = document.createElement(type);\n\n // eslint-disable-next-line\n for (const attribute in tag) {\n if (Object.prototype.hasOwnProperty.call(tag, attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n const value = typeof tag[attribute] === 'undefined' ? '' : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, 'true');\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (\n oldTags.some((existingTag, index) => {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })\n ) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(tag => tag.parentNode.removeChild(tag));\n newTags.forEach(tag => headElement.appendChild(tag));\n\n return {\n oldTags,\n newTags,\n };\n};\n\nconst updateAttributes = (tagName, attributes) => {\n const elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n const helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n const helmetAttributes = helmetAttributeString ? helmetAttributeString.split(',') : [];\n const attributesToRemove = [].concat(helmetAttributes);\n const attributeKeys = Object.keys(attributes);\n\n for (let i = 0; i < attributeKeys.length; i += 1) {\n const attribute = attributeKeys[i];\n const value = attributes[attribute] || '';\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n const indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (let i = attributesToRemove.length - 1; i >= 0; i -= 1) {\n elementTag.removeAttribute(attributesToRemove[i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(',')) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(','));\n }\n};\n\nconst updateTitle = (title, attributes) => {\n if (typeof title !== 'undefined' && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nconst commitTagChanges = (newState, cb) => {\n const {\n baseTag,\n bodyAttributes,\n htmlAttributes,\n linkTags,\n metaTags,\n noscriptTags,\n onChangeClientState,\n scriptTags,\n styleTags,\n title,\n titleAttributes,\n } = newState;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n const tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags),\n };\n\n const addedTags = {};\n const removedTags = {};\n\n Object.keys(tagUpdates).forEach(tagType => {\n const { newTags, oldTags } = tagUpdates[tagType];\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n if (cb) {\n cb();\n }\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\n// eslint-disable-next-line\nlet _helmetCallback = null;\n\nconst handleStateChangeOnClient = newState => {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(() => {\n commitTagChanges(newState, () => {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nexport default handleStateChangeOnClient;\n","import { Component } from 'react';\nimport shallowEqual from 'shallowequal';\nimport handleStateChangeOnClient from './client';\nimport mapStateOnServer from './server';\nimport { reducePropsToState } from './utils';\nimport Provider, { providerShape } from './Provider';\n\nexport default class Dispatcher extends Component {\n static propTypes = {\n context: providerShape.isRequired,\n };\n\n static displayName = 'HelmetDispatcher';\n\n rendered = false;\n\n shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n }\n\n componentDidUpdate() {\n this.emitChange();\n }\n\n componentWillUnmount() {\n const { helmetInstances } = this.props.context;\n helmetInstances.remove(this);\n this.emitChange();\n }\n\n emitChange() {\n const { helmetInstances, setHelmet } = this.props.context;\n let serverState = null;\n const state = reducePropsToState(\n helmetInstances.get().map(instance => {\n const props = { ...instance.props };\n delete props.context;\n return props;\n })\n );\n if (Provider.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n serverState = mapStateOnServer(state);\n }\n setHelmet(serverState);\n }\n\n // componentWillMount will be deprecated\n // for SSR, initialize on first render\n // constructor is also unsafe in StrictMode\n init() {\n if (this.rendered) {\n return;\n }\n\n this.rendered = true;\n\n const { helmetInstances } = this.props.context;\n helmetInstances.add(this);\n this.emitChange();\n }\n\n render() {\n this.init();\n\n return null;\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport fastCompare from 'react-fast-compare';\nimport invariant from 'invariant';\nimport { Context } from './Provider';\nimport HelmetData from './HelmetData';\nimport Dispatcher from './Dispatcher';\nimport { without } from './utils';\nimport { TAG_NAMES, VALID_TAG_NAMES, HTML_TAG_MAP } from './constants';\n\nexport { default as HelmetData } from './HelmetData';\nexport { default as HelmetProvider } from './Provider';\n\n/* eslint-disable class-methods-use-this */\nexport class Helmet extends Component {\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n * @param {Boolean} prioritizeSeoTags: false\n */\n /* eslint-disable react/forbid-prop-types, react/require-default-props */\n static propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string,\n prioritizeSeoTags: PropTypes.bool,\n helmetData: PropTypes.object,\n };\n /* eslint-enable react/prop-types, react/forbid-prop-types, react/require-default-props */\n\n static defaultProps = {\n defer: true,\n encodeSpecialCharacters: true,\n prioritizeSeoTags: false,\n };\n\n static displayName = 'Helmet';\n\n shouldComponentUpdate(nextProps) {\n return !fastCompare(without(this.props, 'helmetData'), without(nextProps, 'helmetData'));\n }\n\n mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren,\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren,\n };\n default:\n throw new Error(\n `<${child.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`\n );\n }\n }\n\n flattenArrayTypeChildren({ child, arrayTypeChildren, newChildProps, nestedChildren }) {\n return {\n ...arrayTypeChildren,\n [child.type]: [\n ...(arrayTypeChildren[child.type] || []),\n {\n ...newChildProps,\n ...this.mapNestedChildrenToProps(child, nestedChildren),\n },\n ],\n };\n }\n\n mapObjectTypeChildren({ child, newProps, newChildProps, nestedChildren }) {\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return {\n ...newProps,\n [child.type]: nestedChildren,\n titleAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.BODY:\n return {\n ...newProps,\n bodyAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.HTML:\n return {\n ...newProps,\n htmlAttributes: { ...newChildProps },\n };\n default:\n return {\n ...newProps,\n [child.type]: { ...newChildProps },\n };\n }\n }\n\n mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n let newFlattenedProps = { ...newProps };\n\n Object.keys(arrayTypeChildren).forEach(arrayChildName => {\n newFlattenedProps = {\n ...newFlattenedProps,\n [arrayChildName]: arrayTypeChildren[arrayChildName],\n };\n });\n\n return newFlattenedProps;\n }\n\n warnOnInvalidChildren(child, nestedChildren) {\n invariant(\n VALID_TAG_NAMES.some(name => child.type === name),\n typeof child.type === 'function'\n ? `You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.`\n : `Only elements types ${VALID_TAG_NAMES.join(\n ', '\n )} are allowed. Helmet does not support rendering <${\n child.type\n }> elements. Refer to our API for more information.`\n );\n\n invariant(\n !nestedChildren ||\n typeof nestedChildren === 'string' ||\n (Array.isArray(nestedChildren) &&\n !nestedChildren.some(nestedChild => typeof nestedChild !== 'string')),\n `Helmet expects a string as a child of <${child.type}>. Did you forget to wrap your children in braces? ( <${child.type}>{\\`\\`} ) Refer to our API for more information.`\n );\n\n return true;\n }\n\n mapChildrenToProps(children, newProps) {\n let arrayTypeChildren = {};\n\n React.Children.forEach(children, child => {\n if (!child || !child.props) {\n return;\n }\n\n const { children: nestedChildren, ...childProps } = child.props;\n // convert React props to HTML attributes\n const newChildProps = Object.keys(childProps).reduce((obj, key) => {\n obj[HTML_TAG_MAP[key] || key] = childProps[key];\n return obj;\n }, {});\n\n let { type } = child;\n if (typeof type === 'symbol') {\n type = type.toString();\n } else {\n this.warnOnInvalidChildren(child, nestedChildren);\n }\n\n switch (type) {\n case TAG_NAMES.FRAGMENT:\n newProps = this.mapChildrenToProps(nestedChildren, newProps);\n break;\n\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = this.flattenArrayTypeChildren({\n child,\n arrayTypeChildren,\n newChildProps,\n nestedChildren,\n });\n break;\n\n default:\n newProps = this.mapObjectTypeChildren({\n child,\n newProps,\n newChildProps,\n nestedChildren,\n });\n break;\n }\n });\n\n return this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n }\n\n render() {\n const { children, ...props } = this.props;\n let newProps = { ...props };\n let { helmetData } = props;\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n if (helmetData && !(helmetData instanceof HelmetData)) {\n helmetData = new HelmetData(helmetData.context, helmetData.instances);\n }\n\n return helmetData ? (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n ) : (\n \n {(\n context // eslint-disable-next-line react/jsx-props-no-spreading\n ) => }\n \n );\n }\n}\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","(()=>{var e={296:(e,t,r)=>{var o=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,s=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,l=\"object\"==typeof self&&self&&self.Object===Object&&self,a=s||l||Function(\"return this\")(),f=Object.prototype.toString,p=Math.max,y=Math.min,b=function(){return a.Date.now()};function d(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function h(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==f.call(e)}(e))return NaN;if(d(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=d(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(o,\"\");var r=i.test(e);return r||c.test(e)?u(e.slice(2),r?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var o,n,i,c,u,s,l=0,a=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var r=o,i=n;return o=n=void 0,l=t,c=e.apply(i,r)}function O(e){var r=e-s;return void 0===s||r>=t||r<0||f&&e-l>=i}function w(){var e=b();if(O(e))return g(e);u=setTimeout(w,function(e){var r=t-(e-s);return f?y(r,i-(e-l)):r}(e))}function g(e){return u=void 0,v&&o?m(e):(o=n=void 0,c)}function P(){var e=b(),r=O(e);if(o=arguments,n=this,s=e,r){if(void 0===u)return function(e){return l=e,u=setTimeout(w,t),a?m(e):c}(s);if(f)return u=setTimeout(w,t),m(s)}return void 0===u&&(u=setTimeout(w,t)),c}return t=h(t)||0,d(r)&&(a=!!r.leading,i=(f=\"maxWait\"in r)?p(h(r.maxWait)||0,t):i,v=\"trailing\"in r?!!r.trailing:v),P.cancel=function(){void 0!==u&&clearTimeout(u),l=0,o=s=n=u=void 0},P.flush=function(){return void 0===u?c:g(b())},P}},96:(e,t,r)=>{var o=\"Expected a function\",n=NaN,i=\"[object Symbol]\",c=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,a=parseInt,f=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,p=\"object\"==typeof self&&self&&self.Object===Object&&self,y=f||p||Function(\"return this\")(),b=Object.prototype.toString,d=Math.max,h=Math.min,v=function(){return y.Date.now()};function m(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function O(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&b.call(e)==i}(e))return n;if(m(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(c,\"\");var r=s.test(e);return r||l.test(e)?a(e.slice(2),r?2:8):u.test(e)?n:+e}e.exports=function(e,t,r){var n=!0,i=!0;if(\"function\"!=typeof e)throw new TypeError(o);return m(r)&&(n=\"leading\"in r?!!r.leading:n,i=\"trailing\"in r?!!r.trailing:i),function(e,t,r){var n,i,c,u,s,l,a=0,f=!1,p=!1,y=!0;if(\"function\"!=typeof e)throw new TypeError(o);function b(t){var r=n,o=i;return n=i=void 0,a=t,u=e.apply(o,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||p&&e-a>=c}function g(){var e=v();if(w(e))return P(e);s=setTimeout(g,function(e){var r=t-(e-l);return p?h(r,c-(e-a)):r}(e))}function P(e){return s=void 0,y&&n?b(e):(n=i=void 0,u)}function j(){var e=v(),r=w(e);if(n=arguments,i=this,l=e,r){if(void 0===s)return function(e){return a=e,s=setTimeout(g,t),f?b(e):u}(l);if(p)return s=setTimeout(g,t),b(l)}return void 0===s&&(s=setTimeout(g,t)),u}return t=O(t)||0,m(r)&&(f=!!r.leading,c=(p=\"maxWait\"in r)?d(O(r.maxWait)||0,t):c,y=\"trailing\"in r?!!r.trailing:y),j.cancel=function(){void 0!==s&&clearTimeout(s),a=0,n=l=i=s=void 0},j.flush=function(){return void 0===s?u:P(v())},j}(e,t,{leading:n,maxWait:t,trailing:i})}},703:(e,t,r)=>{\"use strict\";var o=r(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,i,c){if(c!==o){var u=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw u.name=\"Invariant Violation\",u}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};(()=>{\"use strict\";r.r(o),r.d(o,{LazyLoadComponent:()=>Y,LazyLoadImage:()=>ne,trackWindowScroll:()=>D});const e=require(\"react\");var t=r.n(e),n=r(697);function i(){return\"undefined\"!=typeof window&&\"IntersectionObserver\"in window&&\"isIntersecting\"in window.IntersectionObserverEntry.prototype}function c(e){return c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c(e)}function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function s(e,t,r){return(t=a(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:this.props.scrollPosition,t=this.placeholder.getBoundingClientRect(),r=this.placeholder.style,o=parseInt(r.getPropertyValue(\"margin-left\"),10)||0,n=parseInt(r.getPropertyValue(\"margin-top\"),10)||0;return{bottom:e.y+t.bottom+n,left:e.x+t.left+o,right:e.x+t.right+o,top:e.y+t.top+n}}},{key:\"isPlaceholderInViewport\",value:function(){if(\"undefined\"==typeof window||!this.placeholder)return!1;var e=this.props,t=e.scrollPosition,r=e.threshold,o=this.getPlaceholderBoundingBox(t),n=t.y+window.innerHeight,i=t.x,c=t.x+window.innerWidth,u=t.y;return Boolean(u-r<=o.bottom&&n+r>=o.top&&i-r<=o.right&&c+r>=o.left)}},{key:\"updateVisibility\",value:function(){this.isPlaceholderInViewport()&&this.props.onVisible()}},{key:\"render\",value:function(){var e=this,r=this.props,o=r.className,n=r.height,i=r.placeholder,c=r.style,l=r.width;if(i&&\"function\"!=typeof i.type)return t().cloneElement(i,{ref:function(t){return e.placeholder=t}});var a=function(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,T)),n=this.useIntersectionObserver?null:this.state.scrollPosition;return t().createElement(e,S({forwardRef:this.baseComponentRef,scrollPosition:n},o))}}])&&E(o.prototype,n),Object.defineProperty(o,\"prototype\",{writable:!1}),l}(t().Component);return r.propTypes={delayMethod:n.PropTypes.oneOf([\"debounce\",\"throttle\"]),delayTime:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool},r.defaultProps={delayMethod:\"throttle\",delayTime:300,useIntersectionObserver:!0},r};function C(e){return C=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},C(e)}function B(e,t){for(var r=0;r=0&&Number.isFinite(n.y)&&n.y>=0),t}return r=s,(o=[{key:\"componentDidUpdate\",value:function(e,t){t.visible!==this.state.visible&&this.props.afterLoad()}},{key:\"onVisible\",value:function(){this.props.beforeLoad(),this.setState({visible:!0})}},{key:\"render\",value:function(){if(this.state.visible)return this.props.children;var e=this.props,r=e.className,o=e.delayMethod,n=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.width;return this.isScrollTracked||f&&i()?t().createElement(h,{className:r,height:c,onVisible:this.onVisible,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,width:p}):t().createElement(W,{className:r,delayMethod:o,delayTime:n,height:c,onVisible:this.onVisible,placeholder:u,style:l,threshold:a,width:p})}}])&&$(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),s}(t().Component);H.propTypes={afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool},H.defaultProps={afterLoad:function(){return{}},beforeLoad:function(){return{}},useIntersectionObserver:!0,visibleByDefault:!1};const Y=H;function X(e){return X=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},X(e)}var A=[\"afterLoad\",\"beforeLoad\",\"delayMethod\",\"delayTime\",\"effect\",\"placeholder\",\"placeholderSrc\",\"scrollPosition\",\"threshold\",\"useIntersectionObserver\",\"visibleByDefault\",\"wrapperClassName\",\"wrapperProps\"];function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function J(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,A));return t().createElement(\"img\",Q({},r,{onLoad:this.onImageLoad()}))}},{key:\"getLazyLoadImage\",value:function(){var e=this.props,r=e.beforeLoad,o=e.className,n=e.delayMethod,i=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.visibleByDefault,y=e.width;return t().createElement(Y,{beforeLoad:r,className:o,delayMethod:n,delayTime:i,height:c,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,visibleByDefault:p,width:y},this.getImg())}},{key:\"getWrappedLazyLoadImage\",value:function(e){var r=this.props,o=r.effect,n=r.height,i=r.placeholderSrc,c=r.width,u=r.wrapperClassName,s=r.wrapperProps,l=this.state.loaded,a=l?\" lazy-load-image-loaded\":\"\",f=l||!i?{}:{backgroundImage:\"url(\".concat(i,\")\"),backgroundSize:\"100% 100%\"};return t().createElement(\"span\",Q({className:u+\" lazy-load-image-background \"+o+a,style:J(J({},f),{},{color:\"transparent\",display:\"inline-block\",height:n,width:c})},s),e)}},{key:\"render\",value:function(){var e=this.props,t=e.effect,r=e.placeholderSrc,o=e.visibleByDefault,n=e.wrapperClassName,i=e.wrapperProps,c=this.getLazyLoadImage();return(t||r)&&!o||n||i?this.getWrappedLazyLoadImage(c):c}}])&&Z(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);oe.propTypes={onLoad:n.PropTypes.func,afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,delayMethod:n.PropTypes.string,delayTime:n.PropTypes.number,effect:n.PropTypes.string,placeholderSrc:n.PropTypes.string,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool,wrapperClassName:n.PropTypes.string,wrapperProps:n.PropTypes.object},oe.defaultProps={onLoad:function(){},afterLoad:function(){return{}},beforeLoad:function(){return{}},delayMethod:\"throttle\",delayTime:300,effect:\"\",placeholderSrc:null,threshold:100,useIntersectionObserver:!0,visibleByDefault:!1,wrapperClassName:\"\"};const ne=oe})(),module.exports=o})();","/*\nReact-Quill\nhttps://github.com/zenoamaro/react-quill\n*/\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport isEqual from 'lodash/isEqual';\n\nimport Quill, {\n QuillOptionsStatic,\n DeltaStatic,\n RangeStatic,\n BoundsStatic,\n StringMap,\n Sources,\n} from 'quill';\n\n// Merged namespace hack to export types along with default object\n// See: https://github.com/Microsoft/TypeScript/issues/2719\nnamespace ReactQuill {\n export type Value = string | DeltaStatic;\n export type Range = RangeStatic | null;\n\n export interface QuillOptions extends QuillOptionsStatic {\n tabIndex?: number,\n }\n\n export interface ReactQuillProps {\n bounds?: string | HTMLElement,\n children?: React.ReactElement,\n className?: string,\n defaultValue?: Value,\n formats?: string[],\n id?: string,\n modules?: StringMap,\n onChange?(\n value: string,\n delta: DeltaStatic,\n source: Sources,\n editor: UnprivilegedEditor,\n ): void,\n onChangeSelection?(\n selection: Range,\n source: Sources,\n editor: UnprivilegedEditor,\n ): void,\n onFocus?(\n selection: Range,\n source: Sources,\n editor: UnprivilegedEditor,\n ): void,\n onBlur?(\n previousSelection: Range,\n source: Sources,\n editor: UnprivilegedEditor,\n ): void,\n onKeyDown?: React.EventHandler,\n onKeyPress?: React.EventHandler,\n onKeyUp?: React.EventHandler,\n placeholder?: string,\n preserveWhitespace?: boolean,\n readOnly?: boolean,\n scrollingContainer?: string | HTMLElement,\n style?: React.CSSProperties,\n tabIndex?: number,\n theme?: string,\n value?: Value,\n }\n\n export interface UnprivilegedEditor {\n getLength(): number;\n getText(index?: number, length?: number): string;\n getHTML(): string;\n getBounds(index: number, length?: number): BoundsStatic;\n getSelection(focus?: boolean): RangeStatic;\n getContents(index?: number, length?: number): DeltaStatic;\n }\n}\n\n// Re-import everything from namespace into scope for comfort\nimport Value = ReactQuill.Value;\nimport Range = ReactQuill.Range;\nimport QuillOptions = ReactQuill.QuillOptions;\nimport ReactQuillProps = ReactQuill.ReactQuillProps;\nimport UnprivilegedEditor = ReactQuill.UnprivilegedEditor;\n\ninterface ReactQuillState {\n generation: number,\n}\n\nclass ReactQuill extends React.Component {\n\n static displayName = 'React Quill'\n\n /*\n Export Quill to be able to call `register`\n */\n static Quill = Quill;\n\n /*\n Changing one of these props should cause a full re-render and a\n re-instantiation of the Quill editor.\n */\n dirtyProps: (keyof ReactQuillProps)[] = [\n 'modules',\n 'formats',\n 'bounds',\n 'theme',\n 'children',\n ]\n\n /*\n Changing one of these props should cause a regular update. These are mostly\n props that act on the container, rather than the quillized editing area.\n */\n cleanProps: (keyof ReactQuillProps)[] = [\n 'id',\n 'className',\n 'style',\n 'placeholder',\n 'tabIndex',\n 'onChange',\n 'onChangeSelection',\n 'onFocus',\n 'onBlur',\n 'onKeyPress',\n 'onKeyDown',\n 'onKeyUp',\n ]\n\n static defaultProps = {\n theme: 'snow',\n modules: {},\n readOnly: false,\n }\n\n state: ReactQuillState = {\n generation: 0,\n }\n\n /*\n The Quill Editor instance.\n */\n editor?: Quill\n\n /*\n Reference to the element holding the Quill editing area.\n */\n editingArea?: React.ReactInstance | null\n\n /*\n Tracks the internal value of the Quill editor\n */\n value: Value\n\n /*\n Tracks the internal selection of the Quill editor\n */\n selection: Range = null\n\n /*\n Used to compare whether deltas from `onChange` are being used as `value`.\n */\n lastDeltaChangeSet?: DeltaStatic\n\n /*\n Stores the contents of the editor to be restored after regeneration.\n */\n regenerationSnapshot?: {\n delta: DeltaStatic,\n selection: Range,\n }\n\n /*\n A weaker, unprivileged proxy for the editor that does not allow accidentally\n modifying editor state.\n */\n unprivilegedEditor?: UnprivilegedEditor\n\n constructor(props: ReactQuillProps) {\n super(props);\n const value = this.isControlled()? props.value : props.defaultValue;\n this.value = value ?? '';\n }\n\n validateProps(props: ReactQuillProps): void {\n if (React.Children.count(props.children) > 1) throw new Error(\n 'The Quill editing area can only be composed of a single React element.'\n );\n\n if (React.Children.count(props.children)) {\n const child = React.Children.only(props.children);\n if (child?.type === 'textarea') throw new Error(\n 'Quill does not support editing on a